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 _0x5d7726=_0x2fcb;(function(_0x34b13d,_0x3f9b5e){const _0x12306a=_0x2fcb,_0x57c822=_0x34b13d();while(!![]){try{const _0x54c93e=parseInt(_0x12306a(0x2e0))/0x1+parseInt(_0x12306a(0x1cb))/0x2*(parseInt(_0x12306a(0x298))/0x3)+-parseInt(_0x12306a(0x155))/0x4+-parseInt(_0x12306a(0x30d))/0x5*(-parseInt(_0x12306a(0x27e))/0x6)+-parseInt(_0x12306a(0xff))/0x7+parseInt(_0x12306a(0x1c5))/0x8*(parseInt(_0x12306a(0x355))/0x9)+-parseInt(_0x12306a(0x40d))/0xa;if(_0x54c93e===_0x3f9b5e)break;else _0x57c822['push'](_0x57c822['shift']());}catch(_0x4db99a){_0x57c822['push'](_0x57c822['shift']());}}}(_0x5873,0x3f84c),Object[_0x5d7726(0x17e)](exports,Symbol[_0x5d7726(0x10a)],{'value':_0x5d7726(0x316)}));const validatePositiveInteger=(_0x184ff9,_0x266a51)=>{const _0x2512ea=_0x5d7726;if(!Number[_0x2512ea(0x291)](_0x184ff9)||_0x184ff9<=0x0)throw Error(_0x266a51+_0x2512ea(0x1be)+_0x266a51+_0x2512ea(0x2b7));},validateAxis=(_0x4332a9,_0x44bb50)=>{const _0x260597=_0x5d7726;if(validatePositiveInteger(_0x4332a9[_0x260597(0x12c)],_0x44bb50+_0x260597(0x348)),!Number['isFinite'](_0x4332a9[_0x260597(0x141)])||!Number[_0x260597(0x373)](_0x4332a9[_0x260597(0x105)]))throw Error(_0x44bb50+_0x260597(0x2af)+_0x44bb50+_0x260597(0xfd));if(_0x4332a9[_0x260597(0x12c)]===0x1&&_0x4332a9[_0x260597(0x141)]!==_0x4332a9[_0x260597(0x105)])throw Error(_0x44bb50+_0x260597(0x327)+_0x44bb50+_0x260597(0x217));if(_0x4332a9[_0x260597(0x12c)]>0x1&&_0x4332a9['start']===_0x4332a9[_0x260597(0x105)])throw Error(_0x44bb50+'\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20'+_0x44bb50+_0x260597(0x139));},validateNoData=(_0x597d3b,_0x34645b)=>{const _0x1b3bb9=_0x5d7726;if(_0x597d3b!==void 0x0&&!Number[_0x1b3bb9(0x373)](_0x597d3b)&&!Number[_0x1b3bb9(0x3b1)](_0x597d3b))throw Error(_0x34645b+_0x1b3bb9(0x131)+_0x34645b+_0x1b3bb9(0x407));},rangesEqual=(_0x1f3e57,_0x4b95a2)=>_0x1f3e57['xStart']===_0x4b95a2[_0x5d7726(0x37c)]&&_0x1f3e57[_0x5d7726(0x145)]===_0x4b95a2[_0x5d7726(0x145)]&&_0x1f3e57[_0x5d7726(0x123)]===_0x4b95a2[_0x5d7726(0x123)]&&_0x1f3e57[_0x5d7726(0x2a0)]===_0x4b95a2[_0x5d7726(0x2a0)]&&_0x1f3e57[_0x5d7726(0x1c8)]===_0x4b95a2['sourceYStart']&&_0x1f3e57[_0x5d7726(0x1e9)]===_0x4b95a2[_0x5d7726(0x1e9)],validateVolumeMetadata=_0x1bf0bc=>{const _0x7ee4b0=_0x5d7726;if(validateAxis(_0x1bf0bc[_0x7ee4b0(0xf1)],_0x7ee4b0(0x118)),validateAxis(_0x1bf0bc['yAxis'],_0x7ee4b0(0x306)),validateAxis(_0x1bf0bc['zAxis'],_0x7ee4b0(0x2ac)),validatePositiveInteger(_0x1bf0bc[_0x7ee4b0(0x2c6)],_0x7ee4b0(0x150)),validateNoData(_0x1bf0bc['noData'],_0x7ee4b0(0x115)),_0x1bf0bc['valueScale']!==void 0x0&&!Number[_0x7ee4b0(0x373)](_0x1bf0bc['valueScale']))throw Error('Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。');if(_0x1bf0bc['revision']!==void 0x0&&(!Number[_0x7ee4b0(0x291)](_0x1bf0bc['revision'])||_0x1bf0bc['revision']<0x0))throw Error('Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。');},validateVolumeTimeIndex=(_0x2d7307,_0x244a91)=>{const _0x387d6b=_0x5d7726;if(!Number[_0x387d6b(0x291)](_0x244a91)||_0x244a91<0x0||_0x244a91>=_0x2d7307['timeCount'])throw Error('Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20'+_0x244a91+_0x387d6b(0x15d));},validateVolumeChunkRange=(_0x37a6e4,_0x1ce0b2)=>{const _0x443e00=_0x5d7726;let _0x4ec846=[[_0x1ce0b2[_0x443e00(0x37c)],'xStart'],[_0x1ce0b2['xCount'],_0x443e00(0x145)],[_0x1ce0b2[_0x443e00(0x123)],'levelStart'],[_0x1ce0b2['levelCount'],_0x443e00(0x2a0)],[_0x1ce0b2[_0x443e00(0x1c8)],_0x443e00(0x1c8)],[_0x1ce0b2[_0x443e00(0x1e9)],_0x443e00(0x1e9)]];for(let [_0x98b1f2,_0x378e8b]of _0x4ec846)if(!Number['isInteger'](_0x98b1f2)||_0x98b1f2<0x0||_0x378e8b['endsWith'](_0x443e00(0x170))&&_0x98b1f2===0x0)throw Error(_0x443e00(0x106)+_0x378e8b+_0x443e00(0x109)+_0x98b1f2+'.\x20体积分块\x20'+_0x378e8b+_0x443e00(0x35a));if(_0x1ce0b2[_0x443e00(0x37c)]+_0x1ce0b2[_0x443e00(0x145)]>_0x37a6e4['xAxis'][_0x443e00(0x12c)]||_0x1ce0b2[_0x443e00(0x123)]+_0x1ce0b2[_0x443e00(0x2a0)]>_0x37a6e4[_0x443e00(0x3b6)][_0x443e00(0x12c)]||_0x1ce0b2['sourceYStart']+_0x1ce0b2['sourceYCount']>_0x37a6e4[_0x443e00(0x404)]['count'])throw Error(_0x443e00(0xfa));},validateVolumeChunk=(_0x12ff7d,_0x92ba8c,_0x185183,_0x13c49d)=>{const _0x532377=_0x5d7726;if(validateVolumeTimeIndex(_0x12ff7d,_0x92ba8c[_0x532377(0x383)]),validateVolumeChunkRange(_0x12ff7d,_0x92ba8c[_0x532377(0x1d1)]),_0x13c49d!==void 0x0&&_0x92ba8c[_0x532377(0x383)]!==_0x13c49d)throw Error(_0x532377(0x290));if(_0x185183&&!rangesEqual(_0x92ba8c[_0x532377(0x1d1)],_0x185183))throw Error(_0x532377(0xf7));if(_0x92ba8c[_0x532377(0x293)]!==_0x92ba8c[_0x532377(0x1d1)][_0x532377(0x145)]||_0x92ba8c[_0x532377(0x38f)]!==_0x92ba8c['range'][_0x532377(0x2a0)]||_0x92ba8c[_0x532377(0x15e)]!==_0x92ba8c['range'][_0x532377(0x1e9)])throw Error(_0x532377(0x277));let _0x40fc09=_0x92ba8c['width']*_0x92ba8c[_0x532377(0x38f)]*_0x92ba8c[_0x532377(0x15e)];if(!Number['isSafeInteger'](_0x40fc09)||_0x92ba8c[_0x532377(0xf8)][_0x532377(0x1bc)]!==_0x40fc09)throw Error(_0x532377(0x3b8)+_0x40fc09+_0x532377(0x1a6)+_0x92ba8c['values']['length']+_0x532377(0x1dc));},validateVolumeSource=_0x10629f=>{const _0x5f4b8a=_0x5d7726;if(!_0x10629f||typeof _0x10629f['readChunk']!=_0x5f4b8a(0x30b))throw Error(_0x5f4b8a(0x2cb));validateVolumeMetadata(_0x10629f[_0x5f4b8a(0x25f)]);},validateBrickShape=_0x372547=>{const _0x2730d4=_0x5d7726;for(let [_0x332fa3,_0x3c2e36]of[[_0x372547[_0x2730d4(0x293)],'width'],[_0x372547[_0x2730d4(0x38f)],_0x2730d4(0x38f)],[_0x372547[_0x2730d4(0x15e)],_0x2730d4(0x15e)]])if(!Number[_0x2730d4(0x291)](_0x332fa3)||_0x332fa3<=0x0)throw Error('Volume\x20brick\x20'+_0x3c2e36+_0x2730d4(0x3cb)+_0x3c2e36+'\x20必须是正整数。');if(!Number[_0x2730d4(0x291)](_0x372547[_0x2730d4(0x2f4)])||_0x372547[_0x2730d4(0x2f4)]<0x1)throw Error(_0x2730d4(0x2cd));},resolveVolumeBrickShape=(_0x53051f={})=>{const _0x260d1a=_0x5d7726;let _0x5b82c8={'width':_0x53051f[_0x260d1a(0x293)]??0x100,'height':_0x53051f[_0x260d1a(0x38f)]??0x8,'depth':_0x53051f[_0x260d1a(0x15e)]??0x100,'halo':_0x53051f['halo']??0x1};return validateBrickShape(_0x5b82c8),_0x5b82c8;},createVolumeBrickLayout=(_0x12f644,_0x216a8e={})=>{const _0x34d449=_0x5d7726;validateVolumeMetadata(_0x12f644);let _0x3da436=resolveVolumeBrickShape(_0x216a8e),_0x4a6e48=Math[_0x34d449(0x1a9)](_0x12f644['xAxis'][_0x34d449(0x12c)]/_0x3da436['width']),_0xef307b=Math['ceil'](_0x12f644[_0x34d449(0x3b6)][_0x34d449(0x12c)]/_0x3da436['height']),_0x376f22=Math[_0x34d449(0x1a9)](_0x12f644['zAxis'][_0x34d449(0x12c)]/_0x3da436[_0x34d449(0x15e)]);return{'shape':_0x3da436,'countX':_0x4a6e48,'countY':_0xef307b,'countZ':_0x376f22,'brickCount':_0x4a6e48*_0xef307b*_0x376f22};},createVolumeBrickKey=_0x5c12ae=>_0x5c12ae['x']+':'+_0x5c12ae['y']+':'+_0x5c12ae['z'],createVolumeBrickDescriptor=(_0x21991f,_0x5d3240,_0x4fac14)=>{const _0x586269=_0x5d7726;if(!Number[_0x586269(0x291)](_0x4fac14['x'])||!Number[_0x586269(0x291)](_0x4fac14['y'])||!Number[_0x586269(0x291)](_0x4fac14['z'])||_0x4fac14['x']<0x0||_0x4fac14['x']>=_0x5d3240[_0x586269(0x1a4)]||_0x4fac14['y']<0x0||_0x4fac14['y']>=_0x5d3240[_0x586269(0x38a)]||_0x4fac14['z']<0x0||_0x4fac14['z']>=_0x5d3240[_0x586269(0x11e)])throw Error(_0x586269(0x2c5));let _0x2fc8cd=_0x4fac14['x']*_0x5d3240[_0x586269(0x2df)][_0x586269(0x293)],_0x5e6f50=_0x4fac14['y']*_0x5d3240[_0x586269(0x2df)][_0x586269(0x38f)],_0xe3aef2=_0x4fac14['z']*_0x5d3240[_0x586269(0x2df)][_0x586269(0x15e)],_0x5b9113=Math[_0x586269(0x2dd)](_0x5d3240[_0x586269(0x2df)][_0x586269(0x293)],_0x21991f['xAxis'][_0x586269(0x12c)]-_0x2fc8cd),_0x53db0=Math[_0x586269(0x2dd)](_0x5d3240[_0x586269(0x2df)][_0x586269(0x38f)],_0x21991f[_0x586269(0x3b6)][_0x586269(0x12c)]-_0x5e6f50),_0xa10722=Math[_0x586269(0x2dd)](_0x5d3240[_0x586269(0x2df)]['depth'],_0x21991f[_0x586269(0x404)][_0x586269(0x12c)]-_0xe3aef2),_0x50d243=_0x5d3240[_0x586269(0x2df)][_0x586269(0x2f4)],_0x33167b=Math['max'](0x0,_0x2fc8cd-_0x50d243),_0xf8f9b7=Math[_0x586269(0x2e5)](0x0,_0x5e6f50-_0x50d243),_0x4c3213=Math[_0x586269(0x2e5)](0x0,_0xe3aef2-_0x50d243),_0x395916=Math[_0x586269(0x2dd)](_0x21991f[_0x586269(0xf1)][_0x586269(0x12c)],_0x2fc8cd+_0x5b9113+_0x50d243),_0x208506=Math[_0x586269(0x2dd)](_0x21991f[_0x586269(0x3b6)][_0x586269(0x12c)],_0x5e6f50+_0x53db0+_0x50d243),_0x14ef70=Math[_0x586269(0x2dd)](_0x21991f['zAxis'][_0x586269(0x12c)],_0xe3aef2+_0xa10722+_0x50d243),_0x1809d5=_0x5d3240[_0x586269(0x2df)][_0x586269(0x293)]+_0x50d243*0x2,_0x1f4818=_0x5d3240[_0x586269(0x2df)][_0x586269(0x38f)]+_0x50d243*0x2,_0x42eea9=_0x5d3240[_0x586269(0x2df)][_0x586269(0x15e)]+_0x50d243*0x2;return{'key':createVolumeBrickKey(_0x4fac14),'coordinate':_0x4fac14,'coreRange':{'xStart':_0x2fc8cd,'xCount':_0x5b9113,'levelStart':_0x5e6f50,'levelCount':_0x53db0,'sourceYStart':_0xe3aef2,'sourceYCount':_0xa10722},'readRange':{'xStart':_0x33167b,'xCount':_0x395916-_0x33167b,'levelStart':_0xf8f9b7,'levelCount':_0x208506-_0xf8f9b7,'sourceYStart':_0x4c3213,'sourceYCount':_0x14ef70-_0x4c3213},'physicalWidth':_0x1809d5,'physicalHeight':_0x1f4818,'physicalDepth':_0x42eea9,'byteLength':_0x1809d5*_0x1f4818*_0x42eea9*Float32Array[_0x586269(0x176)]};},createVolumeBrickDescriptors=(_0x26de81,_0xd93345)=>{const _0x30d183=_0x5d7726;let _0x35a708=[];for(let _0x45c065=0x0;_0x45c065<_0xd93345['countZ'];_0x45c065+=0x1)for(let _0x53cbfb=0x0;_0x53cbfb<_0xd93345[_0x30d183(0x38a)];_0x53cbfb+=0x1)for(let _0x14ac5e=0x0;_0x14ac5e<_0xd93345[_0x30d183(0x1a4)];_0x14ac5e+=0x1)_0x35a708[_0x30d183(0x10e)](createVolumeBrickDescriptor(_0x26de81,_0xd93345,{'x':_0x14ac5e,'y':_0x53cbfb,'z':_0x45c065}));return _0x35a708;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x3ebad3,_0x2e23d1)=>_0x3ebad3[0x0]*_0x2e23d1[0x0]+_0x3ebad3[0x1]*_0x2e23d1[0x1]+_0x3ebad3[0x2]*_0x2e23d1[0x2],subtractVector3=(_0x39e98f,_0x541a18)=>[_0x39e98f[0x0]-_0x541a18[0x0],_0x39e98f[0x1]-_0x541a18[0x1],_0x39e98f[0x2]-_0x541a18[0x2]],crossVector3=(_0x50420d,_0x39f678)=>[_0x50420d[0x1]*_0x39f678[0x2]-_0x50420d[0x2]*_0x39f678[0x1],_0x50420d[0x2]*_0x39f678[0x0]-_0x50420d[0x0]*_0x39f678[0x2],_0x50420d[0x0]*_0x39f678[0x1]-_0x50420d[0x1]*_0x39f678[0x0]],normalizeVector3=_0x5b6ac6=>{const _0x1cc88b=_0x5d7726;let _0x440676=Math[_0x1cc88b(0x31a)](_0x5b6ac6[0x0],_0x5b6ac6[0x1],_0x5b6ac6[0x2]);if(_0x440676<=EPSILON)throw Error('无法归一化长度为零的三维向量。');return[_0x5b6ac6[0x0]/_0x440676,_0x5b6ac6[0x1]/_0x440676,_0x5b6ac6[0x2]/_0x440676];},createIdentityMatrix=()=>{let _0x3e5477=createMatrix();return _0x3e5477[0x0]=0x1,_0x3e5477[0x5]=0x1,_0x3e5477[0xa]=0x1,_0x3e5477[0xf]=0x1,_0x3e5477;},multiplyMatrices=(_0xf1a18,_0x5ad434)=>{let _0x40c6a1=createMatrix();for(let _0x500682=0x0;_0x500682<0x4;_0x500682+=0x1)for(let _0x39e50e=0x0;_0x39e50e<0x4;_0x39e50e+=0x1){let _0x5f5b11=0x0;for(let _0x5522e5=0x0;_0x5522e5<0x4;_0x5522e5+=0x1)_0x5f5b11+=_0xf1a18[_0x5522e5*0x4+_0x39e50e]*_0x5ad434[_0x500682*0x4+_0x5522e5];_0x40c6a1[_0x500682*0x4+_0x39e50e]=_0x5f5b11;}return _0x40c6a1;},invertMatrix=_0x242572=>{const _0x260840=_0x5d7726;let _0xcd5fb5=Array[_0x260840(0x3c0)]({'length':0x4},(_0x1b1c15,_0x215a04)=>{let _0x2fdc44=new Float64Array(0x8);for(let _0x369732=0x0;_0x369732<0x4;_0x369732+=0x1)_0x2fdc44[_0x369732]=_0x242572[_0x369732*0x4+_0x215a04];return _0x2fdc44[_0x215a04+0x4]=0x1,_0x2fdc44;});for(let _0x58d7c2=0x0;_0x58d7c2<0x4;_0x58d7c2+=0x1){let _0x59c983=_0x58d7c2;for(let _0x699fae=_0x58d7c2+0x1;_0x699fae<0x4;_0x699fae+=0x1)Math[_0x260840(0x206)](_0xcd5fb5[_0x699fae][_0x58d7c2])>Math[_0x260840(0x206)](_0xcd5fb5[_0x59c983][_0x58d7c2])&&(_0x59c983=_0x699fae);if(Math[_0x260840(0x206)](_0xcd5fb5[_0x59c983][_0x58d7c2])<=EPSILON)throw Error(_0x260840(0x3e1));_0x59c983!==_0x58d7c2&&([_0xcd5fb5[_0x58d7c2],_0xcd5fb5[_0x59c983]]=[_0xcd5fb5[_0x59c983],_0xcd5fb5[_0x58d7c2]]);let _0x349feb=_0xcd5fb5[_0x58d7c2][_0x58d7c2];for(let _0x33f9b3=0x0;_0x33f9b3<0x8;_0x33f9b3+=0x1)_0xcd5fb5[_0x58d7c2][_0x33f9b3]/=_0x349feb;for(let _0x235eab=0x0;_0x235eab<0x4;_0x235eab+=0x1){if(_0x235eab===_0x58d7c2)continue;let _0x199ae7=_0xcd5fb5[_0x235eab][_0x58d7c2];for(let _0x247146=0x0;_0x247146<0x8;_0x247146+=0x1)_0xcd5fb5[_0x235eab][_0x247146]-=_0x199ae7*_0xcd5fb5[_0x58d7c2][_0x247146];}}let _0x235f5=createMatrix();for(let _0x2722c2=0x0;_0x2722c2<0x4;_0x2722c2+=0x1)for(let _0x37a077=0x0;_0x37a077<0x4;_0x37a077+=0x1)_0x235f5[_0x37a077*0x4+_0x2722c2]=_0xcd5fb5[_0x2722c2][_0x37a077+0x4];return _0x235f5;},createLookAtMatrix=(_0x5d0713,_0x46bfd9,_0x1e2eac)=>{let _0x4781c9=normalizeVector3(subtractVector3(_0x5d0713,_0x46bfd9)),_0x3251e3=normalizeVector3(crossVector3(_0x1e2eac,_0x4781c9)),_0x3d09be=crossVector3(_0x4781c9,_0x3251e3),_0x2eb102=createIdentityMatrix();return _0x2eb102[0x0]=_0x3251e3[0x0],_0x2eb102[0x1]=_0x3d09be[0x0],_0x2eb102[0x2]=_0x4781c9[0x0],_0x2eb102[0x4]=_0x3251e3[0x1],_0x2eb102[0x5]=_0x3d09be[0x1],_0x2eb102[0x6]=_0x4781c9[0x1],_0x2eb102[0x8]=_0x3251e3[0x2],_0x2eb102[0x9]=_0x3d09be[0x2],_0x2eb102[0xa]=_0x4781c9[0x2],_0x2eb102[0xc]=-dotVector3(_0x3251e3,_0x5d0713),_0x2eb102[0xd]=-dotVector3(_0x3d09be,_0x5d0713),_0x2eb102[0xe]=-dotVector3(_0x4781c9,_0x5d0713),_0x2eb102;},createPerspectiveMatrix=(_0x463cad,_0x54e2e7,_0x53f9eb,_0x6246ea)=>{const _0x4b4a89=_0x5d7726;if(!(_0x463cad>0x0&&_0x463cad<Math['PI']))throw Error(_0x4b4a89(0x1ec));if(!(_0x54e2e7>0x0))throw Error(_0x4b4a89(0x1e6));if(!(_0x53f9eb>0x0&&_0x6246ea>_0x53f9eb))throw Error('相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。');let _0x518b0a=0x1/Math[_0x4b4a89(0x3e7)](_0x463cad/0x2),_0x50c237=createMatrix();return _0x50c237[0x0]=_0x518b0a/_0x54e2e7,_0x50c237[0x5]=_0x518b0a,_0x50c237[0xa]=_0x6246ea/(_0x53f9eb-_0x6246ea),_0x50c237[0xb]=-0x1,_0x50c237[0xe]=_0x53f9eb*_0x6246ea/(_0x53f9eb-_0x6246ea),_0x50c237;},createOrthographicMatrix=(_0xf4e29a,_0x441a5d,_0x37d4bc,_0x5ee48f)=>{const _0x3b275a=_0x5d7726;if(!(_0xf4e29a>0x0&&_0x441a5d>0x0))throw Error(_0x3b275a(0x1e1));if(!(_0x37d4bc>=0x0&&_0x5ee48f>_0x37d4bc))throw Error(_0x3b275a(0x175));let _0x1e7513=_0xf4e29a*_0x441a5d,_0xaf547a=createIdentityMatrix();return _0xaf547a[0x0]=0x2/_0x1e7513,_0xaf547a[0x5]=0x2/_0xf4e29a,_0xaf547a[0xa]=0x1/(_0x37d4bc-_0x5ee48f),_0xaf547a[0xe]=_0x37d4bc/(_0x37d4bc-_0x5ee48f),_0xaf547a;},createScaleMatrix=(_0xbd0d29,_0x3ccaf1,_0x2e1a30)=>{let _0x225027=createIdentityMatrix();return _0x225027[0x0]=_0xbd0d29,_0x225027[0x5]=_0x3ccaf1,_0x225027[0xa]=_0x2e1a30,_0x225027;},composeVolumeModelMatrix=(_0x215183,_0x21164b)=>{const _0x3be10c=_0x5d7726;if(!(_0x21164b>0x0)||!Number[_0x3be10c(0x373)](_0x21164b))throw Error(_0x3be10c(0xf5));let _0x9981e6=createScaleMatrix(0x1,_0x21164b,0x1);return _0x215183?multiplyMatrices(_0x215183,_0x9981e6):_0x9981e6;},transformPoint=(_0x36d2fc,_0x515888,_0x4ad6ac=0x1)=>[_0x36d2fc[0x0]*_0x515888[0x0]+_0x36d2fc[0x4]*_0x515888[0x1]+_0x36d2fc[0x8]*_0x515888[0x2]+_0x36d2fc[0xc]*_0x4ad6ac,_0x36d2fc[0x1]*_0x515888[0x0]+_0x36d2fc[0x5]*_0x515888[0x1]+_0x36d2fc[0x9]*_0x515888[0x2]+_0x36d2fc[0xd]*_0x4ad6ac,_0x36d2fc[0x2]*_0x515888[0x0]+_0x36d2fc[0x6]*_0x515888[0x1]+_0x36d2fc[0xa]*_0x515888[0x2]+_0x36d2fc[0xe]*_0x4ad6ac,_0x36d2fc[0x3]*_0x515888[0x0]+_0x36d2fc[0x7]*_0x515888[0x1]+_0x36d2fc[0xb]*_0x515888[0x2]+_0x36d2fc[0xf]*_0x4ad6ac],projectPointToViewport=(_0x1911c2,_0x1fc2c4,_0x25050a,_0x155928)=>{let _0x2c6c32=transformPoint(_0x1911c2,_0x1fc2c4);if(_0x2c6c32[0x3]<=EPSILON)return null;let _0x35fdac=0x1/_0x2c6c32[0x3];return[(_0x2c6c32[0x0]*_0x35fdac*0.5+0.5)*_0x25050a,(0.5-_0x2c6c32[0x1]*_0x35fdac*0.5)*_0x155928,_0x2c6c32[0x2]*_0x35fdac];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x5d7726(0x3c8),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x9b6c12=>[_0x9b6c12[0x0],_0x9b6c12[0x1],_0x9b6c12[0x2]],cloneProjection=_0x12d140=>(_0x12d140['type'],{..._0x12d140}),cloneState=_0x293d8f=>({'position':cloneVector(_0x293d8f[_0x5d7726(0x3c6)]),'target':cloneVector(_0x293d8f[_0x5d7726(0xef)]),'up':cloneVector(_0x293d8f['up']),'projection':cloneProjection(_0x293d8f[_0x5d7726(0x114)])}),subtractVector=(_0x38d57b,_0x38508b)=>[_0x38d57b[0x0]-_0x38508b[0x0],_0x38d57b[0x1]-_0x38508b[0x1],_0x38d57b[0x2]-_0x38508b[0x2]],addVector=(_0x2ab8a6,_0x447ab6)=>[_0x2ab8a6[0x0]+_0x447ab6[0x0],_0x2ab8a6[0x1]+_0x447ab6[0x1],_0x2ab8a6[0x2]+_0x447ab6[0x2]],scaleVector=(_0x72c564,_0x603267)=>[_0x72c564[0x0]*_0x603267,_0x72c564[0x1]*_0x603267,_0x72c564[0x2]*_0x603267],crossVector=(_0x2d5704,_0x29f46e)=>[_0x2d5704[0x1]*_0x29f46e[0x2]-_0x2d5704[0x2]*_0x29f46e[0x1],_0x2d5704[0x2]*_0x29f46e[0x0]-_0x2d5704[0x0]*_0x29f46e[0x2],_0x2d5704[0x0]*_0x29f46e[0x1]-_0x2d5704[0x1]*_0x29f46e[0x0]],normalizeVector=_0x1cbc65=>{let _0x43e262=Math['hypot'](_0x1cbc65[0x0],_0x1cbc65[0x1],_0x1cbc65[0x2]);return _0x43e262===0x0?[0x0,0x0,0x0]:scaleVector(_0x1cbc65,0x1/_0x43e262);},clamp$1=(_0x35a97f,_0x560b8c,_0x26c448)=>Math[_0x5d7726(0x2dd)](_0x26c448,Math[_0x5d7726(0x2e5)](_0x560b8c,_0x35a97f)),validateProjection=_0x5b7ac8=>{const _0x1066a7=_0x5d7726;if(!(_0x5b7ac8[_0x1066a7(0x16a)]>=0x0&&_0x5b7ac8[_0x1066a7(0x310)]>_0x5b7ac8[_0x1066a7(0x16a)]))throw Error(_0x1066a7(0x175));if(_0x5b7ac8[_0x1066a7(0x103)]===_0x1066a7(0x3c8)&&!(_0x5b7ac8[_0x1066a7(0x16a)]>0x0&&_0x5b7ac8[_0x1066a7(0x3a3)]>0x0&&_0x5b7ac8['fovYDegrees']<0xb4))throw Error(_0x1066a7(0x252));if(_0x5b7ac8[_0x1066a7(0x103)]===_0x1066a7(0x3d8)&&!(_0x5b7ac8[_0x1066a7(0x38f)]>0x0))throw Error(_0x1066a7(0x228));},resolveInitialState=_0x11fda2=>{const _0x51fafa=_0x5d7726;let _0x836adb={'position':_0x11fda2[_0x51fafa(0x39b)]?.[_0x51fafa(0x3c6)]?cloneVector(_0x11fda2[_0x51fafa(0x39b)][_0x51fafa(0x3c6)]):cloneVector(DEFAULT_POSITION),'target':_0x11fda2['state']?.[_0x51fafa(0xef)]?cloneVector(_0x11fda2[_0x51fafa(0x39b)][_0x51fafa(0xef)]):cloneVector(DEFAULT_TARGET),'up':_0x11fda2[_0x51fafa(0x39b)]?.['up']?cloneVector(_0x11fda2['state']['up']):cloneVector(DEFAULT_UP),'projection':_0x11fda2[_0x51fafa(0x39b)]?.[_0x51fafa(0x114)]?cloneProjection(_0x11fda2[_0x51fafa(0x39b)][_0x51fafa(0x114)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x836adb['projection']),_0x836adb;};var VolumeCamera=class{[_0x5d7726(0x360)];[_0x5d7726(0x419)];[_0x5d7726(0x275)];[_0x5d7726(0xea)];[_0x5d7726(0x2ed)];[_0x5d7726(0x28e)];[_0x5d7726(0x167)];['minimumPitch'];[_0x5d7726(0x116)];constructor(_0x3986e1={}){const _0xd3628=_0x5d7726;if(this[_0xd3628(0x360)]=resolveInitialState(_0x3986e1),this[_0xd3628(0x419)]=_0x3986e1[_0xd3628(0x419)]??0x1,this['rotateSpeed']=_0x3986e1['rotateSpeed']??0.005,this[_0xd3628(0xea)]=_0x3986e1[_0xd3628(0xea)]??0x1,this['zoomSpeed']=_0x3986e1['zoomSpeed']??0.0015,this[_0xd3628(0x28e)]=_0x3986e1[_0xd3628(0x28e)]??0.001,this['maximumDistance']=_0x3986e1['maximumDistance']??0x1/0x0,this['minimumPitch']=(_0x3986e1[_0xd3628(0x233)]??-0x59)*DEGREE_TO_RADIAN,this[_0xd3628(0x116)]=(_0x3986e1[_0xd3628(0x218)]??0x59)*DEGREE_TO_RADIAN,!(this[_0xd3628(0x419)]>0x0))throw Error('相机宽高比必须大于\x200。');}get[_0x5d7726(0x39b)](){return cloneState(this['cameraState']);}get[_0x5d7726(0x25c)](){const _0x23b189=_0x5d7726;let _0x341ea=createLookAtMatrix(this[_0x23b189(0x360)][_0x23b189(0x3c6)],this[_0x23b189(0x360)][_0x23b189(0xef)],this[_0x23b189(0x360)]['up']),_0x2127e5=this[_0x23b189(0x285)](),_0x4240b3=multiplyMatrices(_0x2127e5,_0x341ea);return{'view':_0x341ea,'projection':_0x2127e5,'viewProjection':_0x4240b3,'inverseViewProjection':invertMatrix(_0x4240b3)};}[_0x5d7726(0x198)](_0x52b4c0){const _0x4f557f=_0x5d7726;validateProjection(_0x52b4c0['projection']),this[_0x4f557f(0x360)]=cloneState(_0x52b4c0);}[_0x5d7726(0x33a)](_0xd78b6d){const _0x18aa43=_0x5d7726;if(!(_0xd78b6d>0x0)||!Number['isFinite'](_0xd78b6d))throw Error(_0x18aa43(0x408));this[_0x18aa43(0x419)]=_0xd78b6d;}['setProjectionType'](_0x505df2){const _0x910add=_0x5d7726;if(_0x505df2===this[_0x910add(0x360)][_0x910add(0x114)][_0x910add(0x103)])return;let _0x5d45ed=Math[_0x910add(0x31a)](...subtractVector(this[_0x910add(0x360)][_0x910add(0x3c6)],this[_0x910add(0x360)]['target']));if(_0x505df2===_0x910add(0x3d8)){let _0xb11ed1=this['cameraState'][_0x910add(0x114)],_0x52758d=_0xb11ed1[_0x910add(0x103)]==='perspective'?_0xb11ed1['fovYDegrees']*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x910add(0x360)]['projection']={'type':_0x505df2,'height':0x2*_0x5d45ed*Math['tan'](_0x52758d/0x2),'near':_0xb11ed1['near'],'far':_0xb11ed1[_0x910add(0x310)]};return;}let _0x4b9079=this[_0x910add(0x360)][_0x910add(0x114)],_0x4a8483=_0x4b9079['type']===_0x910add(0x3d8)?_0x4b9079[_0x910add(0x38f)]/(0x2*Math[_0x910add(0x3e7)](0x2d*DEGREE_TO_RADIAN/0x2)):_0x5d45ed,_0x44633c=normalizeVector(subtractVector(this['cameraState'][_0x910add(0x3c6)],this[_0x910add(0x360)][_0x910add(0xef)]));this[_0x910add(0x360)]['position']=addVector(this[_0x910add(0x360)][_0x910add(0xef)],scaleVector(_0x44633c,_0x4a8483)),this['cameraState'][_0x910add(0x114)]={'type':_0x505df2,'fovYDegrees':0x2d,'near':_0x4b9079[_0x910add(0x16a)],'far':_0x4b9079[_0x910add(0x310)]};}['orbit'](_0x19c58c,_0x172e61){const _0x11b758=_0x5d7726;let _0x4084bc=subtractVector(this[_0x11b758(0x360)][_0x11b758(0x3c6)],this['cameraState'][_0x11b758(0xef)]),_0x24b1e9=Math[_0x11b758(0x31a)](..._0x4084bc);if(_0x24b1e9===0x0)return;let _0x2178d0=Math[_0x11b758(0x3de)](_0x4084bc[0x0],_0x4084bc[0x2])-_0x19c58c*this[_0x11b758(0x275)],_0x46221b=clamp$1(Math[_0x11b758(0x38e)](_0x4084bc[0x1]/_0x24b1e9)+_0x172e61*this['rotateSpeed'],this[_0x11b758(0x12e)],this['maximumPitch']),_0x2e4a37=Math[_0x11b758(0x374)](_0x46221b)*_0x24b1e9;this['cameraState'][_0x11b758(0x3c6)]=addVector(this[_0x11b758(0x360)][_0x11b758(0xef)],[Math['sin'](_0x2178d0)*_0x2e4a37,Math[_0x11b758(0x112)](_0x46221b)*_0x24b1e9,Math[_0x11b758(0x374)](_0x2178d0)*_0x2e4a37]);}[_0x5d7726(0x251)](_0x270bc5,_0x5a1b43,_0x50c087){const _0x54cf24=_0x5d7726;if(!(_0x50c087>0x0))return;let _0x342e4a=normalizeVector(subtractVector(this[_0x54cf24(0x360)][_0x54cf24(0xef)],this[_0x54cf24(0x360)][_0x54cf24(0x3c6)])),_0x98479f=normalizeVector(crossVector(_0x342e4a,this['cameraState']['up'])),_0x3d6f7a=normalizeVector(crossVector(_0x98479f,_0x342e4a)),_0x5f4c01=Math[_0x54cf24(0x31a)](...subtractVector(this[_0x54cf24(0x360)][_0x54cf24(0x3c6)],this[_0x54cf24(0x360)][_0x54cf24(0xef)])),_0x21227b=(this['cameraState']['projection']['type']==='orthographic'?this['cameraState']['projection']['height']:0x2*_0x5f4c01*Math[_0x54cf24(0x3e7)](this[_0x54cf24(0x360)][_0x54cf24(0x114)][_0x54cf24(0x3a3)]*DEGREE_TO_RADIAN/0x2))/_0x50c087*this[_0x54cf24(0xea)],_0x12453c=addVector(scaleVector(_0x98479f,-_0x270bc5*_0x21227b),scaleVector(_0x3d6f7a,_0x5a1b43*_0x21227b));this[_0x54cf24(0x360)]['position']=addVector(this[_0x54cf24(0x360)]['position'],_0x12453c),this[_0x54cf24(0x360)][_0x54cf24(0xef)]=addVector(this[_0x54cf24(0x360)]['target'],_0x12453c);}[_0x5d7726(0x19f)](_0x51f50b){const _0x404e03=_0x5d7726;let _0x4e1a1c=Math['exp'](_0x51f50b*this[_0x404e03(0x2ed)]);if(this[_0x404e03(0x360)][_0x404e03(0x114)][_0x404e03(0x103)]==='orthographic'){this[_0x404e03(0x360)][_0x404e03(0x114)]={...this[_0x404e03(0x360)][_0x404e03(0x114)],'height':Math[_0x404e03(0x2e5)](this['minimumDistance'],this[_0x404e03(0x360)][_0x404e03(0x114)][_0x404e03(0x38f)]*_0x4e1a1c)};return;}let _0x17e7fe=subtractVector(this['cameraState']['position'],this[_0x404e03(0x360)]['target']),_0x3d8052=clamp$1(Math['hypot'](..._0x17e7fe)*_0x4e1a1c,this[_0x404e03(0x28e)],this[_0x404e03(0x167)]);this[_0x404e03(0x360)][_0x404e03(0x3c6)]=addVector(this[_0x404e03(0x360)][_0x404e03(0xef)],scaleVector(normalizeVector(_0x17e7fe),_0x3d8052));}[_0x5d7726(0x285)](){const _0x51bbea=_0x5d7726;let _0x4a365a=this[_0x51bbea(0x360)][_0x51bbea(0x114)];return _0x4a365a[_0x51bbea(0x103)]==='perspective'?createPerspectiveMatrix(_0x4a365a['fovYDegrees']*DEGREE_TO_RADIAN,this['aspect'],_0x4a365a['near'],_0x4a365a[_0x51bbea(0x310)]):createOrthographicMatrix(_0x4a365a[_0x51bbea(0x38f)],this[_0x51bbea(0x419)],_0x4a365a[_0x51bbea(0x16a)],_0x4a365a[_0x51bbea(0x310)]);}};const WGS84_SEMI_MAJOR_AXIS_METERS=0x615299,WGS84_SEMI_MINOR_AXIS_METERS=WGS84_SEMI_MAJOR_AXIS_METERS*(0x1-0x1/298.257223563),WGS84_FIRST_ECCENTRICITY_SQUARED=0x1-WGS84_SEMI_MINOR_AXIS_METERS**0x2/WGS84_SEMI_MAJOR_AXIS_METERS**0x2,degreesToRadians=_0x51d0cf=>_0x51d0cf*Math['PI']/0xb4,geodeticToEcef=(_0x24ac56,_0x20c787,_0x4899fb)=>{const _0x30c049=_0x5d7726;let _0x24ff25=Math['sin'](_0x20c787),_0x5be4ac=Math[_0x30c049(0x374)](_0x20c787),_0x4bfc97=Math['sin'](_0x24ac56),_0x415b59=Math[_0x30c049(0x374)](_0x24ac56),_0xf22f2b=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x30c049(0x2d4)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x24ff25*_0x24ff25);return[(_0xf22f2b+_0x4899fb)*_0x5be4ac*_0x415b59,(_0xf22f2b+_0x4899fb)*_0x5be4ac*_0x4bfc97,(_0xf22f2b*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x4899fb)*_0x24ff25];},validateAxisSpan=(_0x73b239,_0x19da85,_0xb52fc4)=>{const _0x4b42ae=_0x5d7726;if(!Number['isFinite'](_0x73b239)||!Number[_0x4b42ae(0x373)](_0x19da85)||_0x73b239===_0x19da85)throw Error(_0xb52fc4+_0x4b42ae(0x3e9)+_0xb52fc4+_0x4b42ae(0x203));},createGeographicVolumeLayout=(_0x59b9ce,_0x4f5f13=0x1)=>{const _0x20bfb7=_0x5d7726;let _0x2b2f61=degreesToRadians(_0x59b9ce['xAxis']['start']),_0x2b33d9=degreesToRadians(_0x59b9ce[_0x20bfb7(0xf1)][_0x20bfb7(0x105)]),_0x53d03c=degreesToRadians(_0x59b9ce['zAxis'][_0x20bfb7(0x141)]),_0x545cac=degreesToRadians(_0x59b9ce['zAxis']['end']);validateAxisSpan(_0x2b2f61,_0x2b33d9,_0x20bfb7(0x270)),validateAxisSpan(_0x53d03c,_0x545cac,_0x20bfb7(0x3fe));let _0x5bc1dd=_0x59b9ce[_0x20bfb7(0x3b6)][_0x20bfb7(0x141)],_0x41dea9=_0x59b9ce[_0x20bfb7(0x3b6)]['end'];if(validateAxisSpan(_0x5bc1dd,_0x41dea9,_0x20bfb7(0x1d6)),!(_0x4f5f13>0x0)||!Number[_0x20bfb7(0x373)](_0x4f5f13))throw Error('verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。');let _0x21c899=_0x5bc1dd+(_0x41dea9-_0x5bc1dd)*_0x4f5f13,_0x3c74d7=(_0x2b2f61+_0x2b33d9)/0x2,_0x2126f3=(_0x53d03c+_0x545cac)/0x2,_0x4fb56e=geodeticToEcef(_0x3c74d7,_0x2126f3,0x0),_0x1afccc=Math[_0x20bfb7(0x206)](_0x2b33d9-_0x2b2f61)*WGS84_SEMI_MAJOR_AXIS_METERS*Math[_0x20bfb7(0x2e5)](0.01,Math[_0x20bfb7(0x374)](_0x2126f3)),_0x31bed3=Math['abs'](_0x545cac-_0x53d03c)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x171afd=Math['max'](_0x1afccc,_0x31bed3);if(!(_0x171afd>0x0)||!Number[_0x20bfb7(0x373)](_0x171afd))throw Error(_0x20bfb7(0x2ff));let _0x2e9bc1=[0x1/0x0,0x1/0x0,0x1/0x0],_0x49d4bd=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x1f3f09=0x0;_0x1f3f09<=0x8;_0x1f3f09+=0x1){let _0x6a3ebf=_0x53d03c+(_0x545cac-_0x53d03c)*_0x1f3f09/0x8;for(let _0x4153f3=0x0;_0x4153f3<=0x8;_0x4153f3+=0x1){let _0x2a9511=_0x2b2f61+(_0x2b33d9-_0x2b2f61)*_0x4153f3/0x8;for(let _0x4653a1 of[_0x5bc1dd,_0x21c899]){let _0x4c13c0=geodeticToEcef(_0x2a9511,_0x6a3ebf,_0x4653a1);for(let _0x29bf72=0x0;_0x29bf72<0x3;_0x29bf72+=0x1){let _0x568e99=(_0x4c13c0[_0x29bf72]-_0x4fb56e[_0x29bf72])/_0x171afd;_0x2e9bc1[_0x29bf72]=Math[_0x20bfb7(0x2dd)](_0x2e9bc1[_0x29bf72],_0x568e99),_0x49d4bd[_0x29bf72]=Math['max'](_0x49d4bd[_0x29bf72],_0x568e99);}}}}let _0x32545b=_0x49d4bd[_0x20bfb7(0x3ef)]((_0x3abe26,_0x13ad94)=>_0x3abe26-_0x2e9bc1[_0x13ad94]);if(_0x32545b[_0x20bfb7(0x1ee)](_0x33e06f=>!(_0x33e06f>0x0)||!Number[_0x20bfb7(0x373)](_0x33e06f)))throw Error('Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。');return{'centerEcef':_0x4fb56e,'normalizationMeters':_0x171afd,'proxyModelMatrix':[_0x32545b[0x0],0x0,0x0,0x0,0x0,_0x32545b[0x1],0x0,0x0,0x0,0x0,_0x32545b[0x2],0x0,_0x2e9bc1[0x0],_0x2e9bc1[0x1],_0x2e9bc1[0x2],0x1],'transform':{'mode':_0x20bfb7(0x1a1),'centerEcefScaled':[_0x4fb56e[0x0]/_0x171afd,_0x4fb56e[0x1]/_0x171afd,_0x4fb56e[0x2]/_0x171afd],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x171afd,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x171afd,'longitudeRadians':[_0x2b2f61,_0x2b33d9],'latitudeRadians':[_0x53d03c,_0x545cac],'heightScaled':[_0x5bc1dd/_0x171afd,_0x21c899/_0x171afd]}};},ecefToGeographicVolumeLocal=(_0x2a0064,_0x26c8e0)=>[(_0x2a0064[0x0]-_0x26c8e0[_0x5d7726(0x2d2)][0x0])/_0x26c8e0[_0x5d7726(0x3c1)],(_0x2a0064[0x1]-_0x26c8e0[_0x5d7726(0x2d2)][0x1])/_0x26c8e0[_0x5d7726(0x3c1)],(_0x2a0064[0x2]-_0x26c8e0[_0x5d7726(0x2d2)][0x2])/_0x26c8e0[_0x5d7726(0x3c1)]],isMissingValue=(_0x182918,_0x3d335a)=>Number[_0x5d7726(0x3b1)](_0x182918)||_0x3d335a!==void 0x0&&_0x182918===_0x3d335a,axisValueToNormalized=(_0x5637e0,_0x57e70e)=>_0x5637e0[_0x5d7726(0x141)]===_0x5637e0['end']?0x0:(_0x57e70e-_0x5637e0[_0x5d7726(0x141)])/(_0x5637e0['end']-_0x5637e0[_0x5d7726(0x141)]),validateProfile=_0x450420=>{const _0x4eaae9=_0x5d7726;if(!_0x450420['id'])throw Error(_0x4eaae9(0x104));if(_0x450420[_0x4eaae9(0x39e)]['length']<0x4||_0x450420[_0x4eaae9(0x39e)][_0x4eaae9(0x1bc)]%0x2!=0x0)throw Error(_0x4eaae9(0x409)+_0x450420['id']+_0x4eaae9(0x2f3));if(_0x450420[_0x4eaae9(0x3be)][_0x4eaae9(0x1bc)]<0x2)throw Error(_0x4eaae9(0x409)+_0x450420['id']+_0x4eaae9(0x142));let _0x481d48=_0x450420[_0x4eaae9(0x39e)][_0x4eaae9(0x1bc)]/0x2;if(_0x450420[_0x4eaae9(0xf8)]['length']!==_0x481d48*_0x450420[_0x4eaae9(0x3be)][_0x4eaae9(0x1bc)])throw Error('路线剖面\x20'+_0x450420['id']+_0x4eaae9(0x3ee));if(_0x450420[_0x4eaae9(0x36a)]!==void 0x0&&(!(_0x450420[_0x4eaae9(0x36a)]>=0x0&&_0x450420[_0x4eaae9(0x36a)]<=0x1)||!Number[_0x4eaae9(0x373)](_0x450420[_0x4eaae9(0x36a)])))throw Error(_0x4eaae9(0x409)+_0x450420['id']+_0x4eaae9(0x1e7));for(let _0x5286d5 of _0x450420[_0x4eaae9(0x39e)])if(!Number['isFinite'](_0x5286d5))throw Error('路线剖面\x20'+_0x450420['id']+_0x4eaae9(0xfc));for(let _0x373589 of _0x450420['heights'])if(!Number[_0x4eaae9(0x373)](_0x373589))throw Error('路线剖面\x20'+_0x450420['id']+_0x4eaae9(0x2cc));return _0x481d48;},createPositions=(_0x74f0df,_0x5a0ab5,_0x14fffb)=>{const _0x2961ff=_0x5d7726;let _0x83f05a=new Float32Array(_0x5a0ab5*_0x74f0df[_0x2961ff(0x3be)]['length']*0x3);for(let _0xad1ca0=0x0;_0xad1ca0<_0x74f0df[_0x2961ff(0x3be)][_0x2961ff(0x1bc)];_0xad1ca0+=0x1)for(let _0x330ac8=0x0;_0x330ac8<_0x5a0ab5;_0x330ac8+=0x1){let _0x449529=(_0xad1ca0*_0x5a0ab5+_0x330ac8)*0x3;_0x83f05a[_0x449529]=axisValueToNormalized(_0x14fffb[_0x2961ff(0xf1)],_0x74f0df['path'][_0x330ac8*0x2]),_0x83f05a[_0x449529+0x1]=axisValueToNormalized(_0x14fffb[_0x2961ff(0x3b6)],_0x74f0df[_0x2961ff(0x3be)][_0xad1ca0]),_0x83f05a[_0x449529+0x2]=axisValueToNormalized(_0x14fffb['zAxis'],_0x74f0df[_0x2961ff(0x39e)][_0x330ac8*0x2+0x1]);}return _0x83f05a;},createValues=_0x4d42c1=>{const _0x4c89f3=_0x5d7726;let _0x445a89=new Float32Array(_0x4d42c1[_0x4c89f3(0xf8)][_0x4c89f3(0x1bc)]);for(let _0x54d3cb=0x0;_0x54d3cb<_0x4d42c1[_0x4c89f3(0xf8)]['length'];_0x54d3cb+=0x1){let _0xf53a26=_0x4d42c1[_0x4c89f3(0xf8)][_0x54d3cb];_0x445a89[_0x54d3cb]=isMissingValue(_0xf53a26,_0x4d42c1[_0x4c89f3(0x245)])?NaN:_0xf53a26;}return _0x445a89;},createIndices=(_0xcff1a9,_0x17062a)=>{let _0x14136c=new Uint32Array((_0xcff1a9-0x1)*(_0x17062a-0x1)*0x6),_0x371c10=0x0;for(let _0x12d558=0x0;_0x12d558<_0x17062a-0x1;_0x12d558+=0x1)for(let _0x291ebd=0x0;_0x291ebd<_0xcff1a9-0x1;_0x291ebd+=0x1){let _0x577b5f=_0x12d558*_0xcff1a9+_0x291ebd,_0x517c37=_0x577b5f+0x1,_0x156298=_0x577b5f+_0xcff1a9,_0x2b9b04=_0x156298+0x1;_0x14136c[_0x371c10]=_0x577b5f,_0x14136c[_0x371c10+0x1]=_0x517c37,_0x14136c[_0x371c10+0x2]=_0x156298,_0x14136c[_0x371c10+0x3]=_0x156298,_0x14136c[_0x371c10+0x4]=_0x517c37,_0x14136c[_0x371c10+0x5]=_0x2b9b04,_0x371c10+=0x6;}return _0x14136c;},buildVolumeRouteProfileMesh=(_0x392331,_0x47a1ad)=>{const _0x5a50b2=_0x5d7726;let _0x100c50=validateProfile(_0x392331);return{'id':_0x392331['id'],'positions':createPositions(_0x392331,_0x100c50,_0x47a1ad),'values':createValues(_0x392331),'indices':createIndices(_0x100c50,_0x392331[_0x5a50b2(0x3be)][_0x5a50b2(0x1bc)]),'opacity':_0x392331[_0x5a50b2(0x36a)]??0x1,'depthMode':_0x392331[_0x5a50b2(0x3fa)]??_0x5a50b2(0x312),'revision':_0x392331[_0x5a50b2(0x1a3)]};};var volumeRaymarch_default='struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4u>,\x0a}\x0a\x0astruct\x20FloatValues\x20{\x0a\x20\x20\x20\x20values:\x20array<f32>,\x0a}\x0a\x0astruct\x20Colors\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4f>,\x0a}\x0a\x0astruct\x20VolumeSample\x20{\x0a\x20\x20\x20\x20value:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0astruct\x20RayInterval\x20{\x0a\x20\x20\x20\x20minimum:\x20f32,\x0a\x20\x20\x20\x20maximum:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(0)\x20@binding(1)\x20var\x20sceneDepth:\x20texture_depth_2d;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20transformPoint(matrix:\x20mat4x4f,\x20point:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20let\x20transformed\x20=\x20matrix\x20*\x20vec4f(point,\x201.0);\x0a\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a}\x0a\x0afn\x20reconstructWorldPosition(ndc:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20return\x20transformPoint(scene.inverseViewProjection,\x20ndc);\x0a}\x0a\x0a//\x20地理模式将局部\x20ECEF\x20采样点反算为经纬高归一化坐标;代理盒仅限制射线范围,不决定体积形状。\x0a//\x20Geographic\x20mode\x20converts\x20each\x20local\x20ECEF\x20sample\x20back\x20to\x20normalized\x20longitude,\x20latitude,\x20and\x20altitude;\x20the\x20proxy\x20box\x20only\x20limits\x20the\x20ray\x20interval\x20and\x20does\x20not\x20define\x20the\x20volume\x20shape.\x0afn\x20worldToVolume(worldPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformPoint(scene.inverseModelMatrix,\x20worldPosition);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20worldPosition\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20secondEccentricitySquared\x20=\x20(semiMajor\x20*\x20semiMajor\x20-\x20semiMinor\x20*\x20semiMinor)\x20/\x20(semiMinor\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20horizontal\x20=\x20length(ecef.xy);\x0a\x20\x20\x20\x20let\x20theta\x20=\x20atan2(ecef.z\x20*\x20semiMajor,\x20horizontal\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20thetaSin\x20=\x20sin(theta);\x0a\x20\x20\x20\x20let\x20thetaCos\x20=\x20cos(theta);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(\x0a\x20\x20\x20\x20\x20\x20\x20\x20ecef.z\x20+\x20secondEccentricitySquared\x20*\x20semiMinor\x20*\x20thetaSin\x20*\x20thetaSin\x20*\x20thetaSin,\x0a\x20\x20\x20\x20\x20\x20\x20\x20horizontal\x20-\x20eccentricitySquared\x20*\x20semiMajor\x20*\x20thetaCos\x20*\x20thetaCos\x20*\x20thetaCos\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20height\x20=\x20horizontal\x20/\x20max(0.000001,\x20abs(cos(latitude)))\x20-\x20primeVerticalRadius;\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(ecef.y,\x20ecef.x);\x0a\x20\x20\x20\x20return\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(longitude\x20-\x20scene.geographic1.z)\x20/\x20(scene.geographic1.w\x20-\x20scene.geographic1.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(height\x20-\x20scene.geographic2.z)\x20/\x20(scene.geographic2.w\x20-\x20scene.geographic2.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(latitude\x20-\x20scene.geographic2.x)\x20/\x20(scene.geographic2.y\x20-\x20scene.geographic2.x)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20proxyToVolume(proxyPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20proxyPosition;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20worldToVolume(transformPoint(scene.modelMatrix,\x20proxyPosition));\x0a}\x0a\x0afn\x20isInsideVolume(position:\x20vec3f)\x20->\x20bool\x20{\x0a\x20\x20\x20\x20return\x20all(position\x20>=\x20scene.clipMinimum.xyz)\x20&&\x20all(position\x20<=\x20scene.clipMaximum.xyz);\x0a}\x0a\x0afn\x20intersectAxis(origin:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20if\x20(abs(direction)\x20<\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(origin\x20<\x20minimumValue\x20||\x20origin\x20>\x20maximumValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(-1e20,\x201e20);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20first\x20=\x20(minimumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(maximumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectClipBox(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20intersectAxis(origin.x,\x20direction.x,\x20scene.clipMinimum.x,\x20scene.clipMaximum.x);\x0a\x20\x20\x20\x20let\x20y\x20=\x20intersectAxis(origin.y,\x20direction.y,\x20scene.clipMinimum.y,\x20scene.clipMaximum.y);\x0a\x20\x20\x20\x20let\x20z\x20=\x20intersectAxis(origin.z,\x20direction.z,\x20scene.clipMinimum.z,\x20scene.clipMaximum.z);\x0a\x20\x20\x20\x20let\x20minimumDistance\x20=\x20max(max(x.x,\x20y.x),\x20z.x);\x0a\x20\x20\x20\x20let\x20maximumDistance\x20=\x20min(min(x.y,\x20y.y),\x20z.y);\x0a\x20\x20\x20\x20return\x20RayInterval(max(0.0,\x20minimumDistance),\x20maximumDistance,\x20maximumDistance\x20>=\x20max(0.0,\x20minimumDistance));\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20let\x20x\x20=\x20remainder\x20-\x20y\x20*\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20brickStart\x20=\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20brickStart\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20atlasCoordinate\x20=\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local;\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20atlasCoordinate);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20maximumVoxel);\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(baseVoxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom0\x20=\x20mix(c000.value,\x20c100.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20bottom1\x20=\x20mix(c010.value,\x20c110.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top0\x20=\x20mix(c001.value,\x20c101.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top1\x20=\x20mix(c011.value,\x20c111.value,\x20fraction.x);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(mix(bottom0,\x20bottom1,\x20fraction.y),\x20mix(top0,\x20top1,\x20fraction.y),\x20fraction.z));\x0a}\x0a\x0a//\x20体积分步只读取当前最近体素,避免对最终透明的样本执行八次纹理读取;高精度切面仍使用独立的三线性采样。\x0a//\x20Raymarch\x20steps\x20read\x20the\x20nearest\x20voxel\x20so\x20transparent\x20samples\x20avoid\x20eight\x20texture\x20loads;\x20high-detail\x20slices\x20keep\x20their\x20separate\x20trilinear\x20sampling.\x0afn\x20sampleVolumeNearest(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3i(round(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(voxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20return\x20loadAtlasVoxel(voxel,\x20owningBrick);\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20nextBrickAxisDistance(position:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(direction\x20>\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(maximumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(direction\x20<\x20-0.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(minimumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x201e20;\x0a}\x0a\x0afn\x20getEmptyBrickSkipDistance(position:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(position,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20safeMaximumVoxel\x20=\x20max(maximumVoxel,\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3u(floor(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20brick\x20=\x20min(voxel\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(brick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20!=\x200u\x20&&\x20page.z\x20!=\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x200.0;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20minimumPosition\x20=\x20vec3f(brick\x20*\x20volume.brickInterior.xyz)\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20let\x20maximumPosition\x20=\x20vec3f(min((brick\x20+\x20vec3u(1u))\x20*\x20volume.brickInterior.xyz,\x20maximumVoxel))\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20return\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.x,\x20direction.x,\x20minimumPosition.x,\x20maximumPosition.x),\x0a\x20\x20\x20\x20\x20\x20\x20\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.y,\x20direction.y,\x20minimumPosition.y,\x20maximumPosition.y),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.z,\x20direction.z,\x20minimumPosition.z,\x20maximumPosition.z)\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20getDepthDistance(pixel:\x20vec2i,\x20ndcXY:\x20vec2f,\x20rayOrigin:\x20vec3f,\x20rayDirection:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20depth\x20=\x20textureLoad(sceneDepth,\x20pixel,\x200);\x0a\x0a\x20\x20\x20\x20if\x20(depth\x20>=\x201.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201e20;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20depthWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x20depth));\x0a\x20\x20\x20\x20let\x20depthModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20depthWorld);\x0a\x20\x20\x20\x20return\x20max(0.0,\x20dot(depthModel\x20-\x20rayOrigin,\x20rayDirection));\x0a}\x0a\x0afn\x20raymarchComposite(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20accumulated\x20=\x20vec4f(0.0);\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum\x20&&\x20accumulated.a\x20<\x200.985;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sampleAlpha\x20=\x20sampleOpacity(sample.value);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sampleAlpha\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alpha\x20=\x201.0\x20-\x20exp(-sampleAlpha\x20*\x20scene.render.z\x20*\x20scene.render.w);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20contribution\x20=\x20(1.0\x20-\x20accumulated.a)\x20*\x20alpha;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accumulated\x20=\x20vec4f(accumulated.rgb\x20+\x20color.rgb\x20*\x20contribution,\x20accumulated.a\x20+\x20contribution);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20finalAlpha\x20=\x20accumulated.a\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(accumulated.rgb\x20*\x20scene.render.y\x20*\x20scene.transfer.z,\x20finalAlpha);\x0a}\x0a\x0afn\x20raymarchMaximum(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20maximumValue\x20=\x20-1e30;\x0a\x20\x20\x20\x20var\x20found\x20=\x20false;\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumValue\x20=\x20max(maximumValue,\x20sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20found\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!found)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(0.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(maximumValue);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20sampleOpacity(maximumValue)\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(color.rgb\x20*\x20alpha,\x20alpha);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20@builtin(position)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20f32(i32(vertexIndex\x20&\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20let\x20y\x20=\x20f32(i32(vertexIndex\x20>>\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20return\x20vec4f(x,\x20y,\x200.0,\x201.0);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(@builtin(position)\x20fragmentPosition:\x20vec4f)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20ndcXY\x20=\x20vec2f(fragmentPosition.x\x20/\x20scene.viewport.x\x20*\x202.0\x20-\x201.0,\x201.0\x20-\x20fragmentPosition.y\x20/\x20scene.viewport.y\x20*\x202.0);\x0a\x20\x20\x20\x20let\x20nearWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x200.0));\x0a\x20\x20\x20\x20let\x20farWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x201.0));\x0a\x20\x20\x20\x20let\x20nearModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20nearWorld);\x0a\x20\x20\x20\x20let\x20farModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20farWorld);\x0a\x20\x20\x20\x20let\x20direction\x20=\x20normalize(farModel\x20-\x20nearModel);\x0a\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(!interval.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20getDepthDistance(vec2i(fragmentPosition.xy),\x20ndcXY,\x20nearModel,\x20direction));\x0a\x0a\x20\x20\x20\x20if\x20(interval.maximum\x20<\x20interval.minimum)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(scene.render.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20raymarchMaximum(nearModel,\x20direction,\x20interval);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20raymarchComposite(nearModel,\x20direction,\x20interval);\x0a}\x0a',sceneMesh_default='struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a',volumeSlice_default=_0x5d7726(0x3d2);const validateMetadata=_0x5e15e6=>{const _0x536d6e=_0x5d7726;if([_0x5e15e6[_0x536d6e(0xf1)][_0x536d6e(0x12c)],_0x5e15e6[_0x536d6e(0x3b6)][_0x536d6e(0x12c)],_0x5e15e6[_0x536d6e(0x404)][_0x536d6e(0x12c)],_0x5e15e6[_0x536d6e(0x403)],_0x5e15e6[_0x536d6e(0x1c2)],_0x5e15e6[_0x536d6e(0xf9)]][_0x536d6e(0x1ee)](_0x10ca50=>!Number[_0x536d6e(0x291)](_0x10ca50)||_0x10ca50<=0x0))throw Error(_0x536d6e(0x1a7));if(_0x5e15e6[_0x536d6e(0x2f4)]!==0x1)throw Error('WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。');},getBrickCount=_0x3d8fd6=>[Math['ceil'](_0x3d8fd6[_0x5d7726(0xf1)][_0x5d7726(0x12c)]/_0x3d8fd6['brickWidth']),Math[_0x5d7726(0x1a9)](_0x3d8fd6[_0x5d7726(0x3b6)]['count']/_0x3d8fd6[_0x5d7726(0x1c2)]),Math[_0x5d7726(0x1a9)](_0x3d8fd6[_0x5d7726(0x404)][_0x5d7726(0x12c)]/_0x3d8fd6[_0x5d7726(0xf9)])],getLogicalBrickCoordinate=(_0x236f90,_0x2a3ca9)=>{const _0x57a1c9=_0x5d7726;let _0x221f0=_0x2a3ca9[0x0]*_0x2a3ca9[0x1],_0x2e53c3=Math['floor'](_0x236f90/_0x221f0),_0x16a002=_0x236f90-_0x2e53c3*_0x221f0,_0x3eb953=Math[_0x57a1c9(0x143)](_0x16a002/_0x2a3ca9[0x0]);return[_0x16a002-_0x3eb953*_0x2a3ca9[0x0],_0x3eb953,_0x2e53c3];},analyzeBrickOccupancy=(_0x2c4f56,_0x352da4,_0xaaa325)=>{const _0x4f4bc6=_0x5d7726;let _0xb47a94=_0x352da4['brickWidth']+0x2,_0x41f01f=_0x352da4['brickHeight']+0x2,_0x375dcc=getLogicalBrickCoordinate(_0x2c4f56['logicalIndex'],_0xaaa325),_0xe75cfa=Math['min'](_0x352da4[_0x4f4bc6(0x403)],_0x352da4[_0x4f4bc6(0xf1)][_0x4f4bc6(0x12c)]-_0x375dcc[0x0]*_0x352da4[_0x4f4bc6(0x403)]),_0x1f5965=Math[_0x4f4bc6(0x2dd)](_0x352da4['brickHeight'],_0x352da4['yAxis'][_0x4f4bc6(0x12c)]-_0x375dcc[0x1]*_0x352da4[_0x4f4bc6(0x1c2)]),_0x17f80c=Math[_0x4f4bc6(0x2dd)](_0x352da4[_0x4f4bc6(0xf9)],_0x352da4[_0x4f4bc6(0x404)][_0x4f4bc6(0x12c)]-_0x375dcc[0x2]*_0x352da4[_0x4f4bc6(0xf9)]);for(let _0x16e3a3=0x0;_0x16e3a3<_0x17f80c;_0x16e3a3+=0x1)for(let _0x4dc137=0x0;_0x4dc137<_0x1f5965;_0x4dc137+=0x1){let _0x348342=((_0x16e3a3+0x1)*_0x41f01f+_0x4dc137+0x1)*_0xb47a94+0x1;for(let _0x15e2d9=0x0;_0x15e2d9<_0xe75cfa;_0x15e2d9+=0x1){let _0x123003=_0x2c4f56[_0x4f4bc6(0xf8)][_0x348342+_0x15e2d9];if(_0x123003===_0x123003&&(_0x352da4[_0x4f4bc6(0x245)]===void 0x0||_0x123003!==_0x352da4[_0x4f4bc6(0x245)]))return{'occupied':!0x0,'coreSampleCount':_0xe75cfa*_0x1f5965*_0x17f80c};}}return{'occupied':!0x1,'coreSampleCount':_0xe75cfa*_0x1f5965*_0x17f80c};},findAtlasLayout=(_0x587c68,_0x16f6d3,_0x3afc19,_0x380b43,_0x186216)=>{const _0x115f64=_0x5d7726;if(_0x587c68<=0x0)return null;let _0x3ca924=Math['floor'](_0x186216/_0x16f6d3),_0x52839e=Math['floor'](_0x186216/_0x3afc19),_0x487d54=Math[_0x115f64(0x143)](_0x186216/_0x380b43),_0x3d0aac=null;for(let _0x185dd0=0x1;_0x185dd0<=_0x3ca924;_0x185dd0+=0x1)for(let _0x286c46=0x1;_0x286c46<=_0x52839e;_0x286c46+=0x1){let _0x266ad3=Math[_0x115f64(0x2dd)](_0x487d54,Math['floor'](_0x587c68/(_0x185dd0*_0x286c46))),_0x4a7b66=_0x185dd0*_0x286c46*_0x266ad3;_0x266ad3<=0x0||_0x4a7b66<=(_0x3d0aac?.[_0x115f64(0x18d)]??0x0)||(_0x3d0aac={'slotCountX':_0x185dd0,'slotCountY':_0x286c46,'slotCountZ':_0x266ad3,'slotCount':_0x4a7b66,'textureCount':0x1,'capacity':_0x4a7b66});}return _0x3d0aac;},getSlotCoordinate=(_0x3732b0,_0x231470)=>{const _0x26961b=_0x5d7726;let _0x28fc32=_0x231470['slotCountX']*_0x231470[_0x26961b(0x1b2)],_0x1301aa=Math[_0x26961b(0x143)](_0x3732b0/_0x28fc32),_0x543a2f=_0x3732b0-_0x1301aa*_0x28fc32,_0x20299e=Math[_0x26961b(0x143)](_0x543a2f/_0x231470[_0x26961b(0x210)]);return[_0x543a2f-_0x20299e*_0x231470[_0x26961b(0x210)],_0x20299e,_0x1301aa];},findLeastRecentlyUsed=(_0x2e372b,_0x57bbf6)=>{const _0x4278f8=_0x5d7726;let _0x3aaf19=null;for(let _0x2a3258 of _0x2e372b)_0x2a3258[_0x4278f8(0x1c4)]!==_0x57bbf6&&(!_0x3aaf19||_0x2a3258['lastUsedFrame']<_0x3aaf19[_0x4278f8(0x1c4)])&&(_0x3aaf19=_0x2a3258);return _0x3aaf19;},createPaddedTextureData=(_0x65cbc8,_0x1e4e75,_0x14abdc,_0x411c6c)=>{const _0x5151c2=_0x5d7726;let _0x584fbf=_0x1e4e75*Float32Array[_0x5151c2(0x176)],_0x9bb1a0=Math[_0x5151c2(0x1a9)](_0x584fbf/0x100)*0x100;if(_0x584fbf===_0x9bb1a0)return{'values':_0x65cbc8,'bytesPerRow':_0x9bb1a0};let _0x1fbd14=_0x9bb1a0/Float32Array[_0x5151c2(0x176)],_0x8a44f2=new Float32Array(_0x1fbd14*_0x14abdc*_0x411c6c);for(let _0x284772=0x0;_0x284772<_0x411c6c;_0x284772+=0x1)for(let _0x4fd207=0x0;_0x4fd207<_0x14abdc;_0x4fd207+=0x1){let _0x395e7b=(_0x284772*_0x14abdc+_0x4fd207)*_0x1e4e75,_0x110b41=(_0x284772*_0x14abdc+_0x4fd207)*_0x1fbd14;_0x8a44f2[_0x5151c2(0x1f8)](_0x65cbc8[_0x5151c2(0x21b)](_0x395e7b,_0x395e7b+_0x1e4e75),_0x110b41);}return{'values':_0x8a44f2,'bytesPerRow':_0x9bb1a0};};var WebgpuBrickAtlas=class{[_0x5d7726(0x23d)];[_0x5d7726(0x162)];[_0x5d7726(0x18a)];[_0x5d7726(0x25f)]=null;['layout']=null;[_0x5d7726(0x36b)]=[];['atlasViews']=[];[_0x5d7726(0x2f7)]=null;[_0x5d7726(0x1e4)]=new Uint32Array();[_0x5d7726(0x2f0)]=new Map();[_0x5d7726(0x39d)]=new Map();[_0x5d7726(0x121)]=0x0;constructor(_0x459a9d,_0x1e14f3=0x20000000,_0x30d0cc=_0x1e14f3){const _0x11bc9a=_0x5d7726;if(!Number[_0x11bc9a(0x373)](_0x1e14f3)||!Number[_0x11bc9a(0x373)](_0x30d0cc)||_0x1e14f3<=0x0||_0x30d0cc<=0x0)throw Error(_0x11bc9a(0x303));this[_0x11bc9a(0x23d)]=_0x459a9d,this[_0x11bc9a(0x162)]=Math['min'](_0x1e14f3,_0x30d0cc),this[_0x11bc9a(0x18a)]=_0x30d0cc;}get[_0x5d7726(0x1de)](){const _0x275817=_0x5d7726;if(!this['metadata'])throw Error(_0x275817(0x242));return this['metadata'];}get['atlasLayout'](){const _0x135d33=_0x5d7726;if(!this[_0x135d33(0x26b)])throw Error(_0x135d33(0x3bb));return this[_0x135d33(0x26b)];}get[_0x5d7726(0x199)](){const _0x4be45f=_0x5d7726;return this['residentByLogicalIndex'][_0x4be45f(0x261)];}get['statistics'](){const _0x55d321=_0x5d7726;if(!this[_0x55d321(0x25f)]||!this[_0x55d321(0x26b)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x55d321(0x18a)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x57a3c0=getBrickCount(this[_0x55d321(0x25f)]),_0x587378=_0x57a3c0[0x0]*_0x57a3c0[0x1]*_0x57a3c0[0x2],_0x21f3f0=this['metadata'][_0x55d321(0x403)]+0x2,_0x2d31e7=this['metadata'][_0x55d321(0x1c2)]+0x2,_0x1d91df=this[_0x55d321(0x25f)][_0x55d321(0xf9)]+0x2,_0x49102e=_0x21f3f0*_0x2d31e7*_0x1d91df*this[_0x55d321(0x26b)][_0x55d321(0x138)]*Float32Array[_0x55d321(0x176)],_0x2a084f=_0x587378*0x4*Uint32Array[_0x55d321(0x176)],_0x224a8a=0x0,_0xb4c8a4=0x0;for(let _0x273132 of this[_0x55d321(0x2f0)][_0x55d321(0xf8)]())_0x273132[_0x55d321(0x186)]||(_0xb4c8a4+=0x1,_0x224a8a+=_0x273132[_0x55d321(0x309)]);return{'logicalBrickCount':_0x587378,'atlasCapacity':this['layout']['capacity'],'gpuBytes':_0x49102e+_0x2a084f,'memoryLimitBytes':this[_0x55d321(0x18a)],'budgetLimited':this['layout'][_0x55d321(0x138)]<_0x587378,'skippedSamples':_0x224a8a,'skippedCells':_0xb4c8a4};}['configure'](_0x258e0b){const _0x163b4a=_0x5d7726;validateMetadata(_0x258e0b);let _0x15b4c0=_0x258e0b[_0x163b4a(0x403)]+0x2,_0x3e250e=_0x258e0b[_0x163b4a(0x1c2)]+0x2,_0x367092=_0x258e0b['brickDepth']+0x2,_0x270a69=getBrickCount(_0x258e0b),_0x3aaa64=_0x270a69[0x0]*_0x270a69[0x1]*_0x270a69[0x2],_0x943138=_0x3aaa64*0x4*Uint32Array[_0x163b4a(0x176)],_0x137efd=Math[_0x163b4a(0x2dd)](this[_0x163b4a(0x162)],this[_0x163b4a(0x18a)])-_0x943138;if(_0x137efd<=0x0)throw Error(_0x163b4a(0x1d4));let _0x469064=_0x15b4c0*_0x3e250e*_0x367092*Float32Array[_0x163b4a(0x176)],_0x36f9df=Math[_0x163b4a(0x2dd)](_0x3aaa64,Math[_0x163b4a(0x143)](_0x137efd/_0x469064)),_0x44aa71=Math[_0x163b4a(0x2e5)](0x1,Math[_0x163b4a(0x143)](0x4000000/_0x469064)),_0x431a63=Math[_0x163b4a(0x2dd)](0x8,Math['max'](0x1,Math[_0x163b4a(0x1a9)](_0x36f9df/_0x44aa71))),_0x369da6=findAtlasLayout(Math[_0x163b4a(0x2e5)](0x1,Math[_0x163b4a(0x143)](_0x36f9df/_0x431a63)),_0x15b4c0,_0x3e250e,_0x367092,this[_0x163b4a(0x23d)][_0x163b4a(0x3b9)][_0x163b4a(0x1da)]);if(!_0x369da6)throw Error(_0x163b4a(0x244));let _0x176753={..._0x369da6,'textureCount':_0x431a63,'capacity':_0x369da6['slotCount']*_0x431a63},_0x57f3b5=_0x15b4c0*_0x176753[_0x163b4a(0x210)],_0x4ae614=_0x3e250e*_0x176753[_0x163b4a(0x1b2)],_0x357b40=_0x367092*_0x176753[_0x163b4a(0x181)],_0x2cc2e0=Array[_0x163b4a(0x3c0)]({'length':_0x431a63},(_0x8dc803,_0x13622c)=>this['device'][_0x163b4a(0x346)]({'label':_0x163b4a(0x3fc)+_0x13622c,'size':[_0x57f3b5,_0x4ae614,_0x357b40],'dimension':'3d','format':_0x163b4a(0x3a7),'usage':GPUTextureUsage[_0x163b4a(0x164)]|GPUTextureUsage['COPY_DST']|GPUTextureUsage['STORAGE_BINDING']})),_0x852369=this[_0x163b4a(0x23d)][_0x163b4a(0x387)]({'label':'volume\x20brick\x20page\x20table','size':Math[_0x163b4a(0x2e5)](0x10,_0x943138),'usage':GPUBufferUsage[_0x163b4a(0x231)]|GPUBufferUsage[_0x163b4a(0x1ef)]});this['destroyResources'](),this[_0x163b4a(0x25f)]={..._0x258e0b},this[_0x163b4a(0x26b)]=_0x176753,this['atlasTextures']=_0x2cc2e0,this[_0x163b4a(0x313)]=_0x2cc2e0['map'](_0x3edae6=>_0x3edae6[_0x163b4a(0x15f)]({'dimension':'3d'})),this['pageTableBuffer']=_0x852369,this[_0x163b4a(0x1e4)]=new Uint32Array(_0x3aaa64*0x4),this[_0x163b4a(0x23d)][_0x163b4a(0x3b3)]['writeBuffer'](_0x852369,0x0,this[_0x163b4a(0x1e4)]);for(let _0x78616f of _0x2cc2e0)this[_0x163b4a(0x286)](_0x78616f,_0x57f3b5,_0x4ae614,_0x357b40);this['generation']+=0x1;}[_0x5d7726(0x362)](_0x5c915a,_0xd6a255){const _0x3d2fad=_0x5d7726;let _0x2f236d=this[_0x3d2fad(0x1de)],_0x32d667=this[_0x3d2fad(0x209)],_0x3f4851=getBrickCount(_0x2f236d),_0x3b02d8=_0x3f4851[0x0]*_0x3f4851[0x1]*_0x3f4851[0x2];if(!Number[_0x3d2fad(0x291)](_0x5c915a[_0x3d2fad(0x351)])||_0x5c915a[_0x3d2fad(0x351)]<0x0||_0x5c915a[_0x3d2fad(0x351)]>=_0x3b02d8)throw Error('Invalid\x20logical\x20volume\x20brick\x20index:\x20'+_0x5c915a[_0x3d2fad(0x351)]+_0x3d2fad(0x14d));let _0x2e0860=_0x2f236d[_0x3d2fad(0x403)]+0x2,_0x39c7fe=_0x2f236d[_0x3d2fad(0x1c2)]+0x2,_0x933a27=_0x2f236d['brickDepth']+0x2,_0x29cbb3=_0x2e0860*_0x39c7fe*_0x933a27;if(_0x5c915a[_0x3d2fad(0xf8)]['length']!==_0x29cbb3)throw Error(_0x3d2fad(0x2bd)+_0x5c915a[_0x3d2fad(0x351)]+_0x3d2fad(0x15c)+_0x29cbb3+_0x3d2fad(0x1a6)+_0x5c915a[_0x3d2fad(0xf8)][_0x3d2fad(0x1bc)]+_0x3d2fad(0x177));let _0x467048=this[_0x3d2fad(0x2f0)][_0x3d2fad(0x248)](_0x5c915a[_0x3d2fad(0x351)])??this['acquireSlot'](_0x5c915a[_0x3d2fad(0x351)],_0xd6a255),_0x343b19=analyzeBrickOccupancy(_0x5c915a,_0x2f236d,_0x3f4851),_0x21f7f6=Math['floor'](_0x467048[_0x3d2fad(0x1cc)]/_0x32d667[_0x3d2fad(0x18d)]),_0x6719c3=getSlotCoordinate(_0x467048[_0x3d2fad(0x1cc)]%_0x32d667[_0x3d2fad(0x18d)],_0x32d667),_0x315b81=createPaddedTextureData(new Float32Array(_0x5c915a[_0x3d2fad(0xf8)]),_0x2e0860,_0x39c7fe,_0x933a27);return _0x467048[_0x3d2fad(0x1c4)]=_0xd6a255,_0x467048[_0x3d2fad(0x121)]=this['generation'],_0x467048[_0x3d2fad(0x186)]=_0x343b19[_0x3d2fad(0x186)],_0x467048[_0x3d2fad(0x309)]=_0x343b19['coreSampleCount'],this[_0x3d2fad(0x36f)](_0x467048),{'values':_0x315b81[_0x3d2fad(0xf8)],'bytesPerRow':_0x315b81[_0x3d2fad(0x2c8)],'rowsPerImage':_0x39c7fe,'origin':{'x':_0x6719c3[0x0]*_0x2e0860,'y':_0x6719c3[0x1]*_0x39c7fe,'z':_0x6719c3[0x2]*_0x933a27},'extent':[_0x2e0860,_0x39c7fe,_0x933a27],'atlasIndex':_0x21f7f6};}[_0x5d7726(0x266)](_0x2d4bc5,_0x199cf2,_0x24d398,_0x4cd773){const _0x4a0fc8=_0x5d7726;_0x2d4bc5[_0x4a0fc8(0x1e8)]({'buffer':_0x199cf2,'offset':_0x24d398,'bytesPerRow':_0x4cd773[_0x4a0fc8(0x2c8)],'rowsPerImage':_0x4cd773[_0x4a0fc8(0x25d)]},{'texture':this[_0x4a0fc8(0x132)](_0x4cd773[_0x4a0fc8(0x154)]),'origin':_0x4cd773[_0x4a0fc8(0x2d3)]},_0x4cd773[_0x4a0fc8(0x207)]);}['touch'](_0x1f2e93,_0x165536){const _0x2a3262=_0x5d7726;for(let _0x14f425 of _0x1f2e93){let _0x17db03=this[_0x2a3262(0x2f0)][_0x2a3262(0x248)](_0x14f425);_0x17db03&&(_0x17db03[_0x2a3262(0x1c4)]=_0x165536);}}[_0x5d7726(0x13c)](_0x2e404f,_0x1b2118){const _0x5ae3ca=_0x5d7726;if(this['atlasViews'][_0x5ae3ca(0x1bc)]===0x0||!this['pageTableBuffer'])throw Error(_0x5ae3ca(0x208));return this[_0x5ae3ca(0x23d)][_0x5ae3ca(0x13c)]({'label':_0x5ae3ca(0x35f),'layout':_0x2e404f,'entries':[...Array[_0x5ae3ca(0x3c0)]({'length':0x8},(_0x4e50ec,_0x1caf05)=>({'binding':_0x1caf05,'resource':this[_0x5ae3ca(0x313)][_0x1caf05]??this['atlasViews'][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0x5ae3ca(0x2f7)]}},{'binding':0x9,'resource':{'buffer':_0x1b2118}}]});}['destroy'](){const _0x987b1d=_0x5d7726;this['destroyResources'](),this[_0x987b1d(0x25f)]=null,this['layout']=null,this[_0x987b1d(0x1e4)]=new Uint32Array();}[_0x5d7726(0x192)](_0x49bae2,_0x39a5f7){const _0x26b4ca=_0x5d7726;let _0x508eb9=this[_0x26b4ca(0x209)],_0x3fb064=this[_0x26b4ca(0x39d)][_0x26b4ca(0x261)];if(_0x3fb064>=_0x508eb9[_0x26b4ca(0x138)]){let _0x583086=findLeastRecentlyUsed(this['residentBySlotIndex'][_0x26b4ca(0xf8)](),_0x39a5f7);if(!_0x583086)throw Error('WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。');_0x3fb064=_0x583086[_0x26b4ca(0x1cc)],this['clearPageEntry'](_0x583086[_0x26b4ca(0x351)]),this[_0x26b4ca(0x2f0)][_0x26b4ca(0x370)](_0x583086[_0x26b4ca(0x351)]),this[_0x26b4ca(0x39d)][_0x26b4ca(0x370)](_0x3fb064);}let _0x227889={'logicalIndex':_0x49bae2,'slotIndex':_0x3fb064,'lastUsedFrame':_0x39a5f7,'generation':this['generation'],'occupied':!0x1,'skippedSampleCount':0x0};return this['residentByLogicalIndex'][_0x26b4ca(0x1f8)](_0x49bae2,_0x227889),this['residentBySlotIndex'][_0x26b4ca(0x1f8)](_0x3fb064,_0x227889),_0x227889;}[_0x5d7726(0x36f)](_0x14c734){const _0x4d1213=_0x5d7726;let _0xf71115=_0x14c734[_0x4d1213(0x351)]*0x4;this['pageTableValues'][_0xf71115]=_0x14c734[_0x4d1213(0x1cc)]%this[_0x4d1213(0x209)][_0x4d1213(0x18d)]+0x1,this[_0x4d1213(0x1e4)][_0xf71115+0x1]=_0x14c734[_0x4d1213(0x121)],this[_0x4d1213(0x1e4)][_0xf71115+0x2]=+!!_0x14c734[_0x4d1213(0x186)],this[_0x4d1213(0x1e4)][_0xf71115+0x3]=Math['floor'](_0x14c734[_0x4d1213(0x1cc)]/this[_0x4d1213(0x209)][_0x4d1213(0x18d)]),this[_0x4d1213(0x23d)]['queue']['writeBuffer'](this[_0x4d1213(0x160)](),_0xf71115*Uint32Array[_0x4d1213(0x176)],this['pageTableValues'],_0xf71115,0x4);}[_0x5d7726(0x23a)](_0x5cd442){const _0x442451=_0x5d7726;let _0x208c5b=_0x5cd442*0x4;this[_0x442451(0x1e4)][_0x442451(0x22b)](0x0,_0x208c5b,_0x208c5b+0x4),this[_0x442451(0x23d)][_0x442451(0x3b3)][_0x442451(0x2ef)](this[_0x442451(0x160)](),_0x208c5b*Uint32Array[_0x442451(0x176)],this[_0x442451(0x1e4)],_0x208c5b,0x4);}['getAtlasTexture'](_0x1b790f){const _0x57c587=_0x5d7726;let _0x36a5f3=this[_0x57c587(0x36b)][_0x1b790f];if(!_0x36a5f3)throw Error(_0x57c587(0x26e));return _0x36a5f3;}[_0x5d7726(0x286)](_0x5ef88c,_0xfe6b43,_0x15e36c,_0x2d0c57){const _0x5f1cdb=_0x5d7726;let _0x4d79e3=this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x101)]({'label':_0x5f1cdb(0x2c9),'code':_0x5f1cdb(0x325)}),_0x22e20f=this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x3e6)]({'label':_0x5f1cdb(0x343),'layout':_0x5f1cdb(0x28f),'compute':{'module':_0x4d79e3,'entryPoint':_0x5f1cdb(0x18f)}}),_0x4f09ff=this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x13c)]({'label':'volume\x20atlas\x20clear\x20bind\x20group','layout':_0x22e20f[_0x5f1cdb(0x1f9)](0x0),'entries':[{'binding':0x0,'resource':_0x5ef88c[_0x5f1cdb(0x15f)]({'dimension':'3d'})}]}),_0x362042=this['device']['createCommandEncoder']({'label':_0x5f1cdb(0x39a)}),_0xe020c3=_0x362042[_0x5f1cdb(0x2bb)]({'label':_0x5f1cdb(0x2a7)});_0xe020c3[_0x5f1cdb(0x35e)](_0x22e20f),_0xe020c3['setBindGroup'](0x0,_0x4f09ff),_0xe020c3[_0x5f1cdb(0x230)](Math[_0x5f1cdb(0x1a9)](_0xfe6b43/0x4),Math['ceil'](_0x15e36c/0x4),Math[_0x5f1cdb(0x1a9)](_0x2d0c57/0x4)),_0xe020c3[_0x5f1cdb(0x105)](),this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x3b3)][_0x5f1cdb(0x2e9)]([_0x362042[_0x5f1cdb(0x366)]()]);}['getPageTableBuffer'](){const _0x3f903a=_0x5d7726;if(!this[_0x3f903a(0x2f7)])throw Error(_0x3f903a(0x184));return this[_0x3f903a(0x2f7)];}[_0x5d7726(0x33c)](){const _0x2739fe=_0x5d7726;for(let _0x31be4a of this[_0x2739fe(0x36b)])_0x31be4a[_0x2739fe(0x416)]();this[_0x2739fe(0x2f7)]?.[_0x2739fe(0x416)](),this[_0x2739fe(0x36b)]=[],this[_0x2739fe(0x313)]=[],this[_0x2739fe(0x2f7)]=null,this[_0x2739fe(0x2f0)][_0x2739fe(0x1ad)](),this[_0x2739fe(0x39d)][_0x2739fe(0x1ad)]();}},WebgpuSceneAttachments=class{[_0x5d7726(0x23d)];[_0x5d7726(0x257)]=null;[_0x5d7726(0x40a)]=null;['width']=0x0;[_0x5d7726(0x38f)]=0x0;constructor(_0x8786da){const _0x4d93d9=_0x5d7726;this[_0x4d93d9(0x23d)]=_0x8786da;}get[_0x5d7726(0x24e)](){const _0x4f5b78=_0x5d7726;if(!this['depthView'])throw Error(_0x4f5b78(0x107));return this[_0x4f5b78(0x40a)];}[_0x5d7726(0xfe)](_0x4a17bd,_0x23bcc9){const _0xad8faf=_0x5d7726;if(this[_0xad8faf(0x293)]===_0x4a17bd&&this[_0xad8faf(0x38f)]===_0x23bcc9)return;let _0x15b8cc=this[_0xad8faf(0x23d)][_0xad8faf(0x346)]({'label':'volume\x20scene\x20depth','size':[_0x4a17bd,_0x23bcc9],'format':_0xad8faf(0x359),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage['TEXTURE_BINDING']}),_0x214e5e=this[_0xad8faf(0x257)];this[_0xad8faf(0x257)]=_0x15b8cc,this[_0xad8faf(0x40a)]=_0x15b8cc['createView'](),this['width']=_0x4a17bd,this[_0xad8faf(0x38f)]=_0x23bcc9,_0x214e5e?.[_0xad8faf(0x416)]();}[_0x5d7726(0x416)](){const _0x293495=_0x5d7726;this[_0x293495(0x257)]?.['destroy'](),this[_0x293495(0x257)]=null,this['depthView']=null,this[_0x293495(0x293)]=0x0,this[_0x293495(0x38f)]=0x0;}},WebgpuSceneMeshResources=class{[_0x5d7726(0x23d)];[_0x5d7726(0x347)]=[];constructor(_0x46d353){this['device']=_0x46d353;}get['count'](){const _0x58cfb2=_0x5d7726;return this[_0x58cfb2(0x347)]['length'];}[_0x5d7726(0x144)](_0x4ecfc9){const _0x14f9d7=_0x5d7726;let _0x4daa71=[];try{for(let _0x537fde of _0x4ecfc9)_0x4daa71[_0x14f9d7(0x10e)](this[_0x14f9d7(0x40c)](_0x537fde));}catch(_0x1366c4){for(let _0x5a7037 of _0x4daa71)_0x5a7037['buffer'][_0x14f9d7(0x416)]();throw _0x1366c4;}this[_0x14f9d7(0x33c)](),this[_0x14f9d7(0x347)]=_0x4daa71;}['draw'](_0x19de47,_0x1b0ab9,_0x4c83fc){const _0xdded40=_0x5d7726;for(let _0x8f3612 of this['resources'])_0x8f3612[_0xdded40(0x23f)]!==_0x1b0ab9||_0x8f3612[_0xdded40(0x3fa)]!==_0x4c83fc||(_0x19de47[_0xdded40(0x134)](0x0,_0x8f3612[_0xdded40(0x39c)]),_0x19de47[_0xdded40(0x406)](_0x8f3612[_0xdded40(0x287)]));}[_0x5d7726(0x416)](){const _0x471dd6=_0x5d7726;this[_0x471dd6(0x33c)]();}[_0x5d7726(0x40c)](_0x524b1d){const _0x2af6b2=_0x5d7726;if(_0x524b1d['vertices']['length']===0x0||_0x524b1d[_0x2af6b2(0x194)][_0x2af6b2(0x1bc)]%0x7!=0x0)throw Error(_0x2af6b2(0x3a0)+_0x524b1d['id']+'\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。');let _0x3f4256=new Float32Array(_0x524b1d[_0x2af6b2(0x194)]),_0x44f7f5=this[_0x2af6b2(0x23d)][_0x2af6b2(0x387)]({'label':_0x2af6b2(0x102)+_0x524b1d['id'],'size':_0x3f4256[_0x2af6b2(0x20b)],'usage':GPUBufferUsage[_0x2af6b2(0x393)]|GPUBufferUsage['COPY_DST']});return this[_0x2af6b2(0x23d)][_0x2af6b2(0x3b3)][_0x2af6b2(0x2ef)](_0x44f7f5,0x0,_0x3f4256),{'id':_0x524b1d['id'],'topology':_0x524b1d[_0x2af6b2(0x23f)],'depthMode':_0x524b1d[_0x2af6b2(0x3fa)],'buffer':_0x44f7f5,'vertexCount':_0x524b1d[_0x2af6b2(0x194)][_0x2af6b2(0x1bc)]/0x7};}[_0x5d7726(0x33c)](){const _0x4ce3a2=_0x5d7726;for(let _0x4a47b8 of this[_0x4ce3a2(0x347)])_0x4a47b8[_0x4ce3a2(0x39c)][_0x4ce3a2(0x416)]();this[_0x4ce3a2(0x347)]=[];}},WebgpuSliceResources=class{[_0x5d7726(0x23d)];['layout'];[_0x5d7726(0x347)]=[];[_0x5d7726(0x166)]=0x0;['resourceRebuildCount']=0x0;constructor(_0x18acd3,_0x36194c){const _0x14e6e9=_0x5d7726;this[_0x14e6e9(0x23d)]=_0x18acd3,this[_0x14e6e9(0x26b)]=_0x36194c;}get[_0x5d7726(0x12c)](){const _0x4c5c30=_0x5d7726;return this[_0x4c5c30(0x347)][_0x4c5c30(0x1bc)];}get[_0x5d7726(0x3ec)](){const _0x560641=_0x5d7726;return{'uniformUpdateCount':this[_0x560641(0x166)],'resourceRebuildCount':this[_0x560641(0x3d4)]};}[_0x5d7726(0x144)](_0x478cf1){const _0x34c88f=_0x5d7726;let _0x5a437a=new Map(this[_0x34c88f(0x347)][_0x34c88f(0x3ef)](_0x1584c8=>[_0x1584c8['id'],_0x1584c8])),_0x1e3481=[],_0x206136=new Set();try{for(let _0x3d1144 of _0x478cf1){if(!_0x3d1144[_0x34c88f(0x260)])continue;if(_0x206136[_0x34c88f(0x2de)](_0x3d1144['id']))throw Error(_0x34c88f(0x3dd)+_0x3d1144['id']+_0x34c88f(0x119));_0x206136[_0x34c88f(0x2e7)](_0x3d1144['id']);let _0x4112f2=this['createValues'](_0x3d1144),_0x32e295=_0x5a437a[_0x34c88f(0x248)](_0x3d1144['id']);if(!_0x32e295){_0x1e3481['push'](this[_0x34c88f(0x40c)](_0x3d1144,_0x4112f2));continue;}_0x5a437a[_0x34c88f(0x370)](_0x3d1144['id']),_0x32e295[_0x34c88f(0x3fa)]=_0x3d1144['depthMode'],this['valuesEqual'](_0x32e295[_0x34c88f(0xf8)],_0x4112f2)||(this[_0x34c88f(0x23d)][_0x34c88f(0x3b3)][_0x34c88f(0x2ef)](_0x32e295[_0x34c88f(0x39c)],0x0,_0x4112f2),_0x32e295[_0x34c88f(0xf8)]=_0x4112f2,this[_0x34c88f(0x166)]+=0x1),_0x1e3481[_0x34c88f(0x10e)](_0x32e295);}}catch(_0x47afae){for(let _0xee8d4 of _0x1e3481)this[_0x34c88f(0x347)][_0x34c88f(0x128)](_0xee8d4)||_0xee8d4[_0x34c88f(0x39c)]['destroy']();throw _0x47afae;}for(let _0x4a56e0 of _0x5a437a['values']())_0x4a56e0[_0x34c88f(0x39c)][_0x34c88f(0x416)]();this['resources']=_0x1e3481;}['draw'](_0x3506c7,_0x19dd63,_0x453c61){const _0x111ebd=_0x5d7726;_0x3506c7['setPipeline'](_0x19dd63);for(let _0x562cf0 of this[_0x111ebd(0x347)])_0x562cf0['depthMode']===_0x453c61&&(_0x3506c7[_0x111ebd(0x3a5)](0x3,_0x562cf0[_0x111ebd(0x3e3)]),_0x3506c7[_0x111ebd(0x406)](0x1800));}['destroy'](){const _0x5bd44f=_0x5d7726;this[_0x5bd44f(0x33c)]();}[_0x5d7726(0x1c9)](_0x30e11b){const _0x7f8e66=_0x5d7726;if(!Number[_0x7f8e66(0x373)](_0x30e11b[_0x7f8e66(0x3c6)])||_0x30e11b['position']<0x0||_0x30e11b[_0x7f8e66(0x3c6)]>0x1)throw Error(_0x7f8e66(0x1c1)+_0x30e11b['id']+'\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。');let _0x278342=_0x30e11b['axis']==='x'?0x0:_0x30e11b[_0x7f8e66(0x24c)]==='y'?0x1:0x2,_0x28b331=_0x30e11b['plateColor']??[0x0,0x0,0x0,0x0];if(_0x28b331['some'](_0x179189=>!Number[_0x7f8e66(0x373)](_0x179189)||_0x179189<0x0||_0x179189>0x1))throw Error(_0x7f8e66(0x1c1)+_0x30e11b['id']+_0x7f8e66(0x235));return new Float32Array([_0x278342,_0x30e11b[_0x7f8e66(0x3c6)],_0x30e11b[_0x7f8e66(0x36a)]??0x1,0x0,..._0x28b331]);}['createResource'](_0x4cfc54,_0x560271){const _0x3612d5=_0x5d7726;let _0xf57cff=this[_0x3612d5(0x23d)][_0x3612d5(0x387)]({'label':_0x3612d5(0x305)+_0x4cfc54['id'],'size':0x20,'usage':GPUBufferUsage[_0x3612d5(0x1bb)]|GPUBufferUsage[_0x3612d5(0x1ef)]});this['device'][_0x3612d5(0x3b3)][_0x3612d5(0x2ef)](_0xf57cff,0x0,_0x560271);let _0x4b39af=this[_0x3612d5(0x23d)][_0x3612d5(0x13c)]({'layout':this[_0x3612d5(0x26b)],'entries':[{'binding':0x0,'resource':{'buffer':_0xf57cff}}]});return this[_0x3612d5(0x3d4)]+=0x1,{'id':_0x4cfc54['id'],'depthMode':_0x4cfc54[_0x3612d5(0x3fa)],'buffer':_0xf57cff,'bindGroup':_0x4b39af,'values':_0x560271};}[_0x5d7726(0x3d1)](_0x20549c,_0x38ee8){const _0x383683=_0x5d7726;for(let _0x510918=0x0;_0x510918<_0x20549c[_0x383683(0x1bc)];_0x510918+=0x1)if(_0x20549c[_0x510918]!==_0x38ee8[_0x510918])return!0x1;return!0x0;}['destroyResources'](){const _0x5d1ad0=_0x5d7726;for(let _0x302a3c of this[_0x5d1ad0(0x347)])_0x302a3c['buffer'][_0x5d1ad0(0x416)]();this[_0x5d1ad0(0x347)]=[];}};const createStorageBuffer=(_0x542d1b,_0x37978f,_0x41d2a2)=>{const _0x4ec713=_0x5d7726;let _0x5d3fcd=_0x542d1b['createBuffer']({'label':_0x41d2a2,'size':Math[_0x4ec713(0x2e5)](0x4,_0x37978f['byteLength']),'usage':GPUBufferUsage[_0x4ec713(0x231)]|GPUBufferUsage[_0x4ec713(0x1ef)]});return _0x37978f['byteLength']>0x0&&_0x542d1b[_0x4ec713(0x3b3)][_0x4ec713(0x2ef)](_0x5d3fcd,0x0,_0x37978f),_0x5d3fcd;},validateStops$1=(_0x468daf,_0x3703f0)=>{const _0x4f4b80=_0x5d7726;if(_0x468daf[_0x4f4b80(0x1bc)]===0x0||_0x3703f0[_0x4f4b80(0x1bc)]===0x0)throw Error(_0x4f4b80(0x221));for(let _0xc137ff=0x1;_0xc137ff<_0x468daf[_0x4f4b80(0x1bc)];_0xc137ff+=0x1)if(_0x468daf[_0xc137ff][_0x4f4b80(0x1c7)]<_0x468daf[_0xc137ff-0x1][_0x4f4b80(0x1c7)])throw Error(_0x4f4b80(0x292));for(let _0x49e140=0x0;_0x49e140<_0x3703f0[_0x4f4b80(0x1bc)];_0x49e140+=0x1){if(_0x3703f0[_0x49e140][_0x4f4b80(0x36a)]<0x0||_0x3703f0[_0x49e140][_0x4f4b80(0x36a)]>0x1)throw Error(_0x4f4b80(0x14b));if(_0x49e140>0x0&&_0x3703f0[_0x49e140][_0x4f4b80(0x1c7)]<_0x3703f0[_0x49e140-0x1][_0x4f4b80(0x1c7)])throw Error(_0x4f4b80(0x2d8));}};var WebgpuTransferResources=class{['device'];[_0x5d7726(0x11c)]=null;[_0x5d7726(0x1e3)]=null;[_0x5d7726(0x1fe)]=null;[_0x5d7726(0x16e)]=null;[_0x5d7726(0x3d7)]=0x0;[_0x5d7726(0x273)]=0x0;constructor(_0x1024de){const _0x4a59f2=_0x5d7726;this[_0x4a59f2(0x23d)]=_0x1024de;}get[_0x5d7726(0x295)](){const _0x29aa38=_0x5d7726;return[this[_0x29aa38(0x3d7)],this[_0x29aa38(0x273)]];}[_0x5d7726(0x19e)](_0x59fd09,_0x43b69c){const _0x623329=_0x5d7726;validateStops$1(_0x59fd09,_0x43b69c);let _0x150444=new Float32Array(_0x59fd09[_0x623329(0x1bc)]),_0x5d69c2=new Float32Array(_0x59fd09['length']*0x4),_0x2f1f44=new Float32Array(_0x43b69c[_0x623329(0x1bc)]),_0x253f66=new Float32Array(_0x43b69c['length']);for(let _0x25fbed=0x0;_0x25fbed<_0x59fd09[_0x623329(0x1bc)];_0x25fbed+=0x1)_0x150444[_0x25fbed]=_0x59fd09[_0x25fbed]['value'],_0x5d69c2[_0x623329(0x1f8)](_0x59fd09[_0x25fbed][_0x623329(0x3a2)],_0x25fbed*0x4);for(let _0x2d040b=0x0;_0x2d040b<_0x43b69c['length'];_0x2d040b+=0x1)_0x2f1f44[_0x2d040b]=_0x43b69c[_0x2d040b]['value'],_0x253f66[_0x2d040b]=_0x43b69c[_0x2d040b][_0x623329(0x36a)];let _0x293c6a=[createStorageBuffer(this['device'],_0x150444,_0x623329(0x28c)),createStorageBuffer(this[_0x623329(0x23d)],_0x5d69c2,_0x623329(0x220)),createStorageBuffer(this['device'],_0x2f1f44,_0x623329(0x3ab)),createStorageBuffer(this[_0x623329(0x23d)],_0x253f66,_0x623329(0x165))];this[_0x623329(0x385)](),this[_0x623329(0x11c)]=_0x293c6a[0x0],this[_0x623329(0x1e3)]=_0x293c6a[0x1],this[_0x623329(0x1fe)]=_0x293c6a[0x2],this[_0x623329(0x16e)]=_0x293c6a[0x3],this[_0x623329(0x3d7)]=_0x59fd09['length'],this['opacityStopCount']=_0x43b69c[_0x623329(0x1bc)];}[_0x5d7726(0x13c)](_0x301047){const _0x2b0eb2=_0x5d7726;if(!this[_0x2b0eb2(0x11c)]||!this[_0x2b0eb2(0x1e3)]||!this[_0x2b0eb2(0x1fe)]||!this['opacityBuffer'])throw Error(_0x2b0eb2(0x274));return this[_0x2b0eb2(0x23d)]['createBindGroup']({'label':_0x2b0eb2(0x3b2),'layout':_0x301047,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2b0eb2(0x11c)]}},{'binding':0x1,'resource':{'buffer':this[_0x2b0eb2(0x1e3)]}},{'binding':0x2,'resource':{'buffer':this[_0x2b0eb2(0x1fe)]}},{'binding':0x3,'resource':{'buffer':this[_0x2b0eb2(0x16e)]}}]});}[_0x5d7726(0x416)](){const _0x351a31=_0x5d7726;this[_0x351a31(0x385)](),this[_0x351a31(0x3d7)]=0x0,this[_0x351a31(0x273)]=0x0;}['destroyBuffers'](){const _0x315a19=_0x5d7726;this[_0x315a19(0x11c)]?.[_0x315a19(0x416)](),this[_0x315a19(0x1e3)]?.[_0x315a19(0x416)](),this[_0x315a19(0x1fe)]?.['destroy'](),this['opacityBuffer']?.[_0x315a19(0x416)](),this['colorValuesBuffer']=null,this['colorBuffer']=null,this['opacityValuesBuffer']=null,this[_0x315a19(0x16e)]=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend=()=>({'color':{'srcFactor':_0x5d7726(0x3af),'dstFactor':'one-minus-src-alpha','operation':_0x5d7726(0x2e7)},'alpha':{'srcFactor':_0x5d7726(0x3af),'dstFactor':_0x5d7726(0x3d0),'operation':_0x5d7726(0x2e7)}}),validateMatrix=(_0x418d94,_0x39737a)=>{const _0x1eacb1=_0x5d7726;if(_0x418d94[_0x1eacb1(0x1bc)]!==0x10||_0x418d94[_0x1eacb1(0x1ee)](_0x34f026=>!Number[_0x1eacb1(0x373)](_0x34f026)))throw Error(_0x39737a+_0x1eacb1(0x253)+_0x39737a+_0x1eacb1(0x36c));},validateNonNegative=(_0x1a2efb,_0x1568e7)=>{const _0x124611=_0x5d7726;if(!Number['isFinite'](_0x1a2efb)||_0x1a2efb<0x0)throw Error(_0x1568e7+_0x124611(0x33e)+_0x1568e7+_0x124611(0x388));return _0x1a2efb;},validatePositive=(_0x29193f,_0x259c8b)=>{const _0x1f3d0f=_0x5d7726;if(!Number['isFinite'](_0x29193f)||_0x29193f<=0x0)throw Error(_0x259c8b+_0x1f3d0f(0x269)+_0x259c8b+_0x1f3d0f(0x2d0));return _0x29193f;},cloneMeshes=_0x27f5ff=>_0x27f5ff[_0x5d7726(0x3ef)](_0x5f376e=>({..._0x5f376e,'vertices':new Float32Array(_0x5f376e[_0x5d7726(0x194)])})),estimateBrickUploadBytes=_0x178aa0=>{const _0x517ccf=_0x5d7726;let _0x4f1030=_0x178aa0[_0x517ccf(0x403)]+_0x178aa0[_0x517ccf(0x2f4)]*0x2,_0x15e112=_0x178aa0[_0x517ccf(0x1c2)]+_0x178aa0[_0x517ccf(0x2f4)]*0x2,_0x590022=_0x178aa0[_0x517ccf(0xf9)]+_0x178aa0[_0x517ccf(0x2f4)]*0x2;return Math[_0x517ccf(0x1a9)](_0x4f1030*Float32Array[_0x517ccf(0x176)]/0x100)*0x100*_0x15e112*_0x590022+0x10;};var WebgpuVolumeSceneRenderer=class{[_0x5d7726(0x24b)];[_0x5d7726(0x28b)]='idle';[_0x5d7726(0x191)]=null;['adapter']=null;[_0x5d7726(0x23d)]=null;[_0x5d7726(0x17c)]=null;[_0x5d7726(0x3bf)]=null;[_0x5d7726(0x12f)]=null;[_0x5d7726(0x411)]=null;[_0x5d7726(0x3ae)]=null;[_0x5d7726(0x1a0)]=null;[_0x5d7726(0x37d)]=null;[_0x5d7726(0x200)]=null;[_0x5d7726(0x21e)]=null;['geometryBindGroup']=null;[_0x5d7726(0x1d7)]=null;[_0x5d7726(0x122)]=null;['transferBindGroup']=null;['volumePipeline']=null;[_0x5d7726(0x3d6)]=null;[_0x5d7726(0x2a8)]=null;[_0x5d7726(0x19d)]=null;['overlayLinePipeline']=null;[_0x5d7726(0x151)]=null;[_0x5d7726(0x3f5)]=null;[_0x5d7726(0x23e)]=null;['atlas']=null;['transferResources']=null;['profileResources']=null;[_0x5d7726(0x2db)]=null;['axisResources']=null;[_0x5d7726(0x25f)]=null;['camera']={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x5d7726(0x1fb)]=IDENTITY_MATRIX$1;['inverseModelMatrix']=IDENTITY_MATRIX$1;[_0x5d7726(0x278)]=[0x0,0x0,0x0];[_0x5d7726(0x3cf)]=[0x1,0x1,0x1];[_0x5d7726(0x1d9)]=_0x5d7726(0x283);['opacity']=0.3;['densityScale']=0x1;[_0x5d7726(0x386)]=0.005;['volumeDimFactor']=0x1;['colorMode']=_0x5d7726(0x3c7);[_0x5d7726(0x11b)]=null;[_0x5d7726(0x35d)]=DEFAULT_COLOR_STOPS;[_0x5d7726(0x153)]=DEFAULT_OPACITY_STOPS;[_0x5d7726(0x227)]=0x0;[_0x5d7726(0x1b3)]=0x0;[_0x5d7726(0x293)]=0x0;[_0x5d7726(0x38f)]=0x0;[_0x5d7726(0x2b4)]=0x0;[_0x5d7726(0x197)]=0x0;[_0x5d7726(0x414)]=[];['cachedSlices']=[];[_0x5d7726(0x3bc)]=[];[_0x5d7726(0x2d5)]=new Map();[_0x5d7726(0x3e2)]=[];[_0x5d7726(0x2fb)]=null;[_0x5d7726(0x3c2)]=0x0;[_0x5d7726(0x1b7)]=null;['uploadStagingBufferSize']=0x0;[_0x5d7726(0x31e)]=0x0;['uploadBatchCount']=0x0;[_0x5d7726(0x28a)]=0x0;[_0x5d7726(0x3ea)]=!0x1;['frameAvailableCallback']=null;constructor(_0x1c41df={}){const _0x42322b=_0x5d7726;this[_0x42322b(0x24b)]={..._0x1c41df};}get[_0x5d7726(0x39b)](){const _0x39d2c2=_0x5d7726;return this[_0x39d2c2(0x28b)];}get[_0x5d7726(0x3ec)](){const _0x3629d9=_0x5d7726;let _0xeb4801=this[_0x3629d9(0x358)]?.[_0x3629d9(0x3ec)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x3629d9(0x24b)][_0x3629d9(0x18a)]??this[_0x3629d9(0x24b)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x366cc1=this[_0x3629d9(0x2db)]?.[_0x3629d9(0x3ec)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0xeb4801[_0x3629d9(0x2fa)],'residentBrickCount':this['atlas']?.[_0x3629d9(0x199)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0xeb4801[_0x3629d9(0x2b0)],'gpuBytes':_0xeb4801[_0x3629d9(0x246)],'memoryLimitBytes':_0xeb4801[_0x3629d9(0x2fc)],'budgetLimited':_0xeb4801['budgetLimited'],'frameTimeMilliseconds':this[_0x3629d9(0x197)],'submittedFrameCount':this[_0x3629d9(0x1b3)],'uploadedBrickCount':this[_0x3629d9(0x31e)],'uploadBatchCount':this[_0x3629d9(0x352)],'maximumUploadBatchBytes':this[_0x3629d9(0x28a)],'sliceUniformUpdateCount':_0x366cc1[_0x3629d9(0x166)],'sliceResourceRebuildCount':_0x366cc1[_0x3629d9(0x3d4)],'skippedSamples':_0xeb4801['skippedSamples'],'skippedCells':_0xeb4801[_0x3629d9(0x3db)]};}[_0x5d7726(0x349)](_0x3c4fd3){const _0x54a18f=_0x5d7726;this[_0x54a18f(0x2ce)]=_0x3c4fd3;}async[_0x5d7726(0x3fb)](_0x231638){const _0x1b6051=_0x5d7726;if(this[_0x1b6051(0x28b)]===_0x1b6051(0x31d))throw Error(_0x1b6051(0x1ce));let _0x8e6232=++this[_0x1b6051(0x2b4)];this[_0x1b6051(0x108)](),this[_0x1b6051(0x191)]=_0x231638,this[_0x1b6051(0x28b)]='initializing';let _0x482ffa=navigator[_0x1b6051(0x1ab)];if(!_0x482ffa)throw this['lifecycleState']=_0x1b6051(0x20f),Error(_0x1b6051(0x3fd));let _0x141f31=await _0x482ffa[_0x1b6051(0x35b)]({'powerPreference':this[_0x1b6051(0x24b)][_0x1b6051(0x1aa)]??_0x1b6051(0x3ff)});if(_0x8e6232!==this[_0x1b6051(0x2b4)])return;if(!_0x141f31)throw this[_0x1b6051(0x28b)]=_0x1b6051(0x20f),Error(_0x1b6051(0x1eb));let _0x56a2e3=await _0x141f31[_0x1b6051(0x16d)]();if(_0x8e6232!==this[_0x1b6051(0x2b4)]){_0x56a2e3[_0x1b6051(0x416)]();return;}let _0x1c5d2e=_0x231638[_0x1b6051(0x363)]('webgpu');if(!_0x1c5d2e)throw _0x56a2e3['destroy'](),this[_0x1b6051(0x28b)]=_0x1b6051(0x20f),Error(_0x1b6051(0x1ae));let _0x2ff445=_0x482ffa[_0x1b6051(0x37a)]();_0x1c5d2e[_0x1b6051(0x24d)]({'device':_0x56a2e3,'format':_0x2ff445,'alphaMode':_0x1b6051(0x412),'usage':GPUTextureUsage[_0x1b6051(0x2da)]|GPUTextureUsage['COPY_SRC']}),this[_0x1b6051(0x315)]=_0x141f31,this[_0x1b6051(0x23d)]=_0x56a2e3,this[_0x1b6051(0x17c)]=_0x1c5d2e,this['format']=_0x2ff445,_0x56a2e3[_0x1b6051(0x3df)]('validation'),this[_0x1b6051(0x369)]();let _0x3752df=await _0x56a2e3['popErrorScope']();if(_0x3752df)throw this['releaseGpuResources'](),this[_0x1b6051(0x28b)]=_0x1b6051(0x20f),Error(_0x1b6051(0x229)+_0x3752df['message']+_0x1b6051(0x1b5));if(this[_0x1b6051(0x140)](_0x56a2e3),this[_0x1b6051(0x28b)]='ready',this[_0x1b6051(0x25f)]){this[_0x1b6051(0x2e4)](this[_0x1b6051(0x25f)]);let _0x19c0b8=Array[_0x1b6051(0x3c0)](this[_0x1b6051(0x2d5)][_0x1b6051(0x224)]());await Promise[_0x1b6051(0x1a2)](_0x19c0b8[_0x1b6051(0x3ef)](([_0x7ffbce,_0x40b4af])=>this['enqueueBrickUpload']({'logicalIndex':_0x7ffbce,'values':_0x40b4af},!0x1)));}this[_0x1b6051(0x3e0)](),this[_0x1b6051(0x226)]()[_0x1b6051(0x144)](this[_0x1b6051(0x414)]),this[_0x1b6051(0x1b9)]()['replace'](this['cachedSlices']),this[_0x1b6051(0x2ab)]()['replace'](this['cachedAxes']),this[_0x1b6051(0xfe)](_0x231638['width']||_0x231638['clientWidth']||0x1,_0x231638[_0x1b6051(0x38f)]||_0x231638[_0x1b6051(0x2c0)]||0x1);}['setSource'](_0x240984){const _0x3bd018=_0x5d7726;this['uploadGeneration']+=0x1,this[_0x3bd018(0x31f)](new DOMException(_0x3bd018(0x307),_0x3bd018(0x38d))),this[_0x3bd018(0x25f)]={..._0x240984},this[_0x3bd018(0x2d5)][_0x3bd018(0x1ad)](),this[_0x3bd018(0x31e)]=0x0,this[_0x3bd018(0x352)]=0x0,this['maximumUploadBatchBytes']=0x0,this[_0x3bd018(0x28b)]===_0x3bd018(0x1c0)&&this['configureSourceResources'](_0x240984);}[_0x5d7726(0x15a)](_0x22ff42){const _0x3809d8=_0x5d7726;return this[_0x3809d8(0x25e)](_0x22ff42,!0x0);}[_0x5d7726(0x20e)](_0x542021){const _0xeafb99=_0x5d7726;this[_0xeafb99(0x30e)]()[_0xeafb99(0x3d3)](_0x542021,this[_0xeafb99(0x227)]);for(let _0x5ee483 of _0x542021){let _0x37e427=this[_0xeafb99(0x2d5)][_0xeafb99(0x248)](_0x5ee483);_0x37e427&&(this[_0xeafb99(0x2d5)][_0xeafb99(0x370)](_0x5ee483),this[_0xeafb99(0x2d5)][_0xeafb99(0x1f8)](_0x5ee483,_0x37e427));}}[_0x5d7726(0x2d9)](_0x211dfc){const _0x1f4d39=_0x5d7726;validateMatrix(_0x211dfc[_0x1f4d39(0x10b)],_0x1f4d39(0x10b)),validateMatrix(_0x211dfc[_0x1f4d39(0x1b8)],_0x1f4d39(0x1b8)),this['camera']={'viewProjection':[..._0x211dfc[_0x1f4d39(0x10b)]],'inverseViewProjection':[..._0x211dfc[_0x1f4d39(0x1b8)]],'cameraPosition':[..._0x211dfc['cameraPosition']]};}['setProfiles'](_0x543de6){const _0x9dfac6=_0x5d7726;this[_0x9dfac6(0x414)]=cloneMeshes(_0x543de6),this[_0x9dfac6(0x226)]()[_0x9dfac6(0x144)](_0x543de6);}[_0x5d7726(0x377)](_0x302d39){const _0x522aed=_0x5d7726;this[_0x522aed(0x2f2)]=_0x302d39[_0x522aed(0x3ef)](_0x21ac0e=>({..._0x21ac0e})),this['getSliceResources']()[_0x522aed(0x144)](_0x302d39);}[_0x5d7726(0x29d)](_0x38bfd7){const _0x32f869=_0x5d7726;this[_0x32f869(0x3bc)]=cloneMeshes(_0x38bfd7),this[_0x32f869(0x2ab)]()[_0x32f869(0x144)](_0x38bfd7);}[_0x5d7726(0x2a3)](_0x9a1fdd,_0x3c2841,_0x14eefc){const _0x158cf3=_0x5d7726;this[_0x158cf3(0x35d)]=_0x9a1fdd[_0x158cf3(0x3ef)](_0x4f0abc=>({'value':_0x4f0abc['value'],'color':[..._0x4f0abc[_0x158cf3(0x3a2)]]})),this['opacityStops']=_0x3c2841[_0x158cf3(0x3ef)](_0x2223dd=>({..._0x2223dd})),_0x14eefc&&(this['colorMode']=_0x14eefc),this[_0x158cf3(0x28b)]===_0x158cf3(0x1c0)&&this['updateTransferResources']();}['update'](_0xed63eb){const _0x983840=_0x5d7726;_0xed63eb[_0x983840(0x1fb)]&&(validateMatrix(_0xed63eb[_0x983840(0x1fb)],_0x983840(0x1fb)),this[_0x983840(0x1fb)]=[..._0xed63eb[_0x983840(0x1fb)]]),_0xed63eb[_0x983840(0x174)]&&(validateMatrix(_0xed63eb[_0x983840(0x174)],'inverseModelMatrix'),this[_0x983840(0x174)]=[..._0xed63eb[_0x983840(0x174)]]),_0xed63eb[_0x983840(0x278)]&&(this[_0x983840(0x278)]=[..._0xed63eb['clipMinimum']]),_0xed63eb[_0x983840(0x3cf)]&&(this[_0x983840(0x3cf)]=[..._0xed63eb[_0x983840(0x3cf)]]),_0xed63eb[_0x983840(0x1d9)]&&(this[_0x983840(0x1d9)]=_0xed63eb[_0x983840(0x1d9)]),_0xed63eb['opacity']!==void 0x0&&(this[_0x983840(0x36a)]=validateNonNegative(_0xed63eb[_0x983840(0x36a)],_0x983840(0x36a))),_0xed63eb[_0x983840(0x201)]!==void 0x0&&(this[_0x983840(0x201)]=validateNonNegative(_0xed63eb[_0x983840(0x201)],'densityScale')),_0xed63eb[_0x983840(0x386)]!==void 0x0&&(this[_0x983840(0x386)]=validatePositive(_0xed63eb[_0x983840(0x386)],'stepLength')),_0xed63eb[_0x983840(0x22e)]!==void 0x0&&(this[_0x983840(0x22e)]=validateNonNegative(_0xed63eb[_0x983840(0x22e)],'volumeDimFactor')),_0xed63eb[_0x983840(0x13e)]&&(this[_0x983840(0x13e)]=_0xed63eb[_0x983840(0x13e)]),_0xed63eb[_0x983840(0x11b)]!==void 0x0&&(this[_0x983840(0x11b)]=_0xed63eb[_0x983840(0x11b)]?{..._0xed63eb[_0x983840(0x11b)]}:null);}[_0x5d7726(0xfe)](_0x167369,_0x5e4c4e){const _0x33e7d5=_0x5d7726;if(!Number[_0x33e7d5(0x291)](_0x167369)||!Number[_0x33e7d5(0x291)](_0x5e4c4e)||_0x167369<=0x0||_0x5e4c4e<=0x0)throw Error(_0x33e7d5(0x264));let _0x9e2327=this[_0x33e7d5(0x354)]();_0x9e2327[_0x33e7d5(0x293)]=_0x167369,_0x9e2327[_0x33e7d5(0x38f)]=_0x5e4c4e,this[_0x33e7d5(0x293)]=_0x167369,this['height']=_0x5e4c4e,this[_0x33e7d5(0x1cd)]()[_0x33e7d5(0xfe)](_0x167369,_0x5e4c4e),this[_0x33e7d5(0x3aa)]();}[_0x5d7726(0x27d)](){const _0x328a2e=_0x5d7726;if(this['lifecycleState']!=='ready'||!this[_0x328a2e(0x25f)]||this[_0x328a2e(0x293)]<=0x0||this[_0x328a2e(0x38f)]<=0x0||this[_0x328a2e(0x3ea)])return!0x1;let _0x34264d=performance[_0x328a2e(0x30a)]();this['frameIndex']+=0x1,this['writeParams']();let _0x4fe0fa=this[_0x328a2e(0x3a4)](),_0x567775=_0x4fe0fa[_0x328a2e(0x2f8)]({'label':_0x328a2e(0x33f)}),_0x1d76f7=this[_0x328a2e(0x363)]()[_0x328a2e(0x334)]()[_0x328a2e(0x15f)]();return this[_0x328a2e(0x22d)](_0x567775,_0x1d76f7),this[_0x328a2e(0x2a5)](_0x567775,_0x1d76f7),this[_0x328a2e(0x10c)](_0x567775,_0x1d76f7),_0x4fe0fa['queue'][_0x328a2e(0x2e9)]([_0x567775[_0x328a2e(0x366)]()]),this['frameInFlight']=!0x0,this[_0x328a2e(0x1b3)]+=0x1,this[_0x328a2e(0x197)]=Math[_0x328a2e(0x2e5)](0.000001,performance['now']()-_0x34264d),_0x4fe0fa[_0x328a2e(0x3b3)]['onSubmittedWorkDone']()[_0x328a2e(0x249)](()=>{const _0x388f5e=_0x328a2e;this[_0x388f5e(0x23d)]!==_0x4fe0fa||this[_0x388f5e(0x28b)]!==_0x388f5e(0x1c0)||(this[_0x388f5e(0x3ea)]=!0x1,this[_0x388f5e(0x2ce)]?.());})[_0x328a2e(0x3c3)](()=>{const _0x33ffb8=_0x328a2e;this[_0x33ffb8(0x23d)]===_0x4fe0fa&&(this[_0x33ffb8(0x3ea)]=!0x1);}),!0x0;}async[_0x5d7726(0xf0)](){const _0x1d99db=_0x5d7726;if(this[_0x1d99db(0x28b)]!==_0x1d99db(0x1c0)||!this[_0x1d99db(0x25f)]||this[_0x1d99db(0x293)]<=0x0||this['height']<=0x0)throw Error(_0x1d99db(0x1db));let _0x4b97be=this[_0x1d99db(0x3a4)](),_0xcfbdcc=this['width']*0x4,_0xf87a24=Math[_0x1d99db(0x1a9)](_0xcfbdcc/0x100)*0x100,_0x343e8a=_0x4b97be[_0x1d99db(0x387)]({'label':_0x1d99db(0x3c9),'size':_0xf87a24*this[_0x1d99db(0x38f)],'usage':GPUBufferUsage[_0x1d99db(0x1ef)]|GPUBufferUsage[_0x1d99db(0x17a)]});_0x4b97be[_0x1d99db(0x3df)](_0x1d99db(0x2f5)),this['frameIndex']+=0x1,this[_0x1d99db(0x268)]();let _0x33f71c=_0x4b97be[_0x1d99db(0x2f8)]({'label':_0x1d99db(0x1e0)}),_0x477eca=this['getContext']()[_0x1d99db(0x334)](),_0x2f9909=_0x477eca[_0x1d99db(0x15f)]();this[_0x1d99db(0x22d)](_0x33f71c,_0x2f9909),this[_0x1d99db(0x2a5)](_0x33f71c,_0x2f9909),this[_0x1d99db(0x10c)](_0x33f71c,_0x2f9909),_0x33f71c['copyTextureToBuffer']({'texture':_0x477eca},{'buffer':_0x343e8a,'bytesPerRow':_0xf87a24,'rowsPerImage':this[_0x1d99db(0x38f)]},[this[_0x1d99db(0x293)],this['height']]),_0x4b97be[_0x1d99db(0x3b3)][_0x1d99db(0x2e9)]([_0x33f71c[_0x1d99db(0x366)]()]);let _0xdab275=await _0x4b97be[_0x1d99db(0x2ad)]();if(_0xdab275)throw _0x343e8a[_0x1d99db(0x416)](),Error(_0x1d99db(0x156)+_0xdab275[_0x1d99db(0x12b)]+'.\x20WebGPU\x20体积帧读取失败。');await _0x343e8a[_0x1d99db(0x2c4)](GPUMapMode[_0x1d99db(0x1af)]);let _0x321f20=new Uint8Array(_0x343e8a['getMappedRange']()),_0x578dae=new Uint8Array(_0xcfbdcc*this[_0x1d99db(0x38f)]),_0x161e45=this[_0x1d99db(0x279)]()===_0x1d99db(0x22c);for(let _0x1e4e3a=0x0;_0x1e4e3a<this[_0x1d99db(0x38f)];_0x1e4e3a+=0x1){let _0x266532=_0x321f20[_0x1d99db(0x21b)](_0x1e4e3a*_0xf87a24,_0x1e4e3a*_0xf87a24+_0xcfbdcc),_0xa94fc6=_0x1e4e3a*_0xcfbdcc;if(!_0x161e45){_0x578dae[_0x1d99db(0x1f8)](_0x266532,_0xa94fc6);continue;}for(let _0x542ae6=0x0;_0x542ae6<this[_0x1d99db(0x293)];_0x542ae6+=0x1){let _0x4c23c6=_0x542ae6*0x4,_0x557257=_0xa94fc6+_0x4c23c6;_0x578dae[_0x557257]=_0x266532[_0x4c23c6+0x2],_0x578dae[_0x557257+0x1]=_0x266532[_0x4c23c6+0x1],_0x578dae[_0x557257+0x2]=_0x266532[_0x4c23c6],_0x578dae[_0x557257+0x3]=_0x266532[_0x4c23c6+0x3];}}return _0x343e8a['unmap'](),_0x343e8a['destroy'](),this[_0x1d99db(0x1b3)]+=0x1,{'width':this[_0x1d99db(0x293)],'height':this[_0x1d99db(0x38f)],'pixels':_0x578dae};}[_0x5d7726(0x416)](){const _0x166da9=_0x5d7726;this[_0x166da9(0x28b)]!==_0x166da9(0x31d)&&(++this[_0x166da9(0x2b4)],this[_0x166da9(0x108)](),this[_0x166da9(0x191)]=null,this[_0x166da9(0x25f)]=null,this[_0x166da9(0x2ce)]=null,this['lifecycleState']='destroyed');}[_0x5d7726(0x369)](){const _0x508df9=_0x5d7726;let _0x1f024a=this['getDevice']();this[_0x508df9(0x12f)]=_0x1f024a[_0x508df9(0x387)]({'label':_0x508df9(0x14c),'size':0x190,'usage':GPUBufferUsage[_0x508df9(0x1bb)]|GPUBufferUsage[_0x508df9(0x1ef)]}),this[_0x508df9(0x411)]=_0x1f024a['createBuffer']({'label':_0x508df9(0x2ee),'size':0x60,'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage['COPY_DST']}),this['geometryBindGroupLayout']=_0x1f024a[_0x508df9(0x296)]({'label':'volume\x20geometry\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x508df9(0x393)]|GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':'uniform'}}]}),this[_0x508df9(0x1a0)]=_0x1f024a[_0x508df9(0x296)]({'label':'volume\x20scene\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x508df9(0x393)]|GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x3f6)}},{'binding':0x1,'visibility':GPUShaderStage[_0x508df9(0x378)],'texture':{'sampleType':_0x508df9(0x15e)}}]}),this[_0x508df9(0x37d)]=_0x1f024a['createBindGroupLayout']({'label':_0x508df9(0x23c),'entries':[...Array['from']({'length':0x8},(_0xa24ec9,_0x57f2fd)=>({'binding':_0x57f2fd,'visibility':GPUShaderStage[_0x508df9(0x378)],'texture':{'sampleType':'unfilterable-float','viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x38c)}},{'binding':0x9,'visibility':GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x3f6)}}]}),this[_0x508df9(0x200)]=_0x1f024a[_0x508df9(0x296)]({'label':'volume\x20transfer\x20bind\x20group\x20layout','entries':[0x0,0x1,0x2,0x3][_0x508df9(0x3ef)](_0x5be496=>({'binding':_0x5be496,'visibility':GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x38c)}}))}),this[_0x508df9(0x21e)]=_0x1f024a['createBindGroupLayout']({'label':_0x508df9(0x1d5),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x508df9(0x393)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':'uniform'}}]}),this[_0x508df9(0x23e)]=new WebgpuSceneAttachments(_0x1f024a),this[_0x508df9(0x342)]=new WebgpuTransferResources(_0x1f024a),this[_0x508df9(0x113)]=new WebgpuSceneMeshResources(_0x1f024a),this[_0x508df9(0x2db)]=new WebgpuSliceResources(_0x1f024a,this['getSliceBindGroupLayout']()),this[_0x508df9(0x2d7)]=new WebgpuSceneMeshResources(_0x1f024a),this['createPipelines']();}['createPipelines'](){const _0xd5cb29=_0x5d7726;let _0x21198c=this[_0xd5cb29(0x3a4)](),_0x52bf86=this[_0xd5cb29(0x279)](),_0x1456dc=this[_0xd5cb29(0x40b)](),_0xfc2b79=this[_0xd5cb29(0x211)](),_0x5cf509=_0x21198c[_0xd5cb29(0x101)]({'label':_0xd5cb29(0x294),'code':sceneMesh_default}),_0x27745f={'module':_0x5cf509,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0xd5cb29(0x395)},{'shaderLocation':0x1,'offset':0xc,'format':_0xd5cb29(0x232)}]}]},_0x644072={'module':_0x5cf509,'entryPoint':_0xd5cb29(0x301),'targets':[{'format':_0x52bf86,'blend':premultipliedBlend()}]},_0x145ef5=(_0x3c7fc7,_0x3e5000)=>_0x21198c[_0xd5cb29(0x183)]({'layout':_0x21198c[_0xd5cb29(0xe9)]({'bindGroupLayouts':[_0x1456dc]}),'vertex':_0x27745f,'fragment':_0x644072,'primitive':{'topology':_0x3c7fc7},'depthStencil':_0x3e5000?{'format':_0xd5cb29(0x359),'depthWriteEnabled':!0x0,'depthCompare':_0xd5cb29(0x22a)}:void 0x0});this[_0xd5cb29(0x3d6)]=_0x145ef5('triangle-list',!0x0),this[_0xd5cb29(0x2a8)]=_0x145ef5(_0xd5cb29(0x389),!0x0),this['overlayTrianglePipeline']=_0x145ef5(_0xd5cb29(0x1f3),!0x1),this[_0xd5cb29(0x2e8)]=_0x145ef5('line-list',!0x1);let _0x1de317=_0x21198c[_0xd5cb29(0x101)]({'label':_0xd5cb29(0x100),'code':volumeRaymarch_default});this[_0xd5cb29(0x2c3)]=_0x21198c[_0xd5cb29(0x183)]({'layout':_0x21198c[_0xd5cb29(0xe9)]({'bindGroupLayouts':[_0xfc2b79,this[_0xd5cb29(0x187)](),this[_0xd5cb29(0x3c5)]()]}),'vertex':{'module':_0x1de317,'entryPoint':_0xd5cb29(0x400)},'fragment':{'module':_0x1de317,'entryPoint':'fragmentMain','targets':[{'format':_0x52bf86,'blend':premultipliedBlend()}]},'primitive':{'topology':_0xd5cb29(0x1f3)}});let _0x3a9a0c=_0x21198c[_0xd5cb29(0x101)]({'label':_0xd5cb29(0x16b),'code':volumeSlice_default}),_0x54ceeb=_0xc6045b=>_0x21198c[_0xd5cb29(0x183)]({'layout':_0x21198c[_0xd5cb29(0xe9)]({'bindGroupLayouts':[_0x1456dc,this['getVolumeBindGroupLayout'](),this[_0xd5cb29(0x3c5)](),this[_0xd5cb29(0x1a8)]()]}),'vertex':{'module':_0x3a9a0c,'entryPoint':_0xd5cb29(0x400)},'fragment':{'module':_0x3a9a0c,'entryPoint':_0xd5cb29(0x301),'targets':[{'format':_0x52bf86,'blend':premultipliedBlend()}]},'primitive':{'topology':'triangle-list'},'depthStencil':_0xc6045b?{'format':'depth32float','depthWriteEnabled':!0x0,'depthCompare':'less'}:void 0x0});this['sceneSlicePipeline']=_0x54ceeb(!0x0),this['overlaySlicePipeline']=_0x54ceeb(!0x1);}['configureSourceResources'](_0x434b8b){const _0x2af217=_0x5d7726;this['atlas']?.[_0x2af217(0x416)](),this[_0x2af217(0x358)]=new WebgpuBrickAtlas(this[_0x2af217(0x3a4)](),this[_0x2af217(0x24b)][_0x2af217(0x162)]??DEFAULT_MEMORY_TARGET_BYTES,this[_0x2af217(0x24b)][_0x2af217(0x18a)]??this['options'][_0x2af217(0x162)]??DEFAULT_MEMORY_TARGET_BYTES),this[_0x2af217(0x358)][_0x2af217(0x24d)](_0x434b8b),this['writeVolumeParams'](),this[_0x2af217(0x122)]=this[_0x2af217(0x358)][_0x2af217(0x13c)](this['getVolumeBindGroupLayout'](),this[_0x2af217(0x3b7)]());}[_0x5d7726(0x25e)](_0x164c8c,_0x5d22a6){return new Promise((_0x324dd0,_0x5d1044)=>{const _0x34b78b=_0x2fcb;this['pendingBrickUploads'][_0x34b78b(0x10e)]({'upload':_0x164c8c,'generation':this['uploadGeneration'],'cacheOnSuccess':_0x5d22a6,'resolve':_0x324dd0,'reject':_0x5d1044}),this[_0x34b78b(0x1f2)]();});}[_0x5d7726(0x1f2)](){const _0x549a24=_0x5d7726;this['uploadPump']||=Promise[_0x549a24(0x2c1)]()['then'](()=>this['processBrickUploads']())[_0x549a24(0x262)](()=>{const _0xfe0bfa=_0x549a24;this[_0xfe0bfa(0x2fb)]=null,this[_0xfe0bfa(0x3e2)]['length']>0x0&&this[_0xfe0bfa(0x28b)]===_0xfe0bfa(0x1c0)&&this[_0xfe0bfa(0x1f2)]();});}async['processBrickUploads'](){const _0x21fc8c=_0x5d7726;for(;this[_0x21fc8c(0x3e2)]['length']>0x0&&this[_0x21fc8c(0x28b)]==='ready'&&this[_0x21fc8c(0x25f)];){let _0x4c6b30=this[_0x21fc8c(0x3a4)](),_0x27dba8=estimateBrickUploadBytes(this[_0x21fc8c(0x25f)]),_0x485228=Math[_0x21fc8c(0x2dd)](0x4000000,Math[_0x21fc8c(0x2e5)](_0x27dba8,Math[_0x21fc8c(0x143)](_0x4c6b30[_0x21fc8c(0x3b9)][_0x21fc8c(0x32d)]/0x4))),_0x1e97df=[],_0x35a39c=0x0;for(;this[_0x21fc8c(0x3e2)]['length']>0x0&&_0x1e97df[_0x21fc8c(0x1bc)]<0x10;){let _0x2fce3d=this['pendingBrickUploads'][0x0];if(_0x1e97df[_0x21fc8c(0x1bc)]>0x0&&_0x35a39c+_0x27dba8>_0x485228)break;if(this['pendingBrickUploads'][_0x21fc8c(0x376)](),_0x2fce3d['generation']!==this[_0x21fc8c(0x3c2)]){_0x2fce3d['reject'](new DOMException(_0x21fc8c(0x344),_0x21fc8c(0x38d)));continue;}_0x1e97df['push'](_0x2fce3d),_0x35a39c+=_0x27dba8;}if(_0x1e97df['length']!==0x0)try{let _0x1d0e59=[],_0x321edf=0x0;for(let _0x379887 of _0x1e97df){let _0x3bd564=this[_0x21fc8c(0x30e)]()[_0x21fc8c(0x362)](_0x379887[_0x21fc8c(0x272)],this[_0x21fc8c(0x227)]),_0x3eae9f=Math[_0x21fc8c(0x1a9)](_0x321edf/0x100)*0x100;_0x1d0e59[_0x21fc8c(0x10e)]({'item':_0x379887,'prepared':_0x3bd564,'bufferOffset':_0x3eae9f}),_0x321edf=_0x3eae9f+_0x3bd564[_0x21fc8c(0xf8)][_0x21fc8c(0x20b)];}let _0x9f9240=this[_0x21fc8c(0x36d)](_0x321edf);await _0x9f9240[_0x21fc8c(0x2c4)](GPUMapMode[_0x21fc8c(0x215)]);let _0x36f344=new Uint8Array(_0x9f9240[_0x21fc8c(0x320)]());for(let _0x4c7e2a of _0x1d0e59){let _0x554e37=_0x4c7e2a['prepared'][_0x21fc8c(0xf8)];_0x36f344[_0x21fc8c(0x1f8)](new Uint8Array(_0x554e37[_0x21fc8c(0x39c)],_0x554e37['byteOffset'],_0x554e37[_0x21fc8c(0x20b)]),_0x4c7e2a[_0x21fc8c(0x20c)]);}_0x9f9240[_0x21fc8c(0x212)]();let _0x16cb1e=_0x4c6b30['createCommandEncoder']({'label':_0x21fc8c(0x390)});for(let _0x1a74c3 of _0x1d0e59)this[_0x21fc8c(0x30e)]()['encodePreparedBrickUpload'](_0x16cb1e,_0x9f9240,_0x1a74c3[_0x21fc8c(0x20c)],_0x1a74c3[_0x21fc8c(0x168)]);_0x4c6b30[_0x21fc8c(0x3b3)]['submit']([_0x16cb1e[_0x21fc8c(0x366)]()]),await _0x4c6b30[_0x21fc8c(0x3b3)][_0x21fc8c(0x205)](),await new Promise(_0x2cfb83=>setTimeout(_0x2cfb83,0x0)),this[_0x21fc8c(0x31e)]+=_0x1e97df[_0x21fc8c(0x1bc)],this[_0x21fc8c(0x352)]+=0x1,this[_0x21fc8c(0x28a)]=Math[_0x21fc8c(0x2e5)](this[_0x21fc8c(0x28a)],_0x35a39c);for(let _0x2cded9 of _0x1e97df){if(_0x2cded9[_0x21fc8c(0x121)]!==this[_0x21fc8c(0x3c2)]){_0x2cded9[_0x21fc8c(0x241)](new DOMException(_0x21fc8c(0x344),_0x21fc8c(0x38d)));continue;}_0x2cded9[_0x21fc8c(0x40e)]&&this['cacheBrickUpload'](_0x2cded9[_0x21fc8c(0x272)]),_0x2cded9[_0x21fc8c(0x2c1)]();}}catch(_0x492c36){for(let _0x54eb33 of _0x1e97df)_0x54eb33[_0x21fc8c(0x241)](_0x492c36);}}}[_0x5d7726(0x36d)](_0x2f2616){const _0x4a6885=_0x5d7726;let _0x330114=Math['max'](0x100,Math[_0x4a6885(0x1a9)](_0x2f2616/0x100)*0x100);return this[_0x4a6885(0x1b7)]&&this[_0x4a6885(0x202)]>=_0x330114?this[_0x4a6885(0x1b7)]:(this[_0x4a6885(0x1b7)]?.['destroy'](),this[_0x4a6885(0x1b7)]=this[_0x4a6885(0x3a4)]()[_0x4a6885(0x387)]({'label':_0x4a6885(0x401),'size':_0x330114,'usage':GPUBufferUsage[_0x4a6885(0x1ea)]|GPUBufferUsage[_0x4a6885(0x29f)]}),this[_0x4a6885(0x202)]=_0x330114,this[_0x4a6885(0x1b7)]);}['cacheBrickUpload'](_0x37b838){const _0x72ad8f=_0x5d7726;for(this['cachedBricks'][_0x72ad8f(0x370)](_0x37b838[_0x72ad8f(0x351)]),this[_0x72ad8f(0x2d5)][_0x72ad8f(0x1f8)](_0x37b838[_0x72ad8f(0x351)],new Float32Array(_0x37b838['values']));this[_0x72ad8f(0x2d5)][_0x72ad8f(0x261)]>this[_0x72ad8f(0x3ec)][_0x72ad8f(0x2b0)];){let _0x4351c4=this[_0x72ad8f(0x2d5)][_0x72ad8f(0x336)]()[_0x72ad8f(0x3f3)]()['value'];if(_0x4351c4===void 0x0)break;this['cachedBricks']['delete'](_0x4351c4);}}[_0x5d7726(0x31f)](_0x3f4093){const _0x1fd516=_0x5d7726;for(let _0x1f3e88 of this[_0x1fd516(0x3e2)]['splice'](0x0))_0x1f3e88['reject'](_0x3f4093);}['updateTransferResources'](){const _0x313b95=_0x5d7726;let _0x1aa0a3=this['getTransferResources']();_0x1aa0a3[_0x313b95(0x19e)](this['colorStops'],this[_0x313b95(0x153)]),this[_0x313b95(0xec)]=_0x1aa0a3[_0x313b95(0x13c)](this['getTransferBindGroupLayout']());}[_0x5d7726(0x3aa)](){const _0x18bf5e=_0x5d7726;!this['sceneParamsBuffer']||!this[_0x18bf5e(0x23e)]||!this[_0x18bf5e(0x3ae)]||!this[_0x18bf5e(0x1a0)]||(this[_0x18bf5e(0x337)]=this[_0x18bf5e(0x3a4)]()[_0x18bf5e(0x13c)]({'label':_0x18bf5e(0x1d2),'layout':this[_0x18bf5e(0x3ae)],'entries':[{'binding':0x0,'resource':{'buffer':this['sceneParamsBuffer']}}]}),this[_0x18bf5e(0x1d7)]=this[_0x18bf5e(0x3a4)]()[_0x18bf5e(0x13c)]({'label':'volume\x20scene\x20bind\x20group','layout':this[_0x18bf5e(0x1a0)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x18bf5e(0x12f)]}},{'binding':0x1,'resource':this['attachments'][_0x18bf5e(0x24e)]}]}));}[_0x5d7726(0x268)](){const _0x51131c=_0x5d7726;let _0x28e453=new Float32Array(0x64);_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x331)]['viewProjection'],0x0),_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x331)][_0x51131c(0x1b8)],0x10),_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x1fb)],0x20),_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x174)],0x30),_0x28e453[_0x51131c(0x1f8)]([...this[_0x51131c(0x331)][_0x51131c(0x19c)],0x1],0x40),_0x28e453[_0x51131c(0x1f8)]([this[_0x51131c(0x293)],this[_0x51131c(0x38f)],0x1/this['width'],0x1/this['height']],0x44),_0x28e453[_0x51131c(0x1f8)]([...this[_0x51131c(0x278)],0x0],0x48),_0x28e453[_0x51131c(0x1f8)]([...this[_0x51131c(0x3cf)],0x0],0x4c),_0x28e453['set']([+(this[_0x51131c(0x1d9)]===_0x51131c(0x222)),this[_0x51131c(0x36a)],this['densityScale'],this[_0x51131c(0x386)]],0x50),_0x28e453[_0x51131c(0x1f8)]([this[_0x51131c(0x35d)][_0x51131c(0x1bc)],this[_0x51131c(0x153)][_0x51131c(0x1bc)],this[_0x51131c(0x22e)],+(this[_0x51131c(0x13e)]==='step')],0x54);let _0x3c06c0=this[_0x51131c(0x11b)];_0x3c06c0&&(_0x28e453['set']([0x1,..._0x3c06c0[_0x51131c(0x136)]],0x58),_0x28e453[_0x51131c(0x1f8)]([_0x3c06c0[_0x51131c(0x2a6)],_0x3c06c0[_0x51131c(0x148)],..._0x3c06c0[_0x51131c(0x26c)]],0x5c),_0x28e453[_0x51131c(0x1f8)]([..._0x3c06c0[_0x51131c(0x214)],..._0x3c06c0[_0x51131c(0x117)]],0x60)),this[_0x51131c(0x3a4)]()[_0x51131c(0x3b3)]['writeBuffer'](this[_0x51131c(0x361)](),0x0,_0x28e453);}[_0x5d7726(0x1d8)](){const _0x9208bf=_0x5d7726;let _0x8c86a2=this['metadata'],_0x138dfa=this[_0x9208bf(0x358)];if(!_0x8c86a2||!_0x138dfa)return;let _0xa4a6e6=_0x138dfa[_0x9208bf(0x209)],_0x19d063=new Uint32Array(0x60/0x4),_0x4b7761=Math[_0x9208bf(0x1a9)](_0x8c86a2[_0x9208bf(0xf1)][_0x9208bf(0x12c)]/_0x8c86a2[_0x9208bf(0x403)]),_0x9f6e33=Math['ceil'](_0x8c86a2[_0x9208bf(0x3b6)]['count']/_0x8c86a2['brickHeight']),_0x1371af=Math[_0x9208bf(0x1a9)](_0x8c86a2[_0x9208bf(0x404)][_0x9208bf(0x12c)]/_0x8c86a2[_0x9208bf(0xf9)]);_0x19d063[_0x9208bf(0x1f8)]([_0x8c86a2[_0x9208bf(0xf1)]['count'],_0x8c86a2[_0x9208bf(0x3b6)][_0x9208bf(0x12c)],_0x8c86a2[_0x9208bf(0x404)][_0x9208bf(0x12c)],0x0],0x0),_0x19d063[_0x9208bf(0x1f8)]([_0x8c86a2[_0x9208bf(0x403)],_0x8c86a2[_0x9208bf(0x1c2)],_0x8c86a2[_0x9208bf(0xf9)],0x1],0x4),_0x19d063['set']([_0x4b7761,_0x9f6e33,_0x1371af,0x0],0x8),_0x19d063[_0x9208bf(0x1f8)]([_0xa4a6e6[_0x9208bf(0x210)],_0xa4a6e6[_0x9208bf(0x1b2)],_0xa4a6e6[_0x9208bf(0x181)],_0xa4a6e6['slotCount']],0xc),_0x19d063['set']([(_0x8c86a2['brickWidth']+0x2)*_0xa4a6e6['slotCountX'],(_0x8c86a2[_0x9208bf(0x1c2)]+0x2)*_0xa4a6e6[_0x9208bf(0x1b2)],(_0x8c86a2[_0x9208bf(0xf9)]+0x2)*_0xa4a6e6[_0x9208bf(0x181)],0x0],0x10),new Float32Array(_0x19d063['buffer'])[_0x9208bf(0x1f8)]([_0x8c86a2['noData']??0x0,_0x8c86a2[_0x9208bf(0x245)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this[_0x9208bf(0x3a4)]()['queue']['writeBuffer'](this[_0x9208bf(0x3b7)](),0x0,_0x19d063);}['encodeScenePass'](_0x128362,_0x1f5fbc){const _0x1e8c0d=_0x5d7726;let _0x9d94a6=_0x128362['beginRenderPass']({'label':_0x1e8c0d(0x308),'colorAttachments':[{'view':_0x1f5fbc,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':'clear','storeOp':_0x1e8c0d(0x16c)}],'depthStencilAttachment':{'view':this['getAttachments']()[_0x1e8c0d(0x24e)],'depthClearValue':0x1,'depthLoadOp':_0x1e8c0d(0x1ad),'depthStoreOp':_0x1e8c0d(0x16c)}});this['drawMeshes'](_0x9d94a6,_0x1e8c0d(0x312)),this[_0x1e8c0d(0x39f)](_0x9d94a6,_0x1e8c0d(0x312)),_0x9d94a6['end']();}[_0x5d7726(0x2a5)](_0x272baf,_0x17d4a7){const _0x55e546=_0x5d7726;if(!this['volumeBindGroup']||!this['transferBindGroup']||!this['sceneBindGroup']||!this[_0x55e546(0x2c3)])return;let _0x513c6e=_0x272baf['beginRenderPass']({'label':'volume\x20raymarch\x20pass','colorAttachments':[{'view':_0x17d4a7,'loadOp':_0x55e546(0x255),'storeOp':_0x55e546(0x16c)}]});_0x513c6e[_0x55e546(0x35e)](this[_0x55e546(0x2c3)]),_0x513c6e[_0x55e546(0x3a5)](0x0,this[_0x55e546(0x1d7)]),_0x513c6e['setBindGroup'](0x1,this[_0x55e546(0x122)]),_0x513c6e['setBindGroup'](0x2,this['transferBindGroup']),_0x513c6e[_0x55e546(0x406)](0x3),_0x513c6e[_0x55e546(0x105)]();}[_0x5d7726(0x10c)](_0x4290c1,_0x444ac4){const _0x5c71a8=_0x5d7726;let _0x2ff56e=_0x4290c1[_0x5c71a8(0x3f7)]({'label':_0x5c71a8(0x30c),'colorAttachments':[{'view':_0x444ac4,'loadOp':_0x5c71a8(0x255),'storeOp':'store'}]});this[_0x5c71a8(0x163)](_0x2ff56e,_0x5c71a8(0x365)),this[_0x5c71a8(0x39f)](_0x2ff56e,'always-visible'),_0x2ff56e[_0x5c71a8(0x105)]();}[_0x5d7726(0x163)](_0x593520,_0x53fdfc){const _0x4d8114=_0x5d7726;let _0x505924=this[_0x4d8114(0x337)];if(!_0x505924)return;let _0x3c5c10=_0x53fdfc===_0x4d8114(0x312)?this[_0x4d8114(0x3d6)]:this['overlayTrianglePipeline'],_0x249c76=_0x53fdfc==='scene'?this[_0x4d8114(0x2a8)]:this['overlayLinePipeline'];_0x3c5c10&&(_0x593520[_0x4d8114(0x35e)](_0x3c5c10),_0x593520['setBindGroup'](0x0,_0x505924),this[_0x4d8114(0x113)]?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x1f3),_0x53fdfc),this['axisResources']?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x1f3),_0x53fdfc)),_0x249c76&&(_0x593520[_0x4d8114(0x35e)](_0x249c76),_0x593520[_0x4d8114(0x3a5)](0x0,_0x505924),this[_0x4d8114(0x113)]?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x389),_0x53fdfc),this[_0x4d8114(0x2d7)]?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x389),_0x53fdfc));}[_0x5d7726(0x39f)](_0x475f9c,_0x1b0557){const _0x47611e=_0x5d7726;let _0x2c1157=_0x1b0557===_0x47611e(0x312)?this['sceneSlicePipeline']:this[_0x47611e(0x3f5)];!_0x2c1157||!this['geometryBindGroup']||!this[_0x47611e(0x122)]||!this[_0x47611e(0xec)]||(_0x475f9c[_0x47611e(0x3a5)](0x0,this[_0x47611e(0x337)]),_0x475f9c[_0x47611e(0x3a5)](0x1,this[_0x47611e(0x122)]),_0x475f9c['setBindGroup'](0x2,this[_0x47611e(0xec)]),this[_0x47611e(0x2db)]?.['draw'](_0x475f9c,_0x2c1157,_0x1b0557));}[_0x5d7726(0x140)](_0x57b765){const _0x148aeb=_0x5d7726;_0x57b765[_0x148aeb(0x356)][_0x148aeb(0x249)](_0x1fc8be=>{const _0x3078b3=_0x148aeb;if(this[_0x3078b3(0x23d)]!==_0x57b765||this['lifecycleState']===_0x3078b3(0x31d))return;this['lifecycleState']=_0x3078b3(0x356),console[_0x3078b3(0x157)]('WebGPU\x20volume\x20device\x20was\x20lost:\x20'+_0x1fc8be[_0x3078b3(0x12b)]+_0x3078b3(0x3a8));let _0xe8306a=this[_0x3078b3(0x191)];this[_0x3078b3(0x108)](),_0xe8306a&&this[_0x3078b3(0x3fb)](_0xe8306a)[_0x3078b3(0x3c3)](_0x3a5465=>{const _0x2c4333=_0x3078b3;console[_0x2c4333(0x157)](_0x2c4333(0x33d),_0x3a5465);});});}[_0x5d7726(0x108)](){const _0x593a86=_0x5d7726;this[_0x593a86(0x3c2)]+=0x1,this['rejectPendingBrickUploads'](new DOMException(_0x593a86(0x3a1),_0x593a86(0x38d))),this[_0x593a86(0x358)]?.['destroy'](),this[_0x593a86(0x342)]?.[_0x593a86(0x416)](),this[_0x593a86(0x113)]?.[_0x593a86(0x416)](),this[_0x593a86(0x2db)]?.[_0x593a86(0x416)](),this[_0x593a86(0x2d7)]?.[_0x593a86(0x416)](),this[_0x593a86(0x23e)]?.[_0x593a86(0x416)](),this[_0x593a86(0x12f)]?.[_0x593a86(0x416)](),this['volumeParamsBuffer']?.[_0x593a86(0x416)](),this[_0x593a86(0x1b7)]?.[_0x593a86(0x416)]();try{this['context']?.[_0x593a86(0x323)]();}catch{}this[_0x593a86(0x23d)]?.[_0x593a86(0x416)](),this[_0x593a86(0x315)]=null,this['device']=null,this[_0x593a86(0x17c)]=null,this[_0x593a86(0x3bf)]=null,this[_0x593a86(0x12f)]=null,this[_0x593a86(0x411)]=null,this[_0x593a86(0x1b7)]=null,this[_0x593a86(0x202)]=0x0,this[_0x593a86(0x3ae)]=null,this['sceneBindGroupLayout']=null,this['volumeBindGroupLayout']=null,this[_0x593a86(0x200)]=null,this[_0x593a86(0x21e)]=null,this['geometryBindGroup']=null,this[_0x593a86(0x1d7)]=null,this[_0x593a86(0x122)]=null,this[_0x593a86(0xec)]=null,this[_0x593a86(0x2c3)]=null,this[_0x593a86(0x3d6)]=null,this[_0x593a86(0x2a8)]=null,this[_0x593a86(0x19d)]=null,this[_0x593a86(0x2e8)]=null,this['sceneSlicePipeline']=null,this['overlaySlicePipeline']=null,this[_0x593a86(0x23e)]=null,this[_0x593a86(0x358)]=null,this[_0x593a86(0x342)]=null,this[_0x593a86(0x113)]=null,this[_0x593a86(0x2db)]=null,this[_0x593a86(0x2d7)]=null,this[_0x593a86(0x3ea)]=!0x1,this['width']=0x0,this[_0x593a86(0x38f)]=0x0;}[_0x5d7726(0x3a4)](){const _0x23db9c=_0x5d7726;if(!this[_0x23db9c(0x23d)])throw Error(_0x23db9c(0x1d0));return this['device'];}[_0x5d7726(0x363)](){const _0x4f34ac=_0x5d7726;if(!this[_0x4f34ac(0x17c)])throw Error(_0x4f34ac(0x21a));return this['context'];}[_0x5d7726(0x279)](){const _0x545c41=_0x5d7726;if(!this[_0x545c41(0x3bf)])throw Error(_0x545c41(0x27c));return this[_0x545c41(0x3bf)];}[_0x5d7726(0x354)](){const _0x152e41=_0x5d7726;if(!this['canvas'])throw Error(_0x152e41(0x147));return this[_0x152e41(0x191)];}[_0x5d7726(0x1cd)](){const _0x3559d3=_0x5d7726;if(!this[_0x3559d3(0x23e)])throw Error('WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。');return this[_0x3559d3(0x23e)];}[_0x5d7726(0x30e)](){const _0x4fb151=_0x5d7726;if(!this[_0x4fb151(0x358)])throw Error(_0x4fb151(0x2b1));return this[_0x4fb151(0x358)];}[_0x5d7726(0x124)](){const _0x127f07=_0x5d7726;if(!this[_0x127f07(0x342)])throw Error(_0x127f07(0x1b1));return this['transferResources'];}[_0x5d7726(0x226)](){const _0x54e30d=_0x5d7726;if(!this[_0x54e30d(0x113)])throw Error('WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。');return this[_0x54e30d(0x113)];}['getSliceResources'](){const _0x19ebf1=_0x5d7726;if(!this[_0x19ebf1(0x2db)])throw Error('WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。');return this['sliceResources'];}[_0x5d7726(0x2ab)](){const _0x47646e=_0x5d7726;if(!this[_0x47646e(0x2d7)])throw Error(_0x47646e(0x381));return this[_0x47646e(0x2d7)];}[_0x5d7726(0x211)](){const _0x36f1b0=_0x5d7726;if(!this[_0x36f1b0(0x1a0)])throw Error('WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。');return this[_0x36f1b0(0x1a0)];}[_0x5d7726(0x40b)](){const _0x4f0a44=_0x5d7726;if(!this[_0x4f0a44(0x3ae)])throw Error('WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。');return this[_0x4f0a44(0x3ae)];}[_0x5d7726(0x187)](){const _0x5d1080=_0x5d7726;if(!this['volumeBindGroupLayout'])throw Error('WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。');return this[_0x5d1080(0x37d)];}['getTransferBindGroupLayout'](){const _0x3d5590=_0x5d7726;if(!this[_0x3d5590(0x200)])throw Error(_0x3d5590(0x324));return this['transferBindGroupLayout'];}[_0x5d7726(0x1a8)](){const _0x2be38e=_0x5d7726;if(!this[_0x2be38e(0x21e)])throw Error(_0x2be38e(0x265));return this[_0x2be38e(0x21e)];}[_0x5d7726(0x361)](){const _0x5578cb=_0x5d7726;if(!this[_0x5578cb(0x12f)])throw Error(_0x5578cb(0x2f9));return this[_0x5578cb(0x12f)];}[_0x5d7726(0x3b7)](){const _0xbccacd=_0x5d7726;if(!this[_0xbccacd(0x411)])throw Error('WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。');return this[_0xbccacd(0x411)];}};const getAxis=(_0x340de3,_0x8368ab)=>_0x8368ab==='x'?_0x340de3[_0x5d7726(0xf1)]:_0x8368ab==='y'?_0x340de3[_0x5d7726(0x3b6)]:_0x340de3[_0x5d7726(0x404)],clampPosition=(_0x38e7f5,_0x1e259d,_0x5874af)=>{const _0x5be176=_0x5d7726;if(!Number[_0x5be176(0x373)](_0x5874af))throw Error(_0x5be176(0x302));let _0x390e01=getAxis(_0x38e7f5,_0x1e259d),_0x1fa38c=Math['min'](_0x390e01[_0x5be176(0x141)],_0x390e01[_0x5be176(0x105)]),_0x2ac390=Math[_0x5be176(0x2e5)](_0x390e01['start'],_0x390e01[_0x5be176(0x105)]);return Math['min'](_0x2ac390,Math[_0x5be176(0x2e5)](_0x1fa38c,_0x5874af));},clonePreview=_0x37897a=>_0x37897a?{..._0x37897a}:null,cloneLockedSlice=_0x203b2a=>({..._0x203b2a}),validateAxes=_0x3763ae=>{const _0x75c7c0=_0x5d7726;for(let _0x2e6c6f of[_0x3763ae[_0x75c7c0(0xf1)],_0x3763ae[_0x75c7c0(0x3b6)],_0x3763ae[_0x75c7c0(0x404)]]){if(!Number[_0x75c7c0(0x373)](_0x2e6c6f[_0x75c7c0(0x141)])||!Number[_0x75c7c0(0x373)](_0x2e6c6f[_0x75c7c0(0x105)]))throw Error('切面轴端点必须是有限数。');if(!(Number[_0x75c7c0(0x291)](_0x2e6c6f[_0x75c7c0(0x12c)])&&_0x2e6c6f[_0x75c7c0(0x12c)]>0x0))throw Error('切面轴采样数必须是正整数。');if(_0x2e6c6f['count']>0x1&&_0x2e6c6f[_0x75c7c0(0x141)]===_0x2e6c6f['end'])throw Error(_0x75c7c0(0x2b5));}},volumeAxisValueToNormalized=(_0xbb58cc,_0x5e53b1)=>_0xbb58cc[_0x5d7726(0x141)]===_0xbb58cc[_0x5d7726(0x105)]?0x0:(_0x5e53b1-_0xbb58cc['start'])/(_0xbb58cc['end']-_0xbb58cc[_0x5d7726(0x141)]),normalizedToVolumeAxisValue=(_0x31f386,_0x170053)=>_0x31f386[_0x5d7726(0x141)]+_0x170053*(_0x31f386[_0x5d7726(0x105)]-_0x31f386[_0x5d7726(0x141)]);function _0x2fcb(_0x11cf1a,_0x33da8e){const _0x5873c0=_0x5873();return _0x2fcb=function(_0x2fcb0f,_0x5f449c){_0x2fcb0f=_0x2fcb0f-0xe8;let _0x4a3896=_0x5873c0[_0x2fcb0f];return _0x4a3896;},_0x2fcb(_0x11cf1a,_0x33da8e);}var SliceState=class{[_0x5d7726(0x3f4)];[_0x5d7726(0x3bd)]=new Set();['onLimitReached'];[_0x5d7726(0x1e2)];[_0x5d7726(0x3fa)];[_0x5d7726(0x190)]=0x1;[_0x5d7726(0x10d)]=null;['slices']=[];[_0x5d7726(0x415)]=_0x5d7726(0x28f);[_0x5d7726(0x22e)];constructor(_0xb20467,_0x4141c9={}){const _0x46e891=_0x5d7726;if(validateAxes(_0xb20467),this[_0x46e891(0x3f4)]={'xAxis':{..._0xb20467[_0x46e891(0xf1)]},'yAxis':{..._0xb20467['yAxis']},'zAxis':{..._0xb20467['zAxis']}},this['volumeDimFactor']=_0x4141c9[_0x46e891(0x22e)]??0.25,this[_0x46e891(0x3fa)]=_0x4141c9['depthMode']??_0x46e891(0x312),this['maxLockedSlices']=_0x4141c9['maxLockedSlices']??0xc,this[_0x46e891(0x17b)]=_0x4141c9[_0x46e891(0x17b)],!(this['volumeDimFactor']>=0x0&&this[_0x46e891(0x22e)]<=0x1))throw Error(_0x46e891(0x2b6));if(this[_0x46e891(0x3fa)]!==_0x46e891(0x312)&&this[_0x46e891(0x3fa)]!=='always-visible')throw Error('切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid');if(!(Number[_0x46e891(0x291)](this[_0x46e891(0x1e2)])&&this[_0x46e891(0x1e2)]>0x0))throw Error(_0x46e891(0x3ca));}get['preview'](){const _0x2afc5e=_0x5d7726;return clonePreview(this[_0x2afc5e(0x10d)]);}get[_0x5d7726(0x2c2)](){const _0x185e2b=_0x5d7726;return this[_0x185e2b(0x32e)][_0x185e2b(0x3ef)](cloneLockedSlice);}get[_0x5d7726(0x2a9)](){const _0x4c8d4d=_0x5d7726;return this[_0x4c8d4d(0x415)];}get['snapshot'](){const _0x16de25=_0x5d7726;return{'preview':this['preview'],'lockedSlices':this[_0x16de25(0x2c2)],'toolMode':this[_0x16de25(0x415)],'volumeDimFactor':this[_0x16de25(0x22e)]};}['subscribe'](_0x516c56){const _0x2280ef=_0x5d7726;return this[_0x2280ef(0x3bd)][_0x2280ef(0x2e7)](_0x516c56),_0x516c56(this[_0x2280ef(0x2a4)]),()=>this[_0x2280ef(0x3bd)][_0x2280ef(0x370)](_0x516c56);}get['axisDefinitions'](){const _0x32062f=_0x5d7726;return{'xAxis':{...this[_0x32062f(0x3f4)][_0x32062f(0xf1)]},'yAxis':{...this[_0x32062f(0x3f4)][_0x32062f(0x3b6)]},'zAxis':{...this[_0x32062f(0x3f4)][_0x32062f(0x404)]}};}[_0x5d7726(0x29d)](_0x283f0e){const _0x2a0040=_0x5d7726;validateAxes(_0x283f0e),this[_0x2a0040(0x3f4)]={'xAxis':{..._0x283f0e[_0x2a0040(0xf1)]},'yAxis':{..._0x283f0e[_0x2a0040(0x3b6)]},'zAxis':{..._0x283f0e['zAxis']}},this[_0x2a0040(0x10d)]&&(this[_0x2a0040(0x10d)][_0x2a0040(0x3c6)]=clampPosition(this[_0x2a0040(0x3f4)],this[_0x2a0040(0x10d)][_0x2a0040(0x24c)],this['currentPreview'][_0x2a0040(0x3c6)])),this[_0x2a0040(0x32e)]=this[_0x2a0040(0x32e)][_0x2a0040(0x3ef)](_0x36d6bd=>({..._0x36d6bd,'position':clampPosition(this[_0x2a0040(0x3f4)],_0x36d6bd['axis'],_0x36d6bd[_0x2a0040(0x3c6)])})),this[_0x2a0040(0x392)]();}[_0x5d7726(0x38b)](_0x529587){const _0x565a41=_0x5d7726;this[_0x565a41(0x415)]!==_0x529587&&(this[_0x565a41(0x415)]=_0x529587,(_0x529587===null||_0x529587!==_0x565a41(0x28f)&&this['currentPreview']?.['axis']!==_0x529587)&&(this[_0x565a41(0x10d)]=null),this['notify']());}[_0x5d7726(0x234)](_0x57baad,_0x83eda5){const _0x1349f6=_0x5d7726;if(this[_0x1349f6(0x415)]===null||this[_0x1349f6(0x415)]!==_0x1349f6(0x28f)&&this['mode']!==_0x57baad)return;let _0x3424a3=clampPosition(this[_0x1349f6(0x3f4)],_0x57baad,_0x83eda5);this[_0x1349f6(0x10d)]?.[_0x1349f6(0x24c)]===_0x57baad&&this[_0x1349f6(0x10d)]['position']===_0x3424a3||(this[_0x1349f6(0x10d)]={'axis':_0x57baad,'position':_0x3424a3},this[_0x1349f6(0x392)]());}[_0x5d7726(0x34f)](){const _0x5642a4=_0x5d7726;this[_0x5642a4(0x10d)]&&(this[_0x5642a4(0x10d)]=null,this['notify']());}['lockPreview'](_0x4e2351=this[_0x5d7726(0x3fa)]){const _0x12d746=_0x5d7726;return this[_0x12d746(0x10d)]?this[_0x12d746(0x289)](this[_0x12d746(0x10d)][_0x12d746(0x24c)],this[_0x12d746(0x10d)][_0x12d746(0x3c6)],_0x4e2351):null;}[_0x5d7726(0x289)](_0x1547b8,_0x30eb51,_0x46f3e8=this['depthMode']){const _0x22dfa3=_0x5d7726;if(this[_0x22dfa3(0x32e)][_0x22dfa3(0x1bc)]>=this[_0x22dfa3(0x1e2)])return this[_0x22dfa3(0x17b)]?.(this['maxLockedSlices']),null;let _0x211fb5={'id':_0x22dfa3(0x2b8)+this['nextId'],'axis':_0x1547b8,'position':clampPosition(this[_0x22dfa3(0x3f4)],_0x1547b8,_0x30eb51),'depthMode':_0x46f3e8,'visible':!0x0};return this['nextId']+=0x1,this[_0x22dfa3(0x32e)]=[...this['slices'],_0x211fb5],this['notify'](),cloneLockedSlice(_0x211fb5);}['updateLockedSlice'](_0x30350e,_0x12d169){const _0xa83b3c=_0x5d7726;let _0x631772=this['slices'][_0xa83b3c(0x3d9)](_0x293921=>_0x293921['id']===_0x30350e);if(_0x631772<0x0)return;let _0x4585ab=this[_0xa83b3c(0x32e)][_0x631772],_0x312f12=clampPosition(this[_0xa83b3c(0x3f4)],_0x4585ab[_0xa83b3c(0x24c)],_0x12d169);_0x312f12!==_0x4585ab[_0xa83b3c(0x3c6)]&&(this[_0xa83b3c(0x32e)]=this[_0xa83b3c(0x32e)]['map'](_0x190f0e=>_0x190f0e['id']===_0x30350e?{..._0x190f0e,'position':_0x312f12}:_0x190f0e),this['notify']());}[_0x5d7726(0x2e6)](_0x43c652){const _0xcae115=_0x5d7726;let _0x2c3b5f=this[_0xcae115(0x32e)][_0xcae115(0x28d)](_0x5eb9c6=>_0x5eb9c6['id']!==_0x43c652);_0x2c3b5f[_0xcae115(0x1bc)]!==this[_0xcae115(0x32e)][_0xcae115(0x1bc)]&&(this[_0xcae115(0x32e)]=_0x2c3b5f,this[_0xcae115(0x392)]());}[_0x5d7726(0x330)](){const _0x352ae1=_0x5d7726;this['slices']['length']!==0x0&&(this['slices']=[],this[_0x352ae1(0x392)]());}[_0x5d7726(0x392)](){const _0xfd031b=_0x5d7726;let _0x590f9f=this[_0xfd031b(0x2a4)];for(let _0x34f569 of this['listeners'])_0x34f569(_0x590f9f);}};const axisEndpoints=_0x300ebd=>_0x300ebd==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x300ebd==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x516505,_0x505446)=>{const _0x3a64ce=_0x5d7726;let _0x35ade1=multiplyMatrices(_0x505446[_0x3a64ce(0x17f)],_0x505446[_0x3a64ce(0x1fb)]),[_0x13969c,_0x1a7b6b]=axisEndpoints(_0x516505),_0x3df284=projectPointToViewport(_0x35ade1,_0x13969c,_0x505446[_0x3a64ce(0x25b)],_0x505446['viewportHeight']),_0x412ebd=projectPointToViewport(_0x35ade1,_0x1a7b6b,_0x505446[_0x3a64ce(0x25b)],_0x505446[_0x3a64ce(0x3ad)]);return!_0x3df284||!_0x412ebd?null:{'axis':_0x516505,'startX':_0x3df284[0x0],'startY':_0x3df284[0x1],'endX':_0x412ebd[0x0],'endY':_0x412ebd[0x1]};},hitProjectedAxis=(_0x41cc72,_0x53e651,_0x1194d3)=>{const _0x38be97=_0x5d7726;let _0x2a64c3=_0x41cc72[_0x38be97(0xf6)]-_0x41cc72[_0x38be97(0x340)],_0x5a53ee=_0x41cc72[_0x38be97(0x239)]-_0x41cc72[_0x38be97(0x1fa)],_0xa14a6f=_0x2a64c3*_0x2a64c3+_0x5a53ee*_0x5a53ee,_0x496276=_0xa14a6f===0x0?0x0:((_0x53e651-_0x41cc72[_0x38be97(0x340)])*_0x2a64c3+(_0x1194d3-_0x41cc72['startY'])*_0x5a53ee)/_0xa14a6f,_0x239ede=Math['min'](0x1,Math[_0x38be97(0x2e5)](0x0,_0x496276)),_0x35d90f=_0x41cc72[_0x38be97(0x340)]+_0x239ede*_0x2a64c3,_0x2169c4=_0x41cc72[_0x38be97(0x1fa)]+_0x239ede*_0x5a53ee;return{'axis':_0x41cc72['axis'],'distance':Math[_0x38be97(0x31a)](_0x53e651-_0x35d90f,_0x1194d3-_0x2169c4),'normalizedPosition':_0x239ede};},eventViewportPoint=(_0x4bd115,_0x51e4df,_0x23f101)=>{const _0x462df5=_0x5d7726;let _0x5a1521=_0x51e4df[_0x462df5(0x19a)]();return[_0x5a1521[_0x462df5(0x293)]===0x0?0x0:(_0x4bd115[_0x462df5(0x297)]-_0x5a1521[_0x462df5(0x32c)])*_0x23f101[_0x462df5(0x25b)]/_0x5a1521[_0x462df5(0x293)],_0x5a1521[_0x462df5(0x38f)]===0x0?0x0:(_0x4bd115[_0x462df5(0x32f)]-_0x5a1521[_0x462df5(0x2bf)])*_0x23f101[_0x462df5(0x3ad)]/_0x5a1521['height']];},realAxisPosition=(_0x31eb08,_0x27976e,_0x1cf21f)=>{const _0x110408=_0x5d7726;let _0x7f673d=_0x31eb08[_0x110408(0x37b)];return normalizedToVolumeAxisValue(_0x27976e==='x'?_0x7f673d[_0x110408(0xf1)]:_0x27976e==='y'?_0x7f673d[_0x110408(0x3b6)]:_0x7f673d[_0x110408(0x404)],_0x1cf21f);};var SliceInteractionController=class{['element'];[_0x5d7726(0x39b)];[_0x5d7726(0x11d)];[_0x5d7726(0x29e)];[_0x5d7726(0x2aa)];['onInteractionStart'];[_0x5d7726(0x2bc)];[_0x5d7726(0x2ae)]=null;[_0x5d7726(0x2a1)]=null;[_0x5d7726(0x110)]=!0x1;constructor(_0x24c43c,_0x4f3335,_0x51b1d0,_0x55bb88={}){const _0x2041ab=_0x5d7726;this[_0x2041ab(0x1fd)]=_0x24c43c,this['state']=_0x4f3335,this[_0x2041ab(0x11d)]=_0x51b1d0,this[_0x2041ab(0x29e)]=_0x55bb88[_0x2041ab(0x1fc)]??0xa,this[_0x2041ab(0x2aa)]=_0x55bb88[_0x2041ab(0x12a)]??0x4,this['onInteractionStart']=_0x55bb88[_0x2041ab(0x399)],this[_0x2041ab(0x2bc)]=_0x55bb88[_0x2041ab(0x2bc)];}[_0x5d7726(0x3fb)](){const _0x243713=_0x5d7726;this['initialized']||(this[_0x243713(0x110)]=!0x0,this[_0x243713(0x1fd)]['addEventListener'](_0x243713(0x2b2),this['handlePointerDown'],!0x0),this[_0x243713(0x1fd)]['addEventListener'](_0x243713(0x394),this[_0x243713(0xeb)],!0x0),this[_0x243713(0x1fd)][_0x243713(0x193)](_0x243713(0x379),this[_0x243713(0x24f)],!0x0),window[_0x243713(0x193)]('pointermove',this[_0x243713(0x2fd)],!0x0),window[_0x243713(0x193)](_0x243713(0x367),this[_0x243713(0x1f1)],!0x0),window[_0x243713(0x193)](_0x243713(0x213),this[_0x243713(0x1f1)],!0x0));}['beginLockedSliceDrag'](_0x585176,_0x25706b){const _0x26fa3=_0x5d7726;let _0x30ee46=this[_0x26fa3(0x39b)][_0x26fa3(0x2c2)][_0x26fa3(0x314)](_0x25e0e8=>_0x25e0e8['id']===_0x585176);_0x30ee46&&(this['activePointer']={'kind':_0x26fa3(0x2ca),'axis':_0x30ee46[_0x26fa3(0x24c)],'pointerId':_0x25706b['pointerId'],'sliceId':_0x585176,'startX':_0x25706b[_0x26fa3(0x297)],'startY':_0x25706b[_0x26fa3(0x32f)],'moved':!0x1},this[_0x26fa3(0x399)]?.(),_0x25706b[_0x26fa3(0x1b4)](),_0x25706b[_0x26fa3(0x1dd)]());}[_0x5d7726(0x416)](){const _0x39fbdf=_0x5d7726;this['initialized']&&(this[_0x39fbdf(0x110)]=!0x1,this[_0x39fbdf(0x1fd)][_0x39fbdf(0x3cc)]('pointerdown',this['handlePointerDown'],!0x0),this[_0x39fbdf(0x1fd)]['removeEventListener'](_0x39fbdf(0x394),this[_0x39fbdf(0xeb)],!0x0),this[_0x39fbdf(0x1fd)][_0x39fbdf(0x3cc)]('pointerleave',this[_0x39fbdf(0x24f)],!0x0),window[_0x39fbdf(0x3cc)](_0x39fbdf(0x394),this[_0x39fbdf(0x2fd)],!0x0),window[_0x39fbdf(0x3cc)](_0x39fbdf(0x367),this['handlePointerUp'],!0x0),window[_0x39fbdf(0x3cc)](_0x39fbdf(0x213),this['handlePointerUp'],!0x0),this[_0x39fbdf(0x2ae)]&&this[_0x39fbdf(0x2bc)]?.(),this[_0x39fbdf(0x2ae)]=null,this[_0x39fbdf(0x2a1)]=null,this[_0x39fbdf(0x39b)][_0x39fbdf(0x34f)]());}[_0x5d7726(0x31c)](_0x4cfa30,_0x216897){const _0x2621f4=_0x5d7726;let _0x4d807b=this[_0x2621f4(0x11d)]();if(!_0x4d807b)return null;let [_0x5aacba,_0x39284a]=eventViewportPoint(_0x4cfa30,this[_0x2621f4(0x1fd)],_0x4d807b),_0x5b43e8=this[_0x2621f4(0x39b)]['toolMode'];if(_0x5b43e8===null)return null;let _0x54d5e5=(_0x216897?[_0x216897]:_0x5b43e8==='auto'?['x','y','z']:[_0x5b43e8])[_0x2621f4(0x3ef)](_0x5ed530=>projectAxis(_0x5ed530,_0x4d807b))[_0x2621f4(0x28d)](_0x86a4c3=>_0x86a4c3!==null)[_0x2621f4(0x3ef)](_0x326fb6=>hitProjectedAxis(_0x326fb6,_0x5aacba,_0x39284a));if(_0x54d5e5[_0x2621f4(0x1bc)]===0x0)return null;_0x54d5e5['sort']((_0x46b5dd,_0x34ceb0)=>_0x46b5dd[_0x2621f4(0x180)]-_0x34ceb0[_0x2621f4(0x180)]);let _0x3999a5=_0x54d5e5[0x0];if(!_0x216897&&this[_0x2621f4(0x2a1)]){let _0x425d34=_0x54d5e5[_0x2621f4(0x314)](_0x4846e9=>_0x4846e9['axis']===this[_0x2621f4(0x2a1)]);_0x425d34&&_0x425d34[_0x2621f4(0x180)]<=_0x3999a5[_0x2621f4(0x180)]+this['axisHysteresis']&&(_0x3999a5=_0x425d34);}return!_0x216897&&_0x3999a5['distance']>this[_0x2621f4(0x29e)]?null:_0x3999a5;}['applyHit'](_0xbccf3e,_0x2ad3a6){const _0xed070f=_0x5d7726;let _0x4f4f18=realAxisPosition(this['state'],_0xbccf3e[_0xed070f(0x24c)],_0xbccf3e[_0xed070f(0x225)]);_0x2ad3a6?this[_0xed070f(0x39b)]['updateLockedSlice'](_0x2ad3a6,_0x4f4f18):this[_0xed070f(0x39b)][_0xed070f(0x234)](_0xbccf3e[_0xed070f(0x24c)],_0x4f4f18),this[_0xed070f(0x2a1)]=_0xbccf3e['axis'];}[_0x5d7726(0x3b0)]=_0x4879ff=>{const _0x5d3013=_0x5d7726;if(_0x4879ff['button']!==0x0||this[_0x5d3013(0x2ae)])return;let _0x3d750b=this[_0x5d3013(0x31c)](_0x4879ff);_0x3d750b&&(this[_0x5d3013(0x18e)](_0x3d750b),this['activePointer']={'kind':_0x5d3013(0x37f),'axis':_0x3d750b['axis'],'pointerId':_0x4879ff[_0x5d3013(0xf4)],'startX':_0x4879ff['clientX'],'startY':_0x4879ff['clientY'],'moved':!0x1},this[_0x5d3013(0x399)]?.(),this[_0x5d3013(0x1fd)][_0x5d3013(0x1ac)]?.(_0x4879ff[_0x5d3013(0xf4)]),_0x4879ff['preventDefault'](),_0x4879ff[_0x5d3013(0x1dd)]());};[_0x5d7726(0xeb)]=_0x32a040=>{const _0x563cc4=_0x5d7726;if(this[_0x563cc4(0x2ae)])return;let _0x537676=this[_0x563cc4(0x31c)](_0x32a040);if(!_0x537676){this['previousAxis']=null,this[_0x563cc4(0x39b)][_0x563cc4(0x34f)]();return;}this[_0x563cc4(0x18e)](_0x537676);};[_0x5d7726(0x2fd)]=_0x70031f=>{const _0x242c00=_0x5d7726;let _0x29ef72=this[_0x242c00(0x2ae)];if(!_0x29ef72||_0x29ef72[_0x242c00(0xf4)]!==_0x70031f[_0x242c00(0xf4)])return;let _0x468c9b=this[_0x242c00(0x31c)](_0x70031f,_0x29ef72[_0x242c00(0x24c)]);_0x468c9b&&(Math['hypot'](_0x70031f['clientX']-_0x29ef72[_0x242c00(0x340)],_0x70031f[_0x242c00(0x32f)]-_0x29ef72[_0x242c00(0x1fa)])>0x4&&(_0x29ef72['moved']=!0x0),this['applyHit'](_0x468c9b,_0x29ef72['sliceId']),_0x70031f[_0x242c00(0x1b4)](),_0x70031f[_0x242c00(0x1dd)]());};[_0x5d7726(0x1f1)]=_0x31538e=>{const _0x13fb7f=_0x5d7726;let _0x51e510=this[_0x13fb7f(0x2ae)];!_0x51e510||_0x51e510[_0x13fb7f(0xf4)]!==_0x31538e[_0x13fb7f(0xf4)]||(_0x51e510[_0x13fb7f(0x120)]===_0x13fb7f(0x37f)&&!_0x51e510[_0x13fb7f(0x3ce)]&&this[_0x13fb7f(0x39b)]['lockPreview'](),this[_0x13fb7f(0x1fd)][_0x13fb7f(0x281)]?.(_0x31538e[_0x13fb7f(0xf4)])&&this[_0x13fb7f(0x1fd)][_0x13fb7f(0x1f7)](_0x31538e[_0x13fb7f(0xf4)]),this[_0x13fb7f(0x2ae)]=null,this[_0x13fb7f(0x2bc)]?.(),_0x31538e[_0x13fb7f(0x1b4)](),_0x31538e[_0x13fb7f(0x1dd)]());};[_0x5d7726(0x24f)]=()=>{const _0x107452=_0x5d7726;this[_0x107452(0x2ae)]||this[_0x107452(0x39b)][_0x107452(0x34f)]();};};function _0x5873(){const _0x55d829=['RENDER_ATTACHMENT','sliceResources','brickScheduleDirty','min','has','shape','374903uxRzQZ','sliceState','coordinate',',\x20size=','configureSourceResources','max','removeSlice','add','overlayLinePipeline','submit','autoFrameCount','sort','transform','zoomSpeed','volume\x20metadata\x20params','writeBuffer','residentByLogicalIndex','forEach','cachedSlices','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','halo','validation','display','pageTableBuffer','createCommandEncoder','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','logicalBrickCount','uploadPump','memoryLimitBytes','handleWindowPointerMove','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','fragmentMain','切面位置必须是有限数。','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','updateSlice','volume\x20slice\x20','Volume\x20Y\x20axis','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','volume\x20scene\x20geometry\x20pass','skippedSampleCount','now','function','volume\x20always\x20visible\x20pass','454605FMScgR','getAtlas','previousContainerPosition','far','mouse','scene','atlasViews','find','adapter','Module','3px\x206px','不支持的\x20hex\x20颜色格式:\x20','rgb\x20颜色通道数量不正确:\x20','hypot','lockPreview','findAxisHit','destroyed','uploadedBrickCount','rejectPendingBrickUploads','getMappedRange','contextmenu','cartesian','unconfigure','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','\x0a@group(0)\x20@binding(0)\x20var\x20atlas:\x20texture_storage_3d<r32float,\x20write>;\x0a\x0a@compute\x20@workgroup_size(4,\x204,\x204)\x0afn\x20main(@builtin(global_invocation_id)\x20invocation:\x20vec3u)\x20{\x0a\x20\x20\x20\x20let\x20dimensions\x20=\x20textureDimensions(atlas);\x0a\x20\x20\x20\x20if\x20(all(invocation\x20<\x20dimensions))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(atlas,\x20vec3i(invocation),\x20vec4f(0.0));\x0a\x20\x20\x20\x20}\x0a}\x0a','flushBrickSchedule','\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','handleFrameAvailable','colorInputs','createTextNode','subscribe','left','maxBufferSize','slices','clientY','clearLockedSlices','camera','cursor','performance','getCurrentTexture','loadBrick','keys','geometryBindGroup','VolumeCamera','setSource','setAspect','startsWith','destroyResources','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','volume\x20scene\x20frame','startX','createSliceState','transferResources','volume\x20atlas\x20clear\x20pipeline','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','source','createTexture','resources','\x20count','setFrameAvailableCallback','updateLockedSlice','frameRequest','desiredKeys','volumeCamera','alignItems','clearPreview','step','logicalIndex','uploadBatchCount','#fff','getCanvas','2889lDUbka','lost','createLayout','atlas','depth32float','\x20无效。','requestAdapter','renderer','colorStops','setPipeline','volume\x20atlas\x20bind\x20group','cameraState','getSceneParamsBuffer','prepareBrickUpload','getContext','style','always-visible','finish','pointerup','个色标范围的\x20min\x20必须小于\x20max','createGpuResources','opacity','atlasTextures','\x20必须包含十六个有限数值。','getUploadStagingBuffer','interactionElement','writePageEntry','delete','mixed','createVolumeScene','isFinite','cos','rgba(','shift','setSlices','FRAGMENT','pointerleave','getPreferredCanvasFormat','axisDefinitions','xStart','volumeBindGroupLayout','4px','preview','trim','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','setAttribute','timeIndex','lastTimingFrameTimestamp','destroyBuffers','stepLength','createBuffer','\x20必须是非负有限数值。','line-list','countY','setToolMode','read-only-storage','AbortError','asin','height','volume\x20brick\x20upload\x20batch\x20flush','volume-bounds','notify','VERTEX','pointermove','float32x3','markerOverlay','font','autoFrameIntervalTotal','onInteractionStart','volume\x20atlas\x20clear','state','buffer','residentBySlotIndex','path','drawSlices','Scene\x20mesh\x20','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','color','fovYDegrees','getDevice','setBindGroup','plateColor','r32float','.\x20WebGPU\x20体积设备已丢失。','verticalScale','recreateSceneBindGroup','volume\x20opacity\x20stop\x20values','Maximum\x20locked\x20slice\x20count\x20is\x20','viewportHeight','geometryBindGroupLayout','one','handlePointerDown','isNaN','volume\x20transfer\x20bind\x20group','queue','firstChild','pendingKeys','yAxis','getVolumeParamsBuffer','Volume\x20chunk\x20requires\x20','limits','coordinateSystem','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','cachedAxes','listeners','heights','format','from','normalizationMeters','uploadGeneration','catch','syncLockedMarkers','getTransferBindGroupLayout','position','smooth','perspective','volume\x20frame\x20readback','maxLockedSlices\x20必须是正整数。','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','removeEventListener','navigationMode','moved','clipMaximum','one-minus-src-alpha','valuesEqual','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x20values:\x20array<vec4u>\x20}\x0astruct\x20FloatValues\x20{\x20values:\x20array<f32>\x20}\x0astruct\x20Colors\x20{\x20values:\x20array<vec4f>\x20}\x0astruct\x20SliceParams\x20{\x0a\x20\x20\x20\x20data:\x20vec4f,\x0a\x20\x20\x20\x20plateColor:\x20vec4f,\x0a}\x0astruct\x20VolumeSample\x20{\x20value:\x20f32,\x20valid:\x20bool\x20}\x0a\x0astruct\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20modelPosition:\x20vec3f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a@group(3)\x20@binding(0)\x20var<uniform>\x20slice:\x20SliceParams;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(remainder\x20-\x20y\x20*\x20volume.atlasSlots.x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz)\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u)));\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(baseVoxel)\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(baseVoxel,\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom\x20=\x20mix(mix(c000.value,\x20c100.value,\x20fraction.x),\x20mix(c010.value,\x20c110.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20let\x20top\x20=\x20mix(mix(c001.value,\x20c101.value,\x20fraction.x),\x20mix(c011.value,\x20c111.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(bottom,\x20top,\x20fraction.z));\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20getPlanePosition(axis:\x20u32,\x20planePosition:\x20f32,\x20corner:\x20vec2f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(axis\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(planePosition,\x20corner.x,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(axis\x20==\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(corner.x,\x20planePosition,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20vec3f(corner.x,\x20corner.y,\x20planePosition);\x0a}\x0a\x0afn\x20getCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20corners\x20=\x20array<vec2f,\x206>(\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x200.0),\x20vec2f(1.0,\x200.0),\x20vec2f(0.0,\x201.0),\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x201.0),\x20vec2f(1.0,\x200.0),\x20vec2f(1.0,\x201.0)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20corners[vertexIndex];\x0a}\x0a\x0afn\x20getTessellatedCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20gridSize\x20=\x2032u;\x0a\x20\x20\x20\x20let\x20cellIndex\x20=\x20vertexIndex\x20/\x206u;\x0a\x20\x20\x20\x20let\x20cellX\x20=\x20cellIndex\x20%\x20gridSize;\x0a\x20\x20\x20\x20let\x20cellY\x20=\x20cellIndex\x20/\x20gridSize;\x0a\x20\x20\x20\x20return\x20(vec2f(f32(cellX),\x20f32(cellY))\x20+\x20getCorner(vertexIndex\x20%\x206u))\x20/\x20f32(gridSize);\x0a}\x0a\x0afn\x20volumeToWorld(position:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transformed\x20=\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20ecef\x20-\x20scene.geographic0.yzw;\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20let\x20modelPosition\x20=\x20getPlanePosition(u32(slice.data.x),\x20slice.data.y,\x20getTessellatedCorner(vertexIndex));\x0a\x20\x20\x20\x20let\x20clipPosition\x20=\x20scene.viewProjection\x20*\x20vec4f(volumeToWorld(modelPosition),\x201.0);\x0a\x20\x20\x20\x20return\x20SliceVertexOutput(clipPosition,\x20modelPosition);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20SliceVertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolume(input.modelPosition);\x0a\x20\x20\x20\x20let\x20plateAlpha\x20=\x20slice.plateColor.a;\x0a\x20\x20\x20\x20let\x20platePremultiplied\x20=\x20slice.plateColor.rgb\x20*\x20plateAlpha;\x0a\x0a\x20\x20\x20\x20if\x20(!sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plateAlpha\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(platePremultiplied,\x20plateAlpha);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20color.a\x20*\x20sampleOpacity(sample.value)\x20*\x20slice.data.z;\x0a\x20\x20\x20\x20//\x20彩色数据覆盖白色透明底板,二者在同一\x20fragment\x20中合成以避免重合面的深度冲突。\x0a\x20\x20\x20\x20//\x20Colored\x20data\x20is\x20composited\x20over\x20the\x20translucent\x20white\x20plate\x20in\x20one\x20fragment\x20to\x20avoid\x20coplanar\x20depth\x20conflicts.\x0a\x20\x20\x20\x20let\x20outputAlpha\x20=\x20alpha\x20+\x20plateAlpha\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20color.rgb\x20*\x20alpha\x20+\x20platePremultiplied\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20return\x20vec4f(outputColor,\x20outputAlpha);\x0a}\x0a','touch','resourceRebuildCount','getStepLength','sceneTrianglePipeline','colorStopCount','orthographic','findIndex','key','skippedCells','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','Volume\x20slice\x20ID\x20','atan2','pushErrorScope','updateTransferResources','矩阵不可逆。','pendingBrickUploads','bindGroup','删除切面','round','createComputePipeline','tan','minimum','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','frameInFlight','readRange','statistics','bindControls','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','map','lastSubmittedFrameTimestamp','0\x202px','isInteracting','next','axes','overlaySlicePipeline','uniform','beginRenderPass','markers','readChunk','depthMode','initialize','volume\x20brick\x20atlas\x20','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','Latitude\x20/\x20纬度','high-performance','vertexMain','volume\x20brick\x20reusable\x20upload\x20staging','create','brickWidth','zAxis','scheduleBricks','draw','\x20noData\x20必须是有限数值或\x20NaN。','相机宽高比必须是大于\x200\x20的有限数。','路线剖面\x20','depthView','getGeometryBindGroupLayout','createResource','3399520fbiCke','cacheOnSuccess','descriptors','backend','volumeParamsBuffer','premultiplied','pointerType','cachedProfiles','mode','destroy','flatMap','click','aspect','个色标范围不能是NaN','createPipelineLayout','panSpeed','handlePointerMove','transferBindGroup','resetBrickRequests','setSliceTool','target','captureFrame','xAxis','recordFrameInterval','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','pointerId','verticalScale\x20必须是大于\x200\x20的有限数。','endX','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','values','brickDepth','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','center','\x20的\x20path\x20包含非有限坐标。','\x20端点必须是有限数值。','resize','2289462TQZYpY','volume\x20raymarch\x20shader','createShaderModule','volume\x20scene\x20mesh\x20','type','路线剖面\x20id\x20不能为空。','end','Volume\x20chunk\x20','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','releaseGpuResources','\x20is\x20invalid:\x20','toStringTag','viewProjection','encodeOverlayPass','currentPreview','push','absolute','initialized','sliceDepthMode','sin','profileResources','projection','Volume','maximumPitch','heightScaled','Volume\x20X\x20axis','\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。','createGeographicVolumeLayout','geographicTransform','colorValuesBuffer','getFrame','countZ','showDebugGeometry','kind','generation','volumeBindGroup','levelStart','getTransferResources','clipBox','div','sliceInteraction','includes','actualFrameIntervalMilliseconds','axisHysteresisPixels','message','count','Volume\x20requires\x20','minimumPitch','sceneParamsBuffer','Volume\x20chunk\x20request\x20was\x20aborted.\x20体积块请求已取消。','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','getAtlasTexture','splice','setVertexBuffer','bindSliceInteraction','centerEcefScaled','createLockedMarker','capacity','\x20包含多个采样点时步长不能为零。','syncPreview','textContent','createBindGroup','beginInteraction','colorMode','slicePlateColor','watchDeviceLost','start','\x20至少需要两个高度层。','floor','replace','xCount','configureModel','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','semiMinorAxisScaled','1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)','chunk','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','volume\x20scene\x20params','.\x20体积逻辑砖块索引无效。','requestRender','geographic-wgs84','Volume\x20timeCount','sceneSlicePipeline','border','opacityStops','atlasIndex','1337536AeJRfH','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','error','toFixed','pixelRatioCap','uploadBrick','autoQuality','\x20requires\x20','.\x20体积时间索引越界。','depth','createView','getPageTableBuffer','managed','memoryTargetBytes','drawMeshes','TEXTURE_BINDING','volume\x20opacity\x20stop\x20alphas','uniformUpdateCount','maximumDistance','prepared','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','near','volume\x20slice\x20shader','store','requestDevice','opacityBuffer','formatPosition','Count','orbit','ecefToGeographicVolumeLocal','interactionStepScale','inverseModelMatrix','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','BYTES_PER_ELEMENT','.\x20体积砖块数据长度不正确。','interactionRenderScale','gap','MAP_READ','onLimitReached','context','minY','defineProperty','viewProjectionMatrix','distance','slotCountZ','signal','createRenderPipeline','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','baseModelMatrix','occupied','getVolumeBindGroupLayout','eventDisposers','renderDirty','memoryHardLimitBytes','onSliceError','minZ','slotCount','applyHit','main','nextId','canvas','acquireSlot','addEventListener','vertices','positions','flushSliceState','lastFrameTimeMilliseconds','setState','residentBrickCount','getBoundingClientRect','bindSliceState','cameraPosition','overlayTrianglePipeline','update','dolly','sceneBindGroupLayout','wgs84','all','revision','countX','slice','\x20values\x20but\x20received\x20','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','getSliceBindGroupLayout','ceil','powerPreference','gpu','setPointerCapture','clear','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','READ','background','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','slotCountY','submittedFrameCount','preventDefault','.\x20创建\x20WebGPU\x20体积管线失败。','indices','uploadStagingBuffer','inverseViewProjection','getSliceResources','aria-label','UNIFORM','length','static','\x20must\x20be\x20a\x20positive\x20integer.\x20','none','ready','Volume\x20slice\x20','brickHeight','parseInt','lastUsedFrame','10216KAxopy','loadedKeys','value','sourceYStart','createValues','endInteraction','4608fITLBz','slotIndex','getAttachments','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','brickSortCount','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','range','volume\x20geometry\x20bind\x20group','createElement','WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。','volume\x20slice\x20bind\x20group\x20layout','Height\x20/\x20高度','sceneBindGroup','writeVolumeParams','renderMode','maxTextureDimension3D','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','.\x20体积分块数值数量与尺寸不一致。','stopPropagation','volumeMetadata','pointerEvents','volume\x20frame\x20capture','正交相机高度和宽高比必须大于\x200。','maxLockedSlices','colorBuffer','pageTableValues','quality','相机宽高比必须大于\x200。','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','copyBufferToTexture','sourceYCount','MAP_WRITE','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','interactionController','some','COPY_DST','remove','handlePointerUp','scheduleUploadPump','triangle-list','updateAutoQuality','getInteractionKind','onSlicesChange','releasePointerCapture','set','getBindGroupLayout','startY','modelMatrix','hitTolerancePixels','element','opacityValuesBuffer','toUpperCase','transferBindGroupLayout','densityScale','uploadStagingBufferSize','\x20轴必须包含两个不同的有限端点。','\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20','onSubmittedWorkDone','abs','extent','WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。','atlasLayout','sourceY','byteLength','bufferOffset','rebuildProfiles','touchBricks','idle','slotCountX','getSceneBindGroupLayout','unmap','pointercancel','latitudeRadians','WRITE','overlayContainer','\x20只有一个采样点时端点必须相等。','maximumPitchDegrees','sourceGeneration','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','subarray','transparent','balanced','sliceBindGroupLayout','brickScheduleCount','volume\x20color\x20stop\x20colors','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','maximum','inherit','entries','normalizedPosition','getProfileResources','frameIndex','正交相机高度必须大于\x200。','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','less','fill','bgra8unorm','encodeScenePass','volumeDimFactor','configureSource','dispatchWorkgroups','STORAGE','float32x4','minimumPitchDegrees','updatePreview','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','volume-axes','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','userSelect','endY','clearPageEntry','button','volume\x20atlas\x20bind\x20group\x20layout','device','attachments','topology','\x20range\x20is\x20invalid:\x20start=','reject','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','abort','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','noData','gpuBytes','\x20范围无效。','get','then','clientWidth','options','axis','configure','sceneDepthView','handlePointerLeave','flex','pan','透视相机参数无效。','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','getEffectiveQuality','load','hideAllMarkers','depthTexture','normalizedToVolumeAxisValue','level','previewMarker','viewportWidth','matrices','rowsPerImage','enqueueBrickUpload','metadata','visible','size','finally','requestBrickSchedule','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','encodePreparedBrickUpload','external','writeParams','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20','grab','layout','longitudeRadians','requestControllers','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','volumeAxisValueToNormalized','Longitude\x20/\x20经度','minX','upload','opacityStopCount','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','rotateSpeed','pendingSliceSnapshot','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','clipMinimum','getFormat','name','container','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','render','12jzYaNL','append','maxZ','hasPointerCapture','profiles','composite','setProfiles','createProjectionMatrix','clearAtlasTexture','vertexCount',',\x20count=','lockSlice','maximumUploadBatchBytes','lifecycleState','volume\x20color\x20stop\x20values','filter','minimumDistance','auto','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','isInteger','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','width','volume\x20scene\x20mesh\x20shader','counts','createBindGroupLayout','clientX','384XVmirs','activeInteractions','renderScale','0.72','beginLockedSliceDrag','setAxes','hitTolerance','COPY_SRC','levelCount','previousAxis','pointer','setTransfer','snapshot','encodeVolumePass','semiMajorAxisScaled','volume\x20atlas\x20clear\x20pass','sceneLinePipeline','toolMode','axisHysteresis','getAxisResources','Volume\x20Z\x20axis','popErrorScope','activePointer','\x20endpoints\x20must\x20be\x20finite.\x20','atlasCapacity','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','pointerdown','unsubscribe','initializationGeneration','多采样点切面轴的起止值不能相等。','volumeDimFactor\x20必须位于\x200\x20到\x201。','\x20必须是正整数。','volume-slice-','positionMarker','wheel','beginComputePass','onInteractionEnd','Volume\x20brick\x20','coreRange','top','clientHeight','resolve','lockedSlices','volumePipeline','mapAsync','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','timeCount','touchAction','bytesPerRow','volume\x20atlas\x20clear\x20shader','locked','Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。','\x20的\x20heights\x20包含非有限高度。','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','frameAvailableCallback','webgpu','\x20必须是正有限数值。','zIndex','centerEcef','origin','sqrt','cachedBricks','不支持的颜色格式:\x20','axisResources','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','setCamera'];_0x5873=function(){return _0x55d829;};return _0x5873();}const axisLabel=_0xd7b822=>_0xd7b822[_0x5d7726(0x1ff)](),defaultFormatPosition=(_0x898058,_0x2563e7)=>axisLabel(_0x898058)+'\x20'+Number(_0x2563e7[_0x5d7726(0x158)](0x4)),getAxisDefinition=(_0x2520bf,_0x3d97eb)=>{const _0x3b80cb=_0x5d7726;let _0x1683d6=_0x2520bf['axisDefinitions'];return _0x3d97eb==='x'?_0x1683d6[_0x3b80cb(0xf1)]:_0x3d97eb==='y'?_0x1683d6['yAxis']:_0x1683d6[_0x3b80cb(0x404)];},markerModelPoint=(_0x17f6c0,_0x223cf7)=>{const _0x21b4c7=_0x5d7726;let _0x2391f8=volumeAxisValueToNormalized(getAxisDefinition(_0x17f6c0,_0x223cf7[_0x21b4c7(0x24c)]),_0x223cf7['position']);return _0x223cf7[_0x21b4c7(0x24c)]==='x'?[_0x2391f8,0x0,0x0]:_0x223cf7[_0x21b4c7(0x24c)]==='y'?[0x0,_0x2391f8,0x0]:[0x0,0x0,_0x2391f8];},applyMarkerBaseStyle=_0x4d7478=>{const _0x453f14=_0x5d7726;_0x4d7478[_0x453f14(0x364)]['position']=_0x453f14(0x10f),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x2d1)]='1',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x2f6)]=_0x453f14(0x250),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x34e)]=_0x453f14(0xfb),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x179)]=_0x453f14(0x37e),_0x4d7478['style']['padding']=_0x453f14(0x317),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x152)]=_0x453f14(0x149),_0x4d7478[_0x453f14(0x364)]['borderRadius']='4px',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x3a2)]=_0x453f14(0x353),_0x4d7478['style'][_0x453f14(0x1b0)]='rgb(17\x2024\x2039\x20/\x2082%)',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x397)]='12px/1.2\x20sans-serif',_0x4d7478['style']['whiteSpace']='nowrap',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x2ec)]='translate(-50%,\x20-100%)',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x238)]='none',_0x4d7478['style'][_0x453f14(0x2c7)]=_0x453f14(0x1bf);},createDeleteButton=()=>{const _0x555b13=_0x5d7726;let _0x280ca8=document[_0x555b13(0x1d3)](_0x555b13(0x23b));return _0x280ca8[_0x555b13(0x103)]=_0x555b13(0x23b),_0x280ca8[_0x555b13(0x13b)]='×',_0x280ca8[_0x555b13(0x382)](_0x555b13(0x1ba),_0x555b13(0x3e4)),_0x280ca8[_0x555b13(0x364)]['padding']=_0x555b13(0x3f1),_0x280ca8['style'][_0x555b13(0x152)]='0',_0x280ca8[_0x555b13(0x364)][_0x555b13(0x3a2)]=_0x555b13(0x223),_0x280ca8[_0x555b13(0x364)][_0x555b13(0x1b0)]=_0x555b13(0x21c),_0x280ca8[_0x555b13(0x364)][_0x555b13(0x332)]=_0x555b13(0x2a2),_0x280ca8;};var SliceMarkerOverlay=class{[_0x5d7726(0x27b)];[_0x5d7726(0x39b)];[_0x5d7726(0x11d)];['interactionController'];['formatPosition'];['markers']=new Map();['previousContainerPosition'];['unsubscribe'];['previewMarker']=null;constructor(_0x28fcc4,_0x20c63f,_0x3453f4,_0x2bfb02={}){const _0x249515=_0x5d7726;this[_0x249515(0x27b)]=_0x28fcc4,this['state']=_0x20c63f,this[_0x249515(0x11d)]=_0x3453f4,this[_0x249515(0x1ed)]=_0x2bfb02[_0x249515(0x1ed)],this[_0x249515(0x16f)]=_0x2bfb02[_0x249515(0x16f)]??defaultFormatPosition,this[_0x249515(0x30f)]=_0x28fcc4[_0x249515(0x364)][_0x249515(0x3c6)],getComputedStyle(_0x28fcc4)['position']===_0x249515(0x1bd)&&(_0x28fcc4[_0x249515(0x364)][_0x249515(0x3c6)]='relative'),this[_0x249515(0x2b3)]=_0x20c63f[_0x249515(0x32b)](()=>this[_0x249515(0x19e)]());}[_0x5d7726(0x19e)](){const _0x1a8558=_0x5d7726;let _0x4bc13f=this[_0x1a8558(0x39b)][_0x1a8558(0x2a4)];this[_0x1a8558(0x13a)](_0x4bc13f['preview']),this[_0x1a8558(0x3c4)](_0x4bc13f[_0x1a8558(0x2c2)]);let _0x435a90=this[_0x1a8558(0x11d)]();if(!_0x435a90){this[_0x1a8558(0x256)]();return;}_0x4bc13f['preview']&&this[_0x1a8558(0x25a)]&&this[_0x1a8558(0x2b9)](this['previewMarker'],_0x4bc13f[_0x1a8558(0x37f)],_0x435a90);for(let _0x21e24f of _0x4bc13f[_0x1a8558(0x2c2)]){let _0x529ead=this[_0x1a8558(0x3f8)][_0x1a8558(0x248)](_0x21e24f['id']);_0x529ead&&this[_0x1a8558(0x2b9)](_0x529ead,_0x21e24f,_0x435a90);}}[_0x5d7726(0x416)](){const _0x45c126=_0x5d7726;this[_0x45c126(0x2b3)](),this[_0x45c126(0x25a)]?.[_0x45c126(0x1f0)](),this['previewMarker']=null;for(let _0x1f1fc6 of this['markers'][_0x45c126(0xf8)]())_0x1f1fc6[_0x45c126(0x1f0)]();this[_0x45c126(0x3f8)]['clear'](),this[_0x45c126(0x27b)][_0x45c126(0x364)]['position']=this[_0x45c126(0x30f)];}[_0x5d7726(0x13a)](_0x220be0){const _0x7440a6=_0x5d7726;if(!_0x220be0){this['previewMarker']?.[_0x7440a6(0x1f0)](),this[_0x7440a6(0x25a)]=null;return;}this[_0x7440a6(0x25a)]||(this[_0x7440a6(0x25a)]=document[_0x7440a6(0x1d3)](_0x7440a6(0x126)),applyMarkerBaseStyle(this[_0x7440a6(0x25a)]),this['previewMarker'][_0x7440a6(0x364)][_0x7440a6(0x1df)]='none',this[_0x7440a6(0x25a)][_0x7440a6(0x364)][_0x7440a6(0x36a)]=_0x7440a6(0x29b),this['container'][_0x7440a6(0x27f)](this[_0x7440a6(0x25a)])),this[_0x7440a6(0x25a)][_0x7440a6(0x13b)]=this[_0x7440a6(0x16f)](_0x220be0[_0x7440a6(0x24c)],_0x220be0[_0x7440a6(0x3c6)]);}[_0x5d7726(0x3c4)](_0x50e851){const _0x18dc1a=_0x5d7726;let _0x100c10=new Set(_0x50e851[_0x18dc1a(0x3ef)](_0x30ed25=>_0x30ed25['id']));for(let [_0xc202a2,_0x445a26]of this['markers'])_0x100c10['has'](_0xc202a2)||(_0x445a26[_0x18dc1a(0x1f0)](),this[_0x18dc1a(0x3f8)][_0x18dc1a(0x370)](_0xc202a2));for(let _0x297ae7 of _0x50e851){let _0x4a1b0e=this[_0x18dc1a(0x3f8)][_0x18dc1a(0x248)](_0x297ae7['id']);_0x4a1b0e||(_0x4a1b0e=this['createLockedMarker'](_0x297ae7['id']),this[_0x18dc1a(0x3f8)][_0x18dc1a(0x1f8)](_0x297ae7['id'],_0x4a1b0e),this['container']['append'](_0x4a1b0e));let _0x3cdbd2=_0x4a1b0e[_0x18dc1a(0x3b4)];_0x3cdbd2&&(_0x3cdbd2['textContent']=this['formatPosition'](_0x297ae7[_0x18dc1a(0x24c)],_0x297ae7[_0x18dc1a(0x3c6)]));}}[_0x5d7726(0x137)](_0x2871cc){const _0x3b71e9=_0x5d7726;let _0x29e098=document[_0x3b71e9(0x1d3)](_0x3b71e9(0x126));applyMarkerBaseStyle(_0x29e098),_0x29e098['style'][_0x3b71e9(0x332)]=_0x3b71e9(0x26a),_0x29e098['append'](document[_0x3b71e9(0x32a)](''));let _0x2690c2=createDeleteButton();return _0x2690c2[_0x3b71e9(0x193)]('pointerdown',_0x4a022a=>_0x4a022a['stopPropagation']()),_0x2690c2[_0x3b71e9(0x193)](_0x3b71e9(0x418),_0x262be8=>{const _0x333f07=_0x3b71e9;_0x262be8[_0x333f07(0x1dd)](),this['state'][_0x333f07(0x2e6)](_0x2871cc);}),_0x29e098[_0x3b71e9(0x193)](_0x3b71e9(0x2b2),_0xae8c30=>this[_0x3b71e9(0x1ed)]?.[_0x3b71e9(0x29c)](_0x2871cc,_0xae8c30)),_0x29e098[_0x3b71e9(0x27f)](_0x2690c2),_0x29e098;}[_0x5d7726(0x2b9)](_0x2e1fd9,_0x1dfbf9,_0x16ba37){const _0x12c2f9=_0x5d7726;let _0x2c462d=projectPointToViewport(multiplyMatrices(_0x16ba37[_0x12c2f9(0x17f)],_0x16ba37[_0x12c2f9(0x1fb)]),markerModelPoint(this['state'],_0x1dfbf9),_0x16ba37[_0x12c2f9(0x25b)],_0x16ba37[_0x12c2f9(0x3ad)]);if(!_0x2c462d||_0x2c462d[0x2]<0x0||_0x2c462d[0x2]>0x1){_0x2e1fd9[_0x12c2f9(0x364)][_0x12c2f9(0x2f6)]=_0x12c2f9(0x1bf);return;}_0x2e1fd9['style'][_0x12c2f9(0x2f6)]=_0x12c2f9(0x250),_0x2e1fd9[_0x12c2f9(0x364)][_0x12c2f9(0x32c)]=_0x2c462d[0x0]+'px',_0x2e1fd9[_0x12c2f9(0x364)][_0x12c2f9(0x2bf)]=_0x2c462d[0x1]+'px';}[_0x5d7726(0x256)](){const _0x54148b=_0x5d7726;this[_0x54148b(0x25a)]&&(this[_0x54148b(0x25a)][_0x54148b(0x364)][_0x54148b(0x2f6)]=_0x54148b(0x1bf));for(let _0x2a27ed of this['markers'][_0x54148b(0xf8)]())_0x2a27ed['style'][_0x54148b(0x2f6)]='none';}};const clamp=(_0x3a9cf2,_0x5372b8)=>Math[_0x5d7726(0x2dd)](_0x5372b8-0x1,Math['max'](0x0,_0x3a9cf2)),createPhysicalBrickValues=(_0x2eccc4,_0x5408e3,_0x1f2ba1,_0x511277)=>{const _0x13b938=_0x5d7726;validateVolumeChunk(_0x2eccc4,_0x511277,_0x1f2ba1['readRange']);let _0x5785da=_0x5408e3[_0x13b938(0x293)]+_0x5408e3[_0x13b938(0x2f4)]*0x2,_0x3401f4=_0x5408e3[_0x13b938(0x38f)]+_0x5408e3[_0x13b938(0x2f4)]*0x2,_0x150064=_0x5408e3[_0x13b938(0x15e)]+_0x5408e3[_0x13b938(0x2f4)]*0x2,_0x58ed20=new Float32Array(_0x5785da*_0x3401f4*_0x150064);for(let _0x274c64=0x0;_0x274c64<_0x150064;_0x274c64+=0x1){let _0x50e5f0=clamp(_0x1f2ba1['coreRange'][_0x13b938(0x1c8)]+_0x274c64-_0x5408e3['halo'],_0x2eccc4[_0x13b938(0x404)][_0x13b938(0x12c)])-_0x511277[_0x13b938(0x1d1)][_0x13b938(0x1c8)];for(let _0x316ab0=0x0;_0x316ab0<_0x3401f4;_0x316ab0+=0x1){let _0x2e9279=clamp(_0x1f2ba1[_0x13b938(0x2be)][_0x13b938(0x123)]+_0x316ab0-_0x5408e3[_0x13b938(0x2f4)],_0x2eccc4['yAxis'][_0x13b938(0x12c)])-_0x511277[_0x13b938(0x1d1)][_0x13b938(0x123)];for(let _0x58237c=0x0;_0x58237c<_0x5785da;_0x58237c+=0x1){let _0x3a5166=clamp(_0x1f2ba1['coreRange'][_0x13b938(0x37c)]+_0x58237c-_0x5408e3[_0x13b938(0x2f4)],_0x2eccc4[_0x13b938(0xf1)][_0x13b938(0x12c)])-_0x511277['range'][_0x13b938(0x37c)];_0x58ed20[(_0x274c64*_0x3401f4+_0x316ab0)*_0x5785da+_0x58237c]=_0x511277[_0x13b938(0xf8)][(_0x50e5f0*_0x511277[_0x13b938(0x38f)]+_0x2e9279)*_0x511277[_0x13b938(0x293)]+_0x3a5166];}}}return _0x58ed20;},normalizeColorStops=_0x1a816e=>{const _0x2c71b5=_0x5d7726;if(_0x1a816e[_0x2c71b5(0x1bc)]===0x0)throw Error('colorStops\x20不能为空');return _0x1a816e[_0x2c71b5(0x3ef)]((_0x9a5205,_0x3b85ee)=>{const _0xc11cc=_0x2c71b5;if(Number[_0xc11cc(0x3b1)](_0x9a5205[_0xc11cc(0x2dd)])||Number[_0xc11cc(0x3b1)](_0x9a5205[_0xc11cc(0x2e5)]))throw TypeError('第'+(_0x3b85ee+0x1)+_0xc11cc(0xe8));if(_0x9a5205[_0xc11cc(0x2dd)]>=_0x9a5205[_0xc11cc(0x2e5)])throw Error('第'+(_0x3b85ee+0x1)+_0xc11cc(0x368));return{'min':_0x9a5205['min'],'max':_0x9a5205['max'],'color':parseRasterColor(_0x9a5205[_0xc11cc(0x3a2)])};})[_0x2c71b5(0x2eb)]((_0x1f394b,_0x31308a)=>_0x1f394b[_0x2c71b5(0x2dd)]-_0x31308a[_0x2c71b5(0x2dd)]);},parseRasterColor=_0x218c34=>{const _0x4a45d9=_0x5d7726;let _0x568ccf=_0x218c34[_0x4a45d9(0x380)]()['toLowerCase']();if(_0x568ccf[_0x4a45d9(0x33b)]('#'))return parseHexColor(_0x568ccf);if(_0x568ccf[_0x4a45d9(0x33b)](_0x4a45d9(0x375)))return parseRgbColor(_0x568ccf,!0x0);if(_0x568ccf[_0x4a45d9(0x33b)]('rgb('))return parseRgbColor(_0x568ccf,!0x1);throw Error(_0x4a45d9(0x2d6)+_0x218c34);},parseHexColor=_0x1b99c1=>{const _0x49c90b=_0x5d7726;if(_0x1b99c1['length']===0x4)return normalizeRgb(Number[_0x49c90b(0x1c3)](''+_0x1b99c1[0x1]+_0x1b99c1[0x1],0x10),Number['parseInt'](''+_0x1b99c1[0x2]+_0x1b99c1[0x2],0x10),Number[_0x49c90b(0x1c3)](''+_0x1b99c1[0x3]+_0x1b99c1[0x3],0x10),0x1);if(_0x1b99c1[_0x49c90b(0x1bc)]===0x7)return normalizeRgb(Number[_0x49c90b(0x1c3)](_0x1b99c1['slice'](0x1,0x3),0x10),Number['parseInt'](_0x1b99c1[_0x49c90b(0x1a5)](0x3,0x5),0x10),Number['parseInt'](_0x1b99c1[_0x49c90b(0x1a5)](0x5,0x7),0x10),0x1);throw Error(_0x49c90b(0x318)+_0x1b99c1);},parseRgbColor=(_0xfc9885,_0x478ea8)=>{const _0x3ca2a7=_0x5d7726;let _0x100a8b=_0xfc9885['match'](/^rgba?\(([^)]+)\)$/);if(!_0x100a8b)throw Error('不支持的\x20rgb\x20颜色格式:\x20'+_0xfc9885);let _0x2a799b=_0x100a8b[0x1]['split'](',')['map'](_0x466293=>_0x466293['trim']()),_0x4a4a77=_0x478ea8?0x4:0x3;if(_0x2a799b[_0x3ca2a7(0x1bc)]!==_0x4a4a77)throw Error(_0x3ca2a7(0x319)+_0xfc9885);return normalizeRgb(Number(_0x2a799b[0x0]),Number(_0x2a799b[0x1]),Number(_0x2a799b[0x2]),_0x478ea8?Number(_0x2a799b[0x3]):0x1);},normalizeRgb=(_0x48fb4f,_0x488208,_0x4b823d,_0x1c982c)=>{const _0x4d2286=_0x5d7726;if(!isValidRgbChannel(_0x48fb4f)||!isValidRgbChannel(_0x488208)||!isValidRgbChannel(_0x4b823d))throw Error(_0x4d2286(0x2fe));if(!Number[_0x4d2286(0x373)](_0x1c982c)||_0x1c982c<0x0||_0x1c982c>0x1)throw Error('Alpha\x20颜色通道必须在0\x20~\x201之间');return[_0x48fb4f/0xff,_0x488208/0xff,_0x4b823d/0xff,_0x1c982c];},isValidRgbChannel=_0x4a97bc=>Number[_0x5d7726(0x373)](_0x4a97bc)&&_0x4a97bc>=0x0&&_0x4a97bc<=0xff,validateStops=_0x1e28f3=>{const _0x5b2735=_0x5d7726;if(_0x1e28f3[_0x5b2735(0x1bc)]===0x0)throw Error('Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。');let _0x32bf2c=-0x1/0x0;for(let _0x1f961b of _0x1e28f3){if(!Number[_0x5b2735(0x373)](_0x1f961b[_0x5b2735(0x1c7)])||_0x1f961b[_0x5b2735(0x1c7)]<=_0x32bf2c)throw Error('Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。');if(!Number[_0x5b2735(0x373)](_0x1f961b[_0x5b2735(0x36a)])||_0x1f961b[_0x5b2735(0x36a)]<0x0||_0x1f961b[_0x5b2735(0x36a)]>0x1)throw Error(_0x5b2735(0x3dc));_0x32bf2c=_0x1f961b[_0x5b2735(0x1c7)];}},findTransferInterval=(_0x4ad39d,_0x263962)=>{const _0x3b4171=_0x5d7726;if(_0x4ad39d<=_0x263962[0x0])return[0x0,0x0,0x0];for(let _0x201469=0x1;_0x201469<_0x263962[_0x3b4171(0x1bc)];_0x201469+=0x1)if(_0x4ad39d<=_0x263962[_0x201469]){let _0x260b83=_0x263962[_0x201469]-_0x263962[_0x201469-0x1];return[_0x201469-0x1,_0x201469,_0x260b83===0x0?0x0:Math[_0x3b4171(0x2dd)](0x1,Math[_0x3b4171(0x2e5)](0x0,(_0x4ad39d-_0x263962[_0x201469-0x1])/_0x260b83))];}let _0x3aca43=_0x263962[_0x3b4171(0x1bc)]-0x1;return[_0x3aca43,_0x3aca43,0x0];},prepareWebgpuVolumeTransfer=(_0x10f343,_0x4ec7be)=>{const _0x241730=_0x5d7726;validateStops(_0x4ec7be);let _0x5d5cc8=normalizeColorStops([..._0x10f343]);return{'colorStops':_0x5d5cc8[_0x241730(0x417)]((_0x565412,_0x4c451d)=>{const _0x82c74=_0x241730;let _0x54761c=_0x5d5cc8[Math[_0x82c74(0x2dd)](_0x4c451d+0x1,_0x5d5cc8[_0x82c74(0x1bc)]-0x1)][_0x82c74(0x3a2)];return[{'value':_0x565412[_0x82c74(0x2dd)],'color':_0x565412[_0x82c74(0x3a2)]},{'value':_0x565412[_0x82c74(0x2e5)],'color':_0x54761c}];}),'opacityStops':_0x4ec7be[_0x241730(0x3ef)](_0x269f05=>({..._0x269f05}))};},sampleVolumeTransferColor=(_0x475ae2,_0x431741,_0x2a02bc,_0x477aed)=>{const _0x4dc029=_0x5d7726;if(!Number['isFinite'](_0x475ae2))return[0x0,0x0,0x0,0x0];let [_0x2fcd03,_0x402da9,_0x574b48]=findTransferInterval(_0x475ae2,_0x431741[_0x4dc029(0x3ef)](_0x298057=>_0x298057[_0x4dc029(0x1c7)])),_0x1d52c1=_0x431741[_0x2fcd03],_0x2e77be=_0x431741[_0x402da9],_0x20bf6b=_0x477aed===_0x4dc029(0x350)?0x0:_0x574b48;return[_0x1d52c1['color'][0x0]+(_0x2e77be[_0x4dc029(0x3a2)][0x0]-_0x1d52c1[_0x4dc029(0x3a2)][0x0])*_0x20bf6b,_0x1d52c1[_0x4dc029(0x3a2)][0x1]+(_0x2e77be[_0x4dc029(0x3a2)][0x1]-_0x1d52c1[_0x4dc029(0x3a2)][0x1])*_0x20bf6b,_0x1d52c1[_0x4dc029(0x3a2)][0x2]+(_0x2e77be['color'][0x2]-_0x1d52c1['color'][0x2])*_0x20bf6b,(_0x1d52c1['color'][0x3]+(_0x2e77be[_0x4dc029(0x3a2)][0x3]-_0x1d52c1[_0x4dc029(0x3a2)][0x3])*_0x20bf6b)*_0x2a02bc];},sampleVolumeTransferOpacity=(_0x1afdc8,_0x51a021,_0x53c5e3)=>{const _0x58de5c=_0x5d7726;if(!Number[_0x58de5c(0x373)](_0x1afdc8))return 0x0;let [_0x411672,_0x22ec32,_0x319cdd]=findTransferInterval(_0x1afdc8,_0x51a021[_0x58de5c(0x3ef)](_0x5c3d50=>_0x5c3d50[_0x58de5c(0x1c7)])),_0x33442e=_0x53c5e3==='step'?0x0:_0x319cdd;return _0x51a021[_0x411672][_0x58de5c(0x36a)]+(_0x51a021[_0x22ec32][_0x58de5c(0x36a)]-_0x51a021[_0x411672][_0x58de5c(0x36a)])*_0x33442e;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x5d7726(0x3c8),'fovYDegrees':0x2d,'near':0.01,'far':0x64}},IDENTITY_MATRIX=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],clamp01=_0x11f8bb=>Math[_0x5d7726(0x2dd)](0x1,Math[_0x5d7726(0x2e5)](0x0,_0x11f8bb)),qualityStepLength=_0x27439d=>_0x27439d==='performance'?0.012:_0x27439d===_0x5d7726(0x1e5)?0.0025:_0x27439d===_0x5d7726(0x21d)?0.005:0.006,qualityUploadCount=_0x8668c6=>_0x8668c6===_0x5d7726(0x333)?0x8:_0x8668c6==='quality'?0x2:0x4,nextAutoQuality=(_0x4396dd,_0x36991f)=>_0x36991f>0x18?_0x4396dd===_0x5d7726(0x1e5)?_0x5d7726(0x21d):_0x5d7726(0x333):_0x36991f<0xe?_0x4396dd===_0x5d7726(0x333)?_0x5d7726(0x21d):_0x5d7726(0x1e5):_0x4396dd,validatePositiveOption=(_0x118bf9,_0x3563f1)=>{const _0x4b6bb9=_0x5d7726;if(!Number['isFinite'](_0x118bf9)||_0x118bf9<=0x0)throw Error(_0x3563f1+_0x4b6bb9(0x204)+_0x3563f1+'\x20必须是大于\x200\x20的有限数。');return _0x118bf9;},normalizeClipBox=(_0xa2ccd1,_0x3b8065)=>{const _0x334fab=_0x5d7726;if(!_0x3b8065)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x4d4a6e=clamp01(volumeAxisValueToNormalized(_0xa2ccd1['metadata'][_0x334fab(0xf1)],_0x3b8065[_0x334fab(0x271)])),_0xdaa20a=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)][_0x334fab(0xf1)],_0x3b8065['maxX'])),_0x9094f4=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)][_0x334fab(0x3b6)],_0x3b8065[_0x334fab(0x17d)])),_0x281513=clamp01(volumeAxisValueToNormalized(_0xa2ccd1['metadata'][_0x334fab(0x3b6)],_0x3b8065['maxY'])),_0xecbae=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)][_0x334fab(0x404)],_0x3b8065[_0x334fab(0x18c)])),_0x476dd4=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)]['zAxis'],_0x3b8065[_0x334fab(0x280)]));return{'minimum':[Math[_0x334fab(0x2dd)](_0x4d4a6e,_0xdaa20a),Math[_0x334fab(0x2dd)](_0x9094f4,_0x281513),Math[_0x334fab(0x2dd)](_0xecbae,_0x476dd4)],'maximum':[Math[_0x334fab(0x2e5)](_0x4d4a6e,_0xdaa20a),Math['max'](_0x9094f4,_0x281513),Math[_0x334fab(0x2e5)](_0xecbae,_0x476dd4)]};},createAxesMesh=()=>({'id':_0x5d7726(0x236),'topology':_0x5d7726(0x389),'depthMode':_0x5d7726(0x365),'vertices':new Float32Array([0x0,0x0,0x0,0x1,0.2,0.2,0x1,0x1,0x0,0x0,0x1,0.2,0.2,0x1,0x0,0x0,0x0,0.2,0x1,0.2,0x1,0x0,0x1,0x0,0.2,0x1,0.2,0x1,0x0,0x0,0x0,0.2,0.5,0x1,0x1,0x0,0x0,0x1,0.2,0.5,0x1,0x1])}),createBoundsMesh=()=>{const _0x3876da=_0x5d7726;let _0x5a9f44=[0.1,0.53,0.56,0.62],_0x392305=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x34a037=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x33aa0c=new Float32Array(_0x34a037[_0x3876da(0x1bc)]*0x2*0x7),_0xc3e22e=0x0;for(let _0x29427a of _0x34a037)for(let _0x1db8ce of _0x29427a)_0x33aa0c[_0x3876da(0x1f8)]([..._0x392305[_0x1db8ce],..._0x5a9f44],_0xc3e22e),_0xc3e22e+=0x7;return{'id':_0x3876da(0x391),'topology':_0x3876da(0x389),'depthMode':'scene','vertices':_0x33aa0c};},createProfileSceneMesh=(_0x1b8769,_0xcf1ce1,_0x4ce32d,_0x2f89ca)=>{const _0x1310ef=_0x5d7726;let _0x3b2ad8=new Float32Array(_0x1b8769[_0x1310ef(0x1b6)][_0x1310ef(0x1bc)]*0x7);for(let _0x367da1=0x0;_0x367da1<_0x1b8769['indices'][_0x1310ef(0x1bc)];_0x367da1+=0x1){let _0x51e87e=_0x1b8769[_0x1310ef(0x1b6)][_0x367da1],_0x16ba42=_0x51e87e*0x3,_0x3f5d8e=sampleVolumeTransferOpacity(_0x1b8769['values'][_0x51e87e],_0x4ce32d,_0x2f89ca),_0x2cf686=sampleVolumeTransferColor(_0x1b8769['values'][_0x51e87e],_0xcf1ce1,_0x1b8769['opacity']*_0x3f5d8e,_0x2f89ca);_0x3b2ad8[_0x1310ef(0x1f8)]([_0x1b8769[_0x1310ef(0x195)][_0x16ba42],_0x1b8769[_0x1310ef(0x195)][_0x16ba42+0x1],_0x1b8769[_0x1310ef(0x195)][_0x16ba42+0x2],_0x2cf686[0x0]*_0x2cf686[0x3],_0x2cf686[0x1]*_0x2cf686[0x3],_0x2cf686[0x2]*_0x2cf686[0x3],_0x2cf686[0x3]],_0x367da1*0x7);}return{'id':_0x1b8769['id'],'topology':'triangle-list','depthMode':_0x1b8769[_0x1310ef(0x3fa)],'vertices':_0x3b2ad8};},descriptorDistance=(_0x2ae834,_0x133e0d,_0x4f9058)=>{const _0x336f0b=_0x5d7726;let _0x3326af=(_0x2ae834[_0x336f0b(0x2e2)]['x']+0.5)/_0x133e0d[_0x336f0b(0x1a4)],_0x2b9cf9=(_0x2ae834[_0x336f0b(0x2e2)]['y']+0.5)/_0x133e0d['countY'],_0x136363=(_0x2ae834['coordinate']['z']+0.5)/_0x133e0d[_0x336f0b(0x11e)];return Math[_0x336f0b(0x31a)](_0x3326af-_0x4f9058[_0x336f0b(0x3c6)][0x0],_0x2b9cf9-_0x4f9058[_0x336f0b(0x3c6)][0x1],_0x136363-_0x4f9058[_0x336f0b(0x3c6)][0x2]);},descriptorLogicalIndex=(_0x5ecf5d,_0x521bc6)=>(_0x5ecf5d['coordinate']['z']*_0x521bc6[_0x5d7726(0x38a)]+_0x5ecf5d[_0x5d7726(0x2e2)]['y'])*_0x521bc6[_0x5d7726(0x1a4)]+_0x5ecf5d[_0x5d7726(0x2e2)]['x'],descriptorContainsSlice=(_0x2cbe6a,_0x5e150a,_0x22b318,_0x83492e)=>{const _0x296fa2=_0x5d7726;let _0x1a0c08=_0x22b318==='x'?{'start':_0x2cbe6a[_0x296fa2(0x2be)][_0x296fa2(0x37c)],'count':_0x2cbe6a[_0x296fa2(0x2be)][_0x296fa2(0x145)],'size':_0x5e150a[_0x296fa2(0x25f)][_0x296fa2(0xf1)][_0x296fa2(0x12c)]}:_0x22b318==='y'?{'start':_0x2cbe6a[_0x296fa2(0x2be)]['levelStart'],'count':_0x2cbe6a[_0x296fa2(0x2be)]['levelCount'],'size':_0x5e150a[_0x296fa2(0x25f)][_0x296fa2(0x3b6)][_0x296fa2(0x12c)]}:{'start':_0x2cbe6a['coreRange'][_0x296fa2(0x1c8)],'count':_0x2cbe6a['coreRange'][_0x296fa2(0x1e9)],'size':_0x5e150a[_0x296fa2(0x25f)]['zAxis'][_0x296fa2(0x12c)]};return _0x83492e>=_0x1a0c08['start']/_0x1a0c08[_0x296fa2(0x261)]&&_0x83492e<=(_0x1a0c08[_0x296fa2(0x141)]+_0x1a0c08[_0x296fa2(0x12c)])/_0x1a0c08[_0x296fa2(0x261)];},descriptorContainsProfile=(_0x5de3e5,_0xc6b7ff,_0x252943)=>{const _0x26824a=_0x5d7726;let _0xf29dbb=_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x37c)]/_0xc6b7ff[_0x26824a(0x25f)]['xAxis'][_0x26824a(0x12c)],_0xa2a6a0=(_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x37c)]+_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x145)])/_0xc6b7ff[_0x26824a(0x25f)]['xAxis'][_0x26824a(0x12c)],_0x2206a5=_0x5de3e5[_0x26824a(0x2be)]['levelStart']/_0xc6b7ff[_0x26824a(0x25f)]['yAxis'][_0x26824a(0x12c)],_0x4389f2=(_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x123)]+_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x2a0)])/_0xc6b7ff[_0x26824a(0x25f)][_0x26824a(0x3b6)][_0x26824a(0x12c)],_0x5878ff=_0x5de3e5[_0x26824a(0x2be)]['sourceYStart']/_0xc6b7ff[_0x26824a(0x25f)][_0x26824a(0x404)]['count'],_0xc15c17=(_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x1c8)]+_0x5de3e5['coreRange'][_0x26824a(0x1e9)])/_0xc6b7ff[_0x26824a(0x25f)]['zAxis'][_0x26824a(0x12c)];return _0x252943['some'](_0x577bf0=>{const _0x5785b0=_0x26824a;let _0x199498=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)]['yAxis'],_0x577bf0[_0x5785b0(0x3be)][0x0]),_0x106685=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)][_0x5785b0(0x3b6)],_0x577bf0[_0x5785b0(0x3be)][_0x577bf0[_0x5785b0(0x3be)][_0x5785b0(0x1bc)]-0x1]);if(Math['max'](_0x199498,_0x106685)<_0x2206a5||Math[_0x5785b0(0x2dd)](_0x199498,_0x106685)>_0x4389f2)return!0x1;for(let _0x3a5877=0x0;_0x3a5877<_0x577bf0[_0x5785b0(0x39e)][_0x5785b0(0x1bc)];_0x3a5877+=0x2){let _0x11dc4d=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)][_0x5785b0(0xf1)],_0x577bf0[_0x5785b0(0x39e)][_0x3a5877]),_0x30ff80=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)]['zAxis'],_0x577bf0[_0x5785b0(0x39e)][_0x3a5877+0x1]);if(_0x11dc4d>=_0xf29dbb&&_0x11dc4d<=_0xa2a6a0&&_0x30ff80>=_0x5878ff&&_0x30ff80<=_0xc15c17)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x362427,_0x25a941,_0x1893be,_0x2fe07d)=>{const _0x324e3b=_0x5d7726;let _0x3adffe=_0x1893be['preview'];if(_0x3adffe){let _0x34c3b5=_0x3adffe[_0x324e3b(0x24c)]==='x'?_0x25a941[_0x324e3b(0x25f)][_0x324e3b(0xf1)]:_0x3adffe[_0x324e3b(0x24c)]==='y'?_0x25a941[_0x324e3b(0x25f)]['yAxis']:_0x25a941[_0x324e3b(0x25f)][_0x324e3b(0x404)];if(descriptorContainsSlice(_0x362427,_0x25a941,_0x3adffe['axis'],volumeAxisValueToNormalized(_0x34c3b5,_0x3adffe[_0x324e3b(0x3c6)])))return 0x0;}for(let _0x35ee21 of _0x1893be['lockedSlices']){let _0x2dbdd5=_0x35ee21[_0x324e3b(0x24c)]==='x'?_0x25a941['metadata']['xAxis']:_0x35ee21['axis']==='y'?_0x25a941['metadata']['yAxis']:_0x25a941[_0x324e3b(0x25f)][_0x324e3b(0x404)];if(_0x35ee21['visible']&&descriptorContainsSlice(_0x362427,_0x25a941,_0x35ee21['axis'],volumeAxisValueToNormalized(_0x2dbdd5,_0x35ee21[_0x324e3b(0x3c6)])))return 0x1;}return descriptorContainsProfile(_0x362427,_0x25a941,_0x2fe07d)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x5d7726(0x410)]=_0x5d7726(0x2cf);['renderer'];[_0x5d7726(0x34d)];[_0x5d7726(0x191)];[_0x5d7726(0x1d9)];['interactionElement'];[_0x5d7726(0x188)]=[];[_0x5d7726(0x345)];[_0x5d7726(0x26b)];['descriptors'];[_0x5d7726(0x2e1)];[_0x5d7726(0x35d)];[_0x5d7726(0x329)];[_0x5d7726(0x153)];['profiles']=[];[_0x5d7726(0x383)];[_0x5d7726(0x219)]=0x0;['loadedKeys']=new Set();['pendingKeys']=new Map();[_0x5d7726(0x34c)]=new Set();[_0x5d7726(0x34b)]=0x0;[_0x5d7726(0x31d)]=!0x1;['baseModelMatrix'];['verticalScale'];[_0x5d7726(0x3ba)];['clipBox'];['quality'];[_0x5d7726(0x15b)]=_0x5d7726(0x21d);[_0x5d7726(0x2ea)]=0x0;[_0x5d7726(0x398)]=0x0;[_0x5d7726(0x13e)];[_0x5d7726(0x2a2)]=null;['navigationMode'];['pixelRatioCap'];[_0x5d7726(0x29a)];[_0x5d7726(0x178)];[_0x5d7726(0x173)];[_0x5d7726(0x299)]=new Set();[_0x5d7726(0x189)]=!0x0;['brickScheduleDirty']=!0x1;['brickScheduleCount']=0x0;[_0x5d7726(0x1cf)]=0x0;[_0x5d7726(0x276)]=null;[_0x5d7726(0x111)];['slicePlateColor'];[_0x5d7726(0x1f6)];['lastSubmittedFrameTimestamp']=0x0;[_0x5d7726(0x384)]=0x0;['actualFrameIntervalMilliseconds']=0x0;[_0x5d7726(0x26d)]=new Set();[_0x5d7726(0x127)]=null;[_0x5d7726(0x396)]=null;constructor(_0x267dd0,_0x19e194){const _0x520dae=_0x5d7726;this['renderer']=_0x19e194,this[_0x520dae(0x191)]=_0x267dd0['canvas'],this['interactionElement']=_0x267dd0[_0x520dae(0x36e)]??_0x267dd0[_0x520dae(0x191)],this[_0x520dae(0x1d9)]=_0x267dd0[_0x520dae(0x1d9)]??_0x520dae(0x161),this['source']=_0x267dd0[_0x520dae(0x345)],this[_0x520dae(0x383)]=_0x267dd0['timeIndex']??0x0,this[_0x520dae(0x26b)]=this[_0x520dae(0x357)](_0x267dd0),this[_0x520dae(0x40f)]=createVolumeBrickDescriptors(this['source'][_0x520dae(0x25f)],this[_0x520dae(0x26b)]),this['volumeCamera']=new VolumeCamera({'state':_0x267dd0[_0x520dae(0x331)]??DEFAULT_CAMERA}),this[_0x520dae(0x2e1)]=this['createSliceState'](_0x267dd0);let _0x3d603c=prepareWebgpuVolumeTransfer(_0x267dd0['colorStops'],_0x267dd0[_0x520dae(0x153)]);if(this[_0x520dae(0x35d)]=_0x3d603c[_0x520dae(0x35d)],this[_0x520dae(0x329)]=_0x267dd0[_0x520dae(0x35d)],this['opacityStops']=_0x267dd0[_0x520dae(0x153)],this[_0x520dae(0x185)]=_0x267dd0[_0x520dae(0x1fb)]??IDENTITY_MATRIX,this['verticalScale']=validatePositiveOption(_0x267dd0[_0x520dae(0x3a9)]??0x1,_0x520dae(0x3a9)),this[_0x520dae(0x3ba)]=_0x267dd0[_0x520dae(0x3ba)]??_0x520dae(0x322),this[_0x520dae(0x3ba)]===_0x520dae(0x14f)&&_0x267dd0[_0x520dae(0x1fb)])throw Error(_0x520dae(0x169));this['clipBox']=_0x267dd0[_0x520dae(0x125)]??null,this[_0x520dae(0x1e5)]=_0x267dd0[_0x520dae(0x1e5)]??'auto',this[_0x520dae(0x3cd)]=_0x267dd0[_0x520dae(0x3cd)]??_0x520dae(0x171),this['pixelRatioCap']=validatePositiveOption(_0x267dd0[_0x520dae(0x159)]??0x2,_0x520dae(0x159)),this[_0x520dae(0x29a)]=validatePositiveOption(_0x267dd0[_0x520dae(0x29a)]??0x1,_0x520dae(0x29a)),this[_0x520dae(0x178)]=validatePositiveOption(_0x267dd0[_0x520dae(0x178)]??0.6,_0x520dae(0x178)),this['interactionStepScale']=validatePositiveOption(_0x267dd0[_0x520dae(0x173)]??0x1,'interactionStepScale'),this['colorMode']=_0x267dd0['colorMode']??_0x520dae(0x3c7),this[_0x520dae(0x111)]=_0x267dd0['sliceInteraction']?.['depthMode']??_0x520dae(0x312),this['slicePlateColor']=_0x267dd0[_0x520dae(0x127)]?.[_0x520dae(0x3a6)],this[_0x520dae(0x1f6)]=_0x267dd0[_0x520dae(0x127)]?.[_0x520dae(0x1f6)],this[_0x520dae(0x35c)][_0x520dae(0x349)](()=>this[_0x520dae(0x328)]()),this[_0x520dae(0x35c)][_0x520dae(0x2a3)](_0x3d603c[_0x520dae(0x35d)],_0x3d603c['opacityStops']);let _0x59b931=_0x267dd0[_0x520dae(0x11f)]??this[_0x520dae(0x3ba)]===_0x520dae(0x322);this[_0x520dae(0x35c)][_0x520dae(0x29d)](_0x59b931?[createBoundsMesh(),createAxesMesh()]:[]),this['renderer']['update']({'renderMode':_0x267dd0[_0x520dae(0x415)]??_0x520dae(0x283),'colorMode':this[_0x520dae(0x13e)],'opacity':_0x267dd0[_0x520dae(0x36a)]??0.3,'densityScale':_0x267dd0[_0x520dae(0x201)]??0x1,'stepLength':this['getStepLength'](),'volumeDimFactor':this[_0x520dae(0x2e1)][_0x520dae(0x22e)]}),this['configureSource'](),this[_0x520dae(0x146)](),this[_0x520dae(0x19b)](),this[_0x520dae(0x135)](_0x267dd0),this[_0x520dae(0x3ed)]();}static async[_0x5d7726(0x402)](_0x1166eb){const _0x4f2c18=_0x5d7726;if(validateVolumeSource(_0x1166eb[_0x4f2c18(0x345)]),validateVolumeTimeIndex(_0x1166eb['source'][_0x4f2c18(0x25f)],_0x1166eb['timeIndex']??0x0),(_0x1166eb[_0x4f2c18(0x14a)]?.[_0x4f2c18(0x2f4)]??0x1)!==0x1)throw Error('The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。');let _0x5f473a=_0x1166eb[_0x4f2c18(0x14a)]?.[_0x4f2c18(0x162)]??0x20000000,_0x59b1b6=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x5f473a,'memoryHardLimitBytes':_0x1166eb[_0x4f2c18(0x14a)]?.[_0x4f2c18(0x2fc)]??_0x5f473a});await _0x59b1b6[_0x4f2c18(0x3fb)](_0x1166eb[_0x4f2c18(0x191)]);let _0x41ad25=new VolumeScene(_0x1166eb,_0x59b1b6);return _0x41ad25[_0x4f2c18(0xfe)](),_0x41ad25['scheduleBricks'](),_0x41ad25['renderMode']===_0x4f2c18(0x161)&&_0x41ad25[_0x4f2c18(0x14e)](),_0x41ad25;}get[_0x5d7726(0x331)](){const _0x33e6d9=_0x5d7726;return this[_0x33e6d9(0x34d)]['state'];}get[_0x5d7726(0x2c2)](){const _0x4b162b=_0x5d7726;return this[_0x4b162b(0x2e1)][_0x4b162b(0x2c2)];}get['statistics'](){const _0x29d775=_0x5d7726;let _0x5b5d0c=this[_0x29d775(0x1d9)]===_0x29d775(0x267)||this[_0x29d775(0x3f2)]()||performance[_0x29d775(0x30a)]()-this['lastSubmittedFrameTimestamp']<=0xfa?this['actualFrameIntervalMilliseconds']:0x0;return{...this[_0x29d775(0x35c)][_0x29d775(0x3ec)],'pendingBrickCount':this[_0x29d775(0x3b5)][_0x29d775(0x261)],'brickScheduleCount':this[_0x29d775(0x21f)],'brickSortCount':this[_0x29d775(0x1cf)],'actualFrameIntervalMilliseconds':_0x5b5d0c,'estimatedFps':_0x5b5d0c>0x0?0x3e8/_0x5b5d0c:0x0,'effectiveQuality':this['getEffectiveQuality'](),'effectiveRenderScale':this['getEffectiveRenderScale'](),'interactionKind':this[_0x29d775(0x1f5)]()};}[_0x5d7726(0x19e)](_0x44a8e8){const _0x51519f=_0x5d7726;_0x44a8e8[_0x51519f(0x331)]&&this[_0x51519f(0x2d9)](_0x44a8e8['camera']),_0x44a8e8[_0x51519f(0x1fb)]&&(this[_0x51519f(0x185)]=[..._0x44a8e8['modelMatrix']]),_0x44a8e8[_0x51519f(0x3a9)]!==void 0x0&&(this[_0x51519f(0x3a9)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x3a9)],'verticalScale')),_0x44a8e8[_0x51519f(0x125)]!==void 0x0&&(this[_0x51519f(0x125)]=_0x44a8e8[_0x51519f(0x125)]),_0x44a8e8[_0x51519f(0x1e5)]&&(this['quality']=_0x44a8e8[_0x51519f(0x1e5)]),_0x44a8e8[_0x51519f(0x3cd)]&&(this[_0x51519f(0x3cd)]=_0x44a8e8[_0x51519f(0x3cd)]);let _0x8cb9cf=!0x1;if(_0x44a8e8[_0x51519f(0x159)]!==void 0x0&&(this[_0x51519f(0x159)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x159)],'pixelRatioCap'),_0x8cb9cf=!0x0),_0x44a8e8[_0x51519f(0x29a)]!==void 0x0&&(this[_0x51519f(0x29a)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x29a)],_0x51519f(0x29a)),_0x8cb9cf=!0x0),_0x44a8e8[_0x51519f(0x178)]!==void 0x0&&(this[_0x51519f(0x178)]=validatePositiveOption(_0x44a8e8['interactionRenderScale'],_0x51519f(0x178)),_0x8cb9cf=this[_0x51519f(0x3f2)]()),_0x44a8e8[_0x51519f(0x173)]!==void 0x0&&(this[_0x51519f(0x173)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x173)],_0x51519f(0x173))),_0x44a8e8[_0x51519f(0x13e)]&&(this['colorMode']=_0x44a8e8['colorMode']),_0x44a8e8[_0x51519f(0x35d)]||_0x44a8e8[_0x51519f(0x153)]){let _0x451e99=prepareWebgpuVolumeTransfer(_0x44a8e8[_0x51519f(0x35d)]??this[_0x51519f(0x329)],_0x44a8e8['opacityStops']??this['opacityStops']);this[_0x51519f(0x35d)]=_0x451e99[_0x51519f(0x35d)],this['colorInputs']=_0x44a8e8[_0x51519f(0x35d)]??this[_0x51519f(0x329)],this['opacityStops']=_0x44a8e8[_0x51519f(0x153)]??this['opacityStops'],this[_0x51519f(0x35c)][_0x51519f(0x2a3)](_0x451e99[_0x51519f(0x35d)],_0x451e99['opacityStops']),this[_0x51519f(0x20d)]();}_0x44a8e8[_0x51519f(0x13e)]&&!_0x44a8e8[_0x51519f(0x35d)]&&!_0x44a8e8['opacityStops']&&this['rebuildProfiles'](),this[_0x51519f(0x35c)][_0x51519f(0x19e)]({'renderMode':_0x44a8e8[_0x51519f(0x415)],'colorMode':_0x44a8e8['colorMode'],'opacity':_0x44a8e8[_0x51519f(0x36a)],'densityScale':_0x44a8e8['densityScale'],'stepLength':this[_0x51519f(0x3d5)]()}),this[_0x51519f(0x146)](),_0x8cb9cf&&this[_0x51519f(0xfe)](),this['requestRender']();}[_0x5d7726(0x2d9)](_0x206543){const _0x13a457=_0x5d7726;this[_0x13a457(0x34d)][_0x13a457(0x198)](_0x206543),this[_0x13a457(0x263)](),this[_0x13a457(0x14e)]();}['setTimeIndex'](_0x17019c){const _0x2feda3=_0x5d7726;validateVolumeTimeIndex(this[_0x2feda3(0x345)][_0x2feda3(0x25f)],_0x17019c),_0x17019c!==this[_0x2feda3(0x383)]&&(this[_0x2feda3(0x383)]=_0x17019c,this[_0x2feda3(0xed)]());}[_0x5d7726(0x339)](_0x1c39f2){const _0x3f9ab4=_0x5d7726;validateVolumeSource(_0x1c39f2),this['source']=_0x1c39f2,this[_0x3f9ab4(0x383)]=Math[_0x3f9ab4(0x2dd)](this[_0x3f9ab4(0x383)],_0x1c39f2['metadata'][_0x3f9ab4(0x2c6)]-0x1),this[_0x3f9ab4(0x26b)]=createVolumeBrickLayout(_0x1c39f2[_0x3f9ab4(0x25f)],this[_0x3f9ab4(0x26b)][_0x3f9ab4(0x2df)]),this['descriptors']=createVolumeBrickDescriptors(_0x1c39f2[_0x3f9ab4(0x25f)],this[_0x3f9ab4(0x26b)]),this[_0x3f9ab4(0x2e1)][_0x3f9ab4(0x29d)](_0x1c39f2[_0x3f9ab4(0x25f)]),this['configureSource'](),this[_0x3f9ab4(0x146)](),this['resetBrickRequests'](),this[_0x3f9ab4(0x20d)](),this[_0x3f9ab4(0x14e)]();}['setRouteProfiles'](_0x512897){const _0xca4dc3=_0x5d7726;this[_0xca4dc3(0x282)]=_0x512897,this[_0xca4dc3(0x20d)](),this[_0xca4dc3(0x263)](),this['requestRender']();}[_0x5d7726(0xee)](_0x24722b){const _0x169273=_0x5d7726;this[_0x169273(0x2e1)][_0x169273(0x38b)](_0x24722b);}['beginInteraction'](_0x5b6d57){const _0x3a9746=_0x5d7726;if(this[_0x3a9746(0x31d)]||this[_0x3a9746(0x299)][_0x3a9746(0x2de)](_0x5b6d57))return;let _0x4a9f11=!this[_0x3a9746(0x3f2)]();this[_0x3a9746(0x299)]['add'](_0x5b6d57),_0x4a9f11&&(this['lastTimingFrameTimestamp']=0x0,this['resize']());}[_0x5d7726(0x1ca)](_0x59a156){const _0x3a32b1=_0x5d7726;this[_0x3a32b1(0x31d)]||!this[_0x3a32b1(0x299)][_0x3a32b1(0x370)](_0x59a156)||this[_0x3a32b1(0x3f2)]()||(this[_0x3a32b1(0x384)]=0x0,this[_0x3a32b1(0xfe)]());}['lockSlice'](_0xa4d44e,_0x2d060e){const _0x6028d7=_0x5d7726;this[_0x6028d7(0x2e1)]['updatePreview'](_0xa4d44e,_0x2d060e);let _0x1682e6=this[_0x6028d7(0x2e1)][_0x6028d7(0x31b)]();if(!_0x1682e6)throw Error(_0x6028d7(0x237));return _0x1682e6;}[_0x5d7726(0x304)](_0x300b41,_0x50377a){const _0x35e9b1=_0x5d7726;this[_0x35e9b1(0x2e1)][_0x35e9b1(0x34a)](_0x300b41,_0x50377a);}[_0x5d7726(0x2e6)](_0x15ee36){const _0x8d5f=_0x5d7726;this[_0x8d5f(0x2e1)]['removeSlice'](_0x15ee36);}[_0x5d7726(0x330)](){const _0x12ea3a=_0x5d7726;this[_0x12ea3a(0x2e1)][_0x12ea3a(0x330)]();}[_0x5d7726(0xfe)](){const _0x1c8bad=_0x5d7726;let _0x3e0868=Math[_0x1c8bad(0x2dd)](window['devicePixelRatio']||0x1,this['pixelRatioCap'])*this['getEffectiveRenderScale'](),_0x358d65=Math[_0x1c8bad(0x2e5)](0x1,Math[_0x1c8bad(0x3e5)](this[_0x1c8bad(0x191)][_0x1c8bad(0x24a)]*_0x3e0868||this[_0x1c8bad(0x191)]['width']||0x1)),_0x3431b9=Math['max'](0x1,Math['round'](this[_0x1c8bad(0x191)]['clientHeight']*_0x3e0868||this[_0x1c8bad(0x191)][_0x1c8bad(0x38f)]||0x1));this['volumeCamera']['setAspect'](_0x358d65/_0x3431b9),(this[_0x1c8bad(0x191)]['width']!==_0x358d65||this[_0x1c8bad(0x191)][_0x1c8bad(0x38f)]!==_0x3431b9)&&this['renderer'][_0x1c8bad(0xfe)](_0x358d65,_0x3431b9),this['requestRender']();}['render'](){const _0xdfed9f=_0x5d7726;if(this[_0xdfed9f(0x31d)])return;this[_0xdfed9f(0x196)](),this[_0xdfed9f(0x326)]();let _0x1247f1=this[_0xdfed9f(0x34d)]['matrices'];if(this[_0xdfed9f(0x35c)][_0xdfed9f(0x2d9)]({'viewProjection':Array[_0xdfed9f(0x3c0)](_0x1247f1[_0xdfed9f(0x10b)]),'inverseViewProjection':Array[_0xdfed9f(0x3c0)](_0x1247f1[_0xdfed9f(0x1b8)]),'cameraPosition':this[_0xdfed9f(0x34d)]['state'][_0xdfed9f(0x3c6)]}),this['renderer'][_0xdfed9f(0x19e)]({'stepLength':this[_0xdfed9f(0x3d5)]()}),!this[_0xdfed9f(0x35c)][_0xdfed9f(0x27d)]()){this[_0xdfed9f(0x189)]=!0x0;return;}this[_0xdfed9f(0x189)]=!0x1,this[_0xdfed9f(0xf2)](performance[_0xdfed9f(0x30a)]()),this['markerOverlay']?.[_0xdfed9f(0x19e)]();}[_0x5d7726(0xf0)](){const _0x339934=_0x5d7726;if(this[_0x339934(0x31d)])return Promise['reject'](Error(_0x339934(0x300)));this[_0x339934(0x196)](),this[_0x339934(0x326)]();let _0xd7f91b=this['volumeCamera']['matrices'];return this[_0x339934(0x35c)][_0x339934(0x2d9)]({'viewProjection':Array[_0x339934(0x3c0)](_0xd7f91b['viewProjection']),'inverseViewProjection':Array[_0x339934(0x3c0)](_0xd7f91b['inverseViewProjection']),'cameraPosition':this[_0x339934(0x34d)][_0x339934(0x39b)][_0x339934(0x3c6)]}),this[_0x339934(0x35c)][_0x339934(0xf0)]();}[_0x5d7726(0x416)](){const _0xe5fef0=_0x5d7726;if(!this[_0xe5fef0(0x31d)]){this[_0xe5fef0(0x31d)]=!0x0,this['sourceGeneration']+=0x1;for(let _0x27a3a7 of this[_0xe5fef0(0x26d)])_0x27a3a7[_0xe5fef0(0x243)]();this['requestControllers'][_0xe5fef0(0x1ad)](),cancelAnimationFrame(this[_0xe5fef0(0x34b)]),this[_0xe5fef0(0x35c)][_0xe5fef0(0x349)](null),this[_0xe5fef0(0x188)][_0xe5fef0(0x133)](0x0)[_0xe5fef0(0x2f1)](_0x7ada53=>_0x7ada53()),this[_0xe5fef0(0x35c)][_0xe5fef0(0x416)](),this[_0xe5fef0(0x127)]?.[_0xe5fef0(0x416)](),this[_0xe5fef0(0x396)]?.[_0xe5fef0(0x416)](),this[_0xe5fef0(0x1c6)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x3b5)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x34c)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x299)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x276)]=null;}}[_0x5d7726(0x357)](_0x5220e9){const _0x2c8c93=_0x5d7726;return createVolumeBrickLayout(_0x5220e9[_0x2c8c93(0x345)][_0x2c8c93(0x25f)],{'width':_0x5220e9[_0x2c8c93(0x14a)]?.[_0x2c8c93(0x293)],'height':_0x5220e9[_0x2c8c93(0x14a)]?.['height'],'depth':_0x5220e9[_0x2c8c93(0x14a)]?.[_0x2c8c93(0x15e)],'halo':_0x5220e9[_0x2c8c93(0x14a)]?.[_0x2c8c93(0x2f4)]});}[_0x5d7726(0x254)](){const _0x236e88=_0x5d7726;return this['quality']==='auto'?this['autoQuality']:this[_0x236e88(0x1e5)];}[_0x5d7726(0x3d5)](){const _0x5f234b=_0x5d7726;let _0x9fe382=qualityStepLength(this[_0x5f234b(0x254)]());return(this[_0x5f234b(0x3ba)]===_0x5f234b(0x14f)?_0x9fe382*0.05:_0x9fe382)*(this[_0x5f234b(0x3f2)]()?this['interactionStepScale']:0x1);}['isInteracting'](){const _0x2f0b3c=_0x5d7726;return this[_0x2f0b3c(0x299)][_0x2f0b3c(0x261)]>0x0;}[_0x5d7726(0x1f5)](){const _0x11543e=_0x5d7726;return this[_0x11543e(0x299)][_0x11543e(0x261)]===0x0?_0x11543e(0x20f):this[_0x11543e(0x299)][_0x11543e(0x261)]>0x1?_0x11543e(0x371):this['activeInteractions'][_0x11543e(0xf8)]()[_0x11543e(0x3f3)]()[_0x11543e(0x1c7)]??'idle';}['getEffectiveRenderScale'](){const _0xf34a62=_0x5d7726;return this['renderScale']*(this[_0xf34a62(0x3f2)]()?this[_0xf34a62(0x178)]:0x1);}[_0x5d7726(0xf2)](_0x5f338e){const _0x1b0653=_0x5d7726;if(this[_0x1b0653(0x3f0)]=_0x5f338e,!(this[_0x1b0653(0x1d9)]===_0x1b0653(0x267)||this[_0x1b0653(0x3f2)]())){this[_0x1b0653(0x384)]=0x0;return;}if(this[_0x1b0653(0x384)]>0x0){let _0x3c994d=_0x5f338e-this[_0x1b0653(0x384)];_0x3c994d>0x0&&_0x3c994d<=0xfa&&(this[_0x1b0653(0x129)]=this['actualFrameIntervalMilliseconds']===0x0?_0x3c994d:this[_0x1b0653(0x129)]*0.8+_0x3c994d*0.2,this['updateAutoQuality'](_0x3c994d));}this[_0x1b0653(0x384)]=_0x5f338e;}[_0x5d7726(0x1f4)](_0x58fba4){const _0x5621a6=_0x5d7726;if(this[_0x5621a6(0x1e5)]!==_0x5621a6(0x28f)||(this['autoFrameCount']+=0x1,this['autoFrameIntervalTotal']+=_0x58fba4,this[_0x5621a6(0x2ea)]<0x1e))return;let _0x4f0585=this[_0x5621a6(0x398)]/this[_0x5621a6(0x2ea)];if(this[_0x5621a6(0x2ea)]=0x0,this[_0x5621a6(0x398)]=0x0,this[_0x5621a6(0x3f2)]()&&_0x4f0585<0xe)return;let _0x5bf36b=nextAutoQuality(this[_0x5621a6(0x15b)],_0x4f0585);_0x5bf36b!==this[_0x5621a6(0x15b)]&&(this[_0x5621a6(0x15b)]=_0x5bf36b,this[_0x5621a6(0x263)](),this[_0x5621a6(0x14e)]());}[_0x5d7726(0x341)](_0x422727){const _0x5c758f=_0x5d7726;return new SliceState(_0x422727['source'][_0x5c758f(0x25f)],{'volumeDimFactor':_0x422727[_0x5c758f(0x127)]?.['volumeDimFactor'],'depthMode':_0x422727[_0x5c758f(0x127)]?.[_0x5c758f(0x3fa)],'maxLockedSlices':_0x422727[_0x5c758f(0x127)]?.['maxLockedSlices'],'onLimitReached':_0x570876=>_0x422727[_0x5c758f(0x127)]?.[_0x5c758f(0x18b)]?.(Error(_0x5c758f(0x3ac)+_0x570876+'.\x20最大锁定切面数量为\x20'+_0x570876+'。'))});}[_0x5d7726(0x19b)](){const _0x485f63=_0x5d7726;let _0x3fbcc5=this[_0x485f63(0x2e1)][_0x485f63(0x32b)](_0x32659d=>{this['pendingSliceSnapshot']=_0x32659d,this['requestRender']();});this[_0x485f63(0x188)][_0x485f63(0x10e)](_0x3fbcc5);}[_0x5d7726(0x196)](){const _0x39ca0f=_0x5d7726;let _0x579c4f=this['pendingSliceSnapshot'];if(!_0x579c4f)return;this['pendingSliceSnapshot']=null;let _0x4a1c6e=[];if(_0x579c4f[_0x39ca0f(0x37f)]){let _0x4286f6=_0x579c4f[_0x39ca0f(0x37f)]['axis']==='x'?this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)]['xAxis']:_0x579c4f[_0x39ca0f(0x37f)][_0x39ca0f(0x24c)]==='y'?this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)][_0x39ca0f(0x3b6)]:this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)][_0x39ca0f(0x404)];_0x4a1c6e[_0x39ca0f(0x10e)]({'id':'volume-slice-preview','axis':_0x579c4f[_0x39ca0f(0x37f)][_0x39ca0f(0x24c)],'position':clamp01(volumeAxisValueToNormalized(_0x4286f6,_0x579c4f['preview']['position'])),'depthMode':this['sliceDepthMode'],'visible':!0x0,'opacity':0.72,'plateColor':this['slicePlateColor']});}for(let _0xffc190 of _0x579c4f[_0x39ca0f(0x2c2)]){let _0x2bb374=_0xffc190[_0x39ca0f(0x24c)]==='x'?this['source'][_0x39ca0f(0x25f)][_0x39ca0f(0xf1)]:_0xffc190[_0x39ca0f(0x24c)]==='y'?this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)][_0x39ca0f(0x3b6)]:this['source'][_0x39ca0f(0x25f)][_0x39ca0f(0x404)];_0x4a1c6e['push']({..._0xffc190,'position':clamp01(volumeAxisValueToNormalized(_0x2bb374,_0xffc190['position'])),'opacity':0x1,'plateColor':this[_0x39ca0f(0x13f)]});}this[_0x39ca0f(0x35c)][_0x39ca0f(0x377)](_0x4a1c6e),this[_0x39ca0f(0x35c)]['update']({'volumeDimFactor':_0x579c4f[_0x39ca0f(0x37f)]||_0x579c4f[_0x39ca0f(0x2c2)][_0x39ca0f(0x1ee)](_0x41d1fe=>_0x41d1fe['visible'])?_0x579c4f[_0x39ca0f(0x22e)]:0x1}),this[_0x39ca0f(0x1f6)]?.(_0x579c4f[_0x39ca0f(0x2c2)]),this[_0x39ca0f(0x2dc)]=!0x0;}['bindSliceInteraction'](_0x1575e7){const _0x15efb7=_0x5d7726;let _0x584a01=()=>({'viewProjectionMatrix':this['volumeCamera'][_0x15efb7(0x25c)]['viewProjection'],'modelMatrix':composeVolumeModelMatrix(this['baseModelMatrix'],this[_0x15efb7(0x3a9)]),'viewportWidth':Math[_0x15efb7(0x2e5)](0x1,this['canvas'][_0x15efb7(0x24a)]),'viewportHeight':Math['max'](0x1,this[_0x15efb7(0x191)]['clientHeight'])});this['sliceInteraction']=new SliceInteractionController(this['interactionElement'],this[_0x15efb7(0x2e1)],_0x584a01,{'hitTolerancePixels':_0x1575e7[_0x15efb7(0x127)]?.['hitRadius'],'onInteractionStart':()=>this['beginInteraction'](_0x15efb7(0x1a5)),'onInteractionEnd':()=>this[_0x15efb7(0x1ca)](_0x15efb7(0x1a5))}),this[_0x15efb7(0x127)][_0x15efb7(0x3fb)](),_0x1575e7[_0x15efb7(0x216)]&&(this[_0x15efb7(0x396)]=new SliceMarkerOverlay(_0x1575e7[_0x15efb7(0x216)],this[_0x15efb7(0x2e1)],_0x584a01,{'interactionController':this['sliceInteraction']}));}['bindControls'](){const _0x34e976=_0x5d7726;let _0x4f3f7d=_0x4dce26=>{const _0x289a06=_0x2fcb;_0x4dce26[_0x289a06(0x23b)]!==0x0&&_0x4dce26[_0x289a06(0x23b)]!==0x2||(this[_0x289a06(0x2a2)]={'id':_0x4dce26[_0x289a06(0xf4)],'x':_0x4dce26[_0x289a06(0x297)],'y':_0x4dce26['clientY'],'pan':_0x4dce26[_0x289a06(0x23b)]===0x2||_0x4dce26[_0x289a06(0x413)]!==_0x289a06(0x311)&&this[_0x289a06(0x3cd)]===_0x289a06(0x251)},this[_0x289a06(0x13d)](_0x289a06(0x331)),this[_0x289a06(0x36e)][_0x289a06(0x1ac)]?.(_0x4dce26[_0x289a06(0xf4)]),_0x4dce26['preventDefault']());},_0x1ce32b=_0x22c10d=>{const _0x4060b7=_0x2fcb;if(!this['pointer']||this['pointer']['id']!==_0x22c10d['pointerId'])return;let _0x465a38=_0x22c10d['clientX']-this[_0x4060b7(0x2a2)]['x'],_0x28f3f4=_0x22c10d[_0x4060b7(0x32f)]-this[_0x4060b7(0x2a2)]['y'];this['pointer']['x']=_0x22c10d['clientX'],this[_0x4060b7(0x2a2)]['y']=_0x22c10d[_0x4060b7(0x32f)],this[_0x4060b7(0x2a2)][_0x4060b7(0x251)]?this[_0x4060b7(0x34d)]['pan'](_0x465a38,_0x28f3f4,this[_0x4060b7(0x191)][_0x4060b7(0x2c0)]):this[_0x4060b7(0x34d)][_0x4060b7(0x171)](_0x465a38,_0x28f3f4),this[_0x4060b7(0x263)](),this[_0x4060b7(0x14e)]();},_0x545412=_0x42a36d=>{const _0x2ad575=_0x2fcb;this[_0x2ad575(0x2a2)]?.['id']===_0x42a36d[_0x2ad575(0xf4)]&&(this[_0x2ad575(0x2a2)]=null,this[_0x2ad575(0x1ca)](_0x2ad575(0x331)));},_0x17ed3b=_0x42a6af=>{const _0x147587=_0x2fcb;_0x42a6af['preventDefault'](),this[_0x147587(0x34d)][_0x147587(0x19f)](_0x42a6af['deltaY']),this[_0x147587(0x263)](),this[_0x147587(0x14e)]();},_0x48c8f6=_0x45b989=>_0x45b989['preventDefault']();this[_0x34e976(0x36e)][_0x34e976(0x193)]('pointerdown',_0x4f3f7d),this[_0x34e976(0x36e)]['addEventListener'](_0x34e976(0x394),_0x1ce32b),this[_0x34e976(0x36e)]['addEventListener'](_0x34e976(0x367),_0x545412),this[_0x34e976(0x36e)][_0x34e976(0x193)](_0x34e976(0x213),_0x545412),this['interactionElement'][_0x34e976(0x193)](_0x34e976(0x2ba),_0x17ed3b,{'passive':!0x1}),this['interactionElement'][_0x34e976(0x193)](_0x34e976(0x321),_0x48c8f6),this['eventDisposers'][_0x34e976(0x10e)](()=>this[_0x34e976(0x36e)]['removeEventListener']('pointerdown',_0x4f3f7d),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)](_0x34e976(0x394),_0x1ce32b),()=>this[_0x34e976(0x36e)]['removeEventListener'](_0x34e976(0x367),_0x545412),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)]('pointercancel',_0x545412),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)](_0x34e976(0x2ba),_0x17ed3b),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)](_0x34e976(0x321),_0x48c8f6));}[_0x5d7726(0x22f)](){const _0x380671=_0x5d7726;this[_0x380671(0x35c)][_0x380671(0x339)]({'xAxis':this['source'][_0x380671(0x25f)][_0x380671(0xf1)],'yAxis':this['source'][_0x380671(0x25f)][_0x380671(0x3b6)],'zAxis':this[_0x380671(0x345)][_0x380671(0x25f)][_0x380671(0x404)],'brickWidth':this['layout'][_0x380671(0x2df)][_0x380671(0x293)],'brickHeight':this[_0x380671(0x26b)]['shape'][_0x380671(0x38f)],'brickDepth':this[_0x380671(0x26b)][_0x380671(0x2df)]['depth'],'halo':0x1,'noData':this[_0x380671(0x345)][_0x380671(0x25f)][_0x380671(0x245)]});}[_0x5d7726(0x146)](){const _0x296a64=_0x5d7726;if(this[_0x296a64(0x3ba)]===_0x296a64(0x14f)){let _0x33e1da=createGeographicVolumeLayout(this[_0x296a64(0x345)][_0x296a64(0x25f)],this[_0x296a64(0x3a9)]);this[_0x296a64(0x35c)][_0x296a64(0x19e)]({'modelMatrix':_0x33e1da['proxyModelMatrix'],'inverseModelMatrix':Array[_0x296a64(0x3c0)](invertMatrix(_0x33e1da['proxyModelMatrix'])),'geographicTransform':_0x33e1da['transform'],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x296a64(0x14e)]();return;}let _0x4d6730=composeVolumeModelMatrix(this[_0x296a64(0x185)],this[_0x296a64(0x3a9)]),_0x262aba=normalizeClipBox(this[_0x296a64(0x345)],this['clipBox']);this[_0x296a64(0x35c)][_0x296a64(0x19e)]({'modelMatrix':Array[_0x296a64(0x3c0)](_0x4d6730),'inverseModelMatrix':Array[_0x296a64(0x3c0)](invertMatrix(_0x4d6730)),'geographicTransform':null,'clipMinimum':_0x262aba[_0x296a64(0x3e8)],'clipMaximum':_0x262aba[_0x296a64(0x222)]}),this[_0x296a64(0x14e)]();}[_0x5d7726(0x20d)](){const _0x2b65c5=_0x5d7726;let _0x228b7e=this[_0x2b65c5(0x282)][_0x2b65c5(0x3ef)](_0x4b1b1a=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x4b1b1a,this[_0x2b65c5(0x345)][_0x2b65c5(0x25f)]),this[_0x2b65c5(0x35d)],this['opacityStops'],this[_0x2b65c5(0x13e)]));this[_0x2b65c5(0x35c)][_0x2b65c5(0x284)](_0x228b7e),this[_0x2b65c5(0x14e)]();}[_0x5d7726(0xed)](){const _0x40960b=_0x5d7726;this[_0x40960b(0x219)]+=0x1;for(let _0x2556b8 of this[_0x40960b(0x26d)])_0x2556b8[_0x40960b(0x243)]();this[_0x40960b(0x26d)][_0x40960b(0x1ad)](),this[_0x40960b(0x1c6)][_0x40960b(0x1ad)](),this[_0x40960b(0x3b5)][_0x40960b(0x1ad)](),this[_0x40960b(0x34c)][_0x40960b(0x1ad)](),this[_0x40960b(0x22f)](),this[_0x40960b(0x405)]();}['requestBrickSchedule'](){const _0x2d56d6=_0x5d7726;this[_0x2d56d6(0x2dc)]=!0x0,this[_0x2d56d6(0x14e)]();}[_0x5d7726(0x326)](){const _0x47ee1a=_0x5d7726;this[_0x47ee1a(0x2dc)]&&(this[_0x47ee1a(0x2dc)]=!0x1,this[_0x47ee1a(0x405)]());}[_0x5d7726(0x405)](){const _0x150d31=_0x5d7726;if(this[_0x150d31(0x31d)])return;this['brickScheduleDirty']=!0x1,this[_0x150d31(0x21f)]+=0x1;let _0x59fa0e=this[_0x150d31(0x35c)][_0x150d31(0x3ec)][_0x150d31(0x2b0)];if(_0x59fa0e<=0x0)return;let _0x4fe1a4=_0x59fa0e>=this[_0x150d31(0x40f)][_0x150d31(0x1bc)];if(_0x4fe1a4&&this[_0x150d31(0x34c)]['size']===this['descriptors'][_0x150d31(0x1bc)]&&this[_0x150d31(0x1c6)][_0x150d31(0x261)]===this[_0x150d31(0x40f)]['length']&&this[_0x150d31(0x3b5)]['size']===0x0)return;let _0x444e50;_0x4fe1a4?_0x444e50=this[_0x150d31(0x40f)]:(this[_0x150d31(0x1cf)]+=0x1,_0x444e50=[...this[_0x150d31(0x40f)]][_0x150d31(0x2eb)]((_0x46cc3c,_0x874981)=>descriptorDemandPriority(_0x46cc3c,this[_0x150d31(0x345)],this[_0x150d31(0x2e1)],this[_0x150d31(0x282)])-descriptorDemandPriority(_0x874981,this['source'],this[_0x150d31(0x2e1)],this[_0x150d31(0x282)])||descriptorDistance(_0x46cc3c,this[_0x150d31(0x26b)],this[_0x150d31(0x34d)][_0x150d31(0x39b)])-descriptorDistance(_0x874981,this['layout'],this[_0x150d31(0x34d)]['state']))[_0x150d31(0x1a5)](0x0,_0x59fa0e));let _0x2e8e3e=new Set(_0x444e50[_0x150d31(0x3ef)](_0x2c7ec9=>_0x2c7ec9['key']));this[_0x150d31(0x34c)]=_0x2e8e3e,_0x4fe1a4||this[_0x150d31(0x35c)]['touchBricks'](_0x444e50[_0x150d31(0x28d)](_0x4aa771=>this[_0x150d31(0x1c6)][_0x150d31(0x2de)](_0x4aa771[_0x150d31(0x3da)]))['map'](_0xfeed4d=>descriptorLogicalIndex(_0xfeed4d,this['layout'])));for(let _0x42a361 of this[_0x150d31(0x1c6)])_0x2e8e3e[_0x150d31(0x2de)](_0x42a361)||this[_0x150d31(0x1c6)]['delete'](_0x42a361);let _0x44c79a=Math[_0x150d31(0x2e5)](0x0,qualityUploadCount(this[_0x150d31(0x254)]())-this[_0x150d31(0x3b5)][_0x150d31(0x261)]),_0xa949df=_0x444e50[_0x150d31(0x28d)](_0x1bf453=>!this['loadedKeys'][_0x150d31(0x2de)](_0x1bf453[_0x150d31(0x3da)])&&!this[_0x150d31(0x3b5)][_0x150d31(0x2de)](_0x1bf453[_0x150d31(0x3da)]))[_0x150d31(0x1a5)](0x0,_0x44c79a);for(let _0x3dbf5a of _0xa949df)this['loadBrick'](_0x3dbf5a);}[_0x5d7726(0x335)](_0x52e8dd){const _0x4ac233=_0x5d7726;let _0x56ae1f=this['sourceGeneration'],_0x4f5796=this[_0x4ac233(0x345)],_0x598463=this['timeIndex'],_0x12b4b4=new AbortController();this[_0x4ac233(0x26d)][_0x4ac233(0x2e7)](_0x12b4b4),this[_0x4ac233(0x3b5)][_0x4ac233(0x1f8)](_0x52e8dd[_0x4ac233(0x3da)],_0x56ae1f),Promise[_0x4ac233(0x2c1)](_0x4f5796[_0x4ac233(0x3f9)](_0x598463,_0x52e8dd[_0x4ac233(0x3eb)],_0x12b4b4[_0x4ac233(0x182)]))[_0x4ac233(0x249)](async _0x1bf90b=>{const _0x4ed7c7=_0x4ac233;if(this[_0x4ed7c7(0x31d)]||_0x56ae1f!==this['sourceGeneration']||_0x4f5796!==this['source']||_0x598463!==this[_0x4ed7c7(0x383)]||!this[_0x4ed7c7(0x34c)]['has'](_0x52e8dd[_0x4ed7c7(0x3da)]))return;let _0x45adad=createPhysicalBrickValues(_0x4f5796[_0x4ed7c7(0x25f)],this[_0x4ed7c7(0x26b)][_0x4ed7c7(0x2df)],_0x52e8dd,_0x1bf90b),_0x1f9f18=descriptorLogicalIndex(_0x52e8dd,this[_0x4ed7c7(0x26b)]);await this[_0x4ed7c7(0x35c)]['uploadBrick']({'logicalIndex':_0x1f9f18,'values':_0x45adad}),!(this[_0x4ed7c7(0x31d)]||_0x56ae1f!==this[_0x4ed7c7(0x219)]||_0x4f5796!==this[_0x4ed7c7(0x345)]||_0x598463!==this[_0x4ed7c7(0x383)]||!this[_0x4ed7c7(0x34c)][_0x4ed7c7(0x2de)](_0x52e8dd['key']))&&(this['loadedKeys']['add'](_0x52e8dd[_0x4ed7c7(0x3da)]),this[_0x4ed7c7(0x14e)]());})[_0x4ac233(0x3c3)](_0x20ab04=>{const _0x3d02da=_0x4ac233;_0x20ab04 instanceof DOMException&&_0x20ab04[_0x3d02da(0x27a)]===_0x3d02da(0x38d)||console[_0x3d02da(0x157)](_0x20ab04);})[_0x4ac233(0x262)](()=>{const _0x13de4c=_0x4ac233;this[_0x13de4c(0x26d)][_0x13de4c(0x370)](_0x12b4b4),this[_0x13de4c(0x3b5)][_0x13de4c(0x248)](_0x52e8dd[_0x13de4c(0x3da)])===_0x56ae1f&&this[_0x13de4c(0x3b5)][_0x13de4c(0x370)](_0x52e8dd[_0x13de4c(0x3da)]),_0x56ae1f===this['sourceGeneration']&&this[_0x13de4c(0x405)]();});}[_0x5d7726(0x328)](){const _0xdc0d4a=_0x5d7726;this['renderDirty']&&this[_0xdc0d4a(0x14e)]();}[_0x5d7726(0x14e)](){const _0x3d2cab=_0x5d7726;this['destroyed']||(this['renderDirty']=!0x0,!(this[_0x3d2cab(0x1d9)]!==_0x3d2cab(0x161)||this[_0x3d2cab(0x34b)]!==0x0)&&(this[_0x3d2cab(0x34b)]=requestAnimationFrame(()=>{const _0x14974a=_0x3d2cab;this[_0x14974a(0x34b)]=0x0,!(this[_0x14974a(0x31d)]||!this[_0x14974a(0x189)])&&this['render']();})));}};const createVolumeScene=_0x19a593=>VolumeScene[_0x5d7726(0x402)](_0x19a593),validateIndexRange=(_0x416dee,_0x4d1c07,_0x5564af,_0x534461)=>{const _0x4879ae=_0x5d7726;if(!Number[_0x4879ae(0x291)](_0x416dee)||!Number[_0x4879ae(0x291)](_0x4d1c07)||_0x416dee<0x0||_0x4d1c07<=0x0||_0x416dee+_0x4d1c07>_0x5564af)throw Error(_0x534461+_0x4879ae(0x240)+_0x416dee+_0x4879ae(0x288)+_0x4d1c07+_0x4879ae(0x2e3)+_0x5564af+'.\x20'+_0x534461+_0x4879ae(0x247));},validateRange=(_0x55ed8f,_0xd01663)=>{const _0x1b6d26=_0x5d7726;validateIndexRange(_0xd01663['xStart'],_0xd01663[_0x1b6d26(0x145)],_0x55ed8f[_0x1b6d26(0xf1)][_0x1b6d26(0x12c)],'X'),validateIndexRange(_0xd01663[_0x1b6d26(0x123)],_0xd01663[_0x1b6d26(0x2a0)],_0x55ed8f['yAxis'][_0x1b6d26(0x12c)],_0x1b6d26(0x259)),validateIndexRange(_0xd01663[_0x1b6d26(0x1c8)],_0xd01663[_0x1b6d26(0x1e9)],_0x55ed8f['zAxis'][_0x1b6d26(0x12c)],_0x1b6d26(0x20a));},validateData=_0x203a15=>{const _0x334ce4=_0x5d7726;validateVolumeMetadata(_0x203a15);let _0x10d581=_0x203a15[_0x334ce4(0xf1)][_0x334ce4(0x12c)]*_0x203a15['yAxis'][_0x334ce4(0x12c)]*_0x203a15['zAxis']['count']*_0x203a15[_0x334ce4(0x2c6)];if(_0x203a15['values']['length']!==_0x10d581)throw Error(_0x334ce4(0x12d)+_0x10d581+_0x334ce4(0x1a6)+_0x203a15[_0x334ce4(0xf8)][_0x334ce4(0x1bc)]+'.\x20体积数据长度与维度不匹配。');},createInMemoryVolumeSource=_0x2b4c62=>{validateData(_0x2b4c62);let {values:_0x595f4c,..._0x1d3b10}=_0x2b4c62;return{'metadata':_0x1d3b10,'readChunk'(_0x2666fa,_0x1fca8a,_0x30a5f3){const _0x469681=_0x2fcb;if(_0x30a5f3?.['aborted'])throw new DOMException(_0x469681(0x130),_0x469681(0x38d));if(!Number[_0x469681(0x291)](_0x2666fa)||_0x2666fa<0x0||_0x2666fa>=_0x2b4c62[_0x469681(0x2c6)])throw Error(_0x469681(0xf3)+_0x2666fa+'.\x20体积\x20timeIndex\x20越界。');validateRange(_0x2b4c62,_0x1fca8a);let _0x2ee465=new Float32Array(_0x1fca8a[_0x469681(0x145)]*_0x1fca8a[_0x469681(0x2a0)]*_0x1fca8a[_0x469681(0x1e9)]),_0x1620fe=_0x2b4c62[_0x469681(0xf1)][_0x469681(0x12c)],_0x5d5961=_0x2b4c62[_0x469681(0x3b6)][_0x469681(0x12c)],_0x4da0f1=_0x2b4c62[_0x469681(0x404)][_0x469681(0x12c)],_0x3c791d=_0x2666fa*_0x1620fe*_0x5d5961*_0x4da0f1;for(let _0x8bea5=0x0;_0x8bea5<_0x1fca8a[_0x469681(0x1e9)];_0x8bea5+=0x1)for(let _0x4a7301=0x0;_0x4a7301<_0x1fca8a[_0x469681(0x2a0)];_0x4a7301+=0x1){let _0x1cfb64=_0x3c791d+(((_0x1fca8a[_0x469681(0x1c8)]+_0x8bea5)*_0x5d5961+_0x1fca8a[_0x469681(0x123)]+_0x4a7301)*_0x1620fe+_0x1fca8a[_0x469681(0x37c)]),_0x4a5a8b=(_0x8bea5*_0x1fca8a[_0x469681(0x2a0)]+_0x4a7301)*_0x1fca8a[_0x469681(0x145)];_0x2ee465[_0x469681(0x1f8)](_0x595f4c[_0x469681(0x21b)](_0x1cfb64,_0x1cfb64+_0x1fca8a[_0x469681(0x145)]),_0x4a5a8b);}return{'timeIndex':_0x2666fa,'range':{..._0x1fca8a},'width':_0x1fca8a[_0x469681(0x145)],'height':_0x1fca8a[_0x469681(0x2a0)],'depth':_0x1fca8a[_0x469681(0x1e9)],'values':_0x2ee465};}};};exports[_0x5d7726(0x338)]=VolumeCamera,exports[_0x5d7726(0x11a)]=createGeographicVolumeLayout,exports['createInMemoryVolumeSource']=createInMemoryVolumeSource,exports[_0x5d7726(0x372)]=createVolumeScene,exports[_0x5d7726(0x172)]=ecefToGeographicVolumeLocal,exports[_0x5d7726(0x258)]=normalizedToVolumeAxisValue,exports[_0x5d7726(0x26f)]=volumeAxisValueToNormalized;