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
+ function _0x136b(){const _0x49fdd4=['setTimeIndex','Native\x20volume\x20opacity\x20must\x20be\x20finite.\x20原生体积透明度必须是有限数。','depthTest','1491345KSJTcM','auto','setSource','screenSpaceError','loadController','abs','statistics','densityScale','show','\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20','Cartesian3','onError','690KHDMMX','A\x20destroyed\x20native\x20Mars3D\x20volume\x20cannot\x20be\x20used.\x20已销毁的\x20Mars3D\x20原生体积不能继续使用。','createCustomShader','timeCount','21ApvHge','readyPromise','2250tpILcy','TRANSLUCENT','customShader','remove','primitive','cesium','UNLIT','4627RKznCk','6408216nVhtZq','colorStops','texturesByteLength','opacity','quality','scene','nearestSampling','source','76164yjeQfB','5117800NwBOky','4AAsFIy','colorMode','maxBounds','end','VoxelPrimitive','abort','\x20必须是正有限数。','smooth','CustomShaderTranslucencyMode','min','UniformType','setShow','stepSize','CustomShader','aborted','requestRender','primitives','replacePrimitive','max','assertAlive','opacityStops','184581bkFRnj','replaceCustomShader','start','updateBounds','update','destroyed','u_densityScale','LightingModel','updateShaderUniforms','verticalScale','map','shown','signal','destroy','performance','9YypaKS','isFinite','330346iuZsGq','FLOAT','timeIndex'];_0x136b=function(){return _0x49fdd4;};return _0x136b();}const _0x456ae8=_0xc1f7;(function(_0x20ffb0,_0xbd7d22){const _0x5407f2=_0xc1f7,_0x111c93=_0x20ffb0();while(!![]){try{const _0x308a07=-parseInt(_0x5407f2(0x1a0))/0x1+parseInt(_0x5407f2(0x1b1))/0x2*(parseInt(_0x5407f2(0x177))/0x3)+parseInt(_0x5407f2(0x18b))/0x4*(-parseInt(_0x5407f2(0x1b7))/0x5)+-parseInt(_0x5407f2(0x173))/0x6*(parseInt(_0x5407f2(0x180))/0x7)+parseInt(_0x5407f2(0x18a))/0x8*(-parseInt(_0x5407f2(0x1af))/0x9)+parseInt(_0x5407f2(0x179))/0xa*(parseInt(_0x5407f2(0x189))/0xb)+-parseInt(_0x5407f2(0x181))/0xc;if(_0x308a07===_0xbd7d22)break;else _0x111c93['push'](_0x111c93['shift']());}catch(_0x298513){_0x111c93['push'](_0x111c93['shift']());}}}(_0x136b,0xef9ff));import{createNativeVoxelFragmentShader}from'./nativeVoxelShader';import{createNativeVoxelProvider}from'./nativeVoxelProvider';function _0xc1f7(_0x534a5b,_0x49465a){const _0x136b4b=_0x136b();return _0xc1f7=function(_0xc1f73c,_0x1c9afb){_0xc1f73c=_0xc1f73c-0x168;let _0xef84ff=_0x136b4b[_0xc1f73c];return _0xef84ff;},_0xc1f7(_0x534a5b,_0x49465a);}import{loadNativeVoxelData}from'./voxelData';const getError=_0x183807=>_0x183807 instanceof Error?_0x183807:new Error(String(_0x183807)),getStepSize=_0x36e9a3=>{const _0x4fe8fb=_0xc1f7;if(_0x36e9a3===_0x4fe8fb(0x185))return 0.65;if(_0x36e9a3===_0x4fe8fb(0x1ae))return 1.8;if(_0x36e9a3===_0x4fe8fb(0x168))return 1.15;return 0x1;},validatePositive=(_0x36a9b0,_0x308908)=>{const _0x1e87cd=_0xc1f7;if(!(_0x36a9b0>0x0)||!Number['isFinite'](_0x36a9b0))throw new Error(_0x308908+_0x1e87cd(0x170)+_0x308908+_0x1e87cd(0x191));return _0x36a9b0;},clampOpacity=_0x214b2d=>{const _0x48cf89=_0xc1f7;if(!Number[_0x48cf89(0x1b0)](_0x214b2d))throw new Error(_0x48cf89(0x1b5));return Math[_0x48cf89(0x19d)](0x0,Math['min'](0x1,_0x214b2d));};export class Mars3dNativeVolumeRenderer{[_0x456ae8(0x178)];[_0x456ae8(0x1aa)];['cesium'];['onError'];['primitive']=null;[_0x456ae8(0x188)];[_0x456ae8(0x1b3)];[_0x456ae8(0x185)];[_0x456ae8(0x184)];[_0x456ae8(0x16e)];['verticalScale'];[_0x456ae8(0x182)];[_0x456ae8(0x19f)];[_0x456ae8(0x18c)];[_0x456ae8(0x1ab)];[_0x456ae8(0x1a5)]=![];['loadController']=null;constructor(_0x2e7fd2,_0x5d6804,_0x556915){const _0x57bf5b=_0x456ae8;this[_0x57bf5b(0x1aa)]=_0x2e7fd2,this[_0x57bf5b(0x17e)]=_0x5d6804,this[_0x57bf5b(0x172)]=_0x556915[_0x57bf5b(0x172)],this[_0x57bf5b(0x188)]=_0x556915['source'],this['timeIndex']=_0x556915[_0x57bf5b(0x1b3)]??0x0,this[_0x57bf5b(0x185)]=_0x556915[_0x57bf5b(0x185)]??'balanced',this[_0x57bf5b(0x184)]=clampOpacity(_0x556915['opacity']??0.3),this[_0x57bf5b(0x16e)]=validatePositive(_0x556915[_0x57bf5b(0x16e)]??0x64,'densityScale'),this[_0x57bf5b(0x1a9)]=validatePositive(_0x556915['verticalScale']??0x1,_0x57bf5b(0x1a9)),this['colorStops']=[..._0x556915[_0x57bf5b(0x182)]],this[_0x57bf5b(0x19f)]=[..._0x556915[_0x57bf5b(0x19f)]],this[_0x57bf5b(0x18c)]=_0x556915[_0x57bf5b(0x18c)]??_0x57bf5b(0x192),this['shown']=_0x556915[_0x57bf5b(0x16f)]??!![],this[_0x57bf5b(0x178)]=this[_0x57bf5b(0x19c)]();}get[_0x456ae8(0x16d)](){const _0x2c3054=_0x456ae8,_0x4d7c1e=this[_0x2c3054(0x17d)]?.[_0x2c3054(0x16d)];if(!_0x4d7c1e)return null;return{'texturesByteLength':_0x4d7c1e[_0x2c3054(0x183)]??0x0,'visited':_0x4d7c1e['visited']??0x0,'numberOfTilesWithContentReady':_0x4d7c1e['numberOfTilesWithContentReady']??0x0};}[_0x456ae8(0x196)](_0x13622b){const _0x3ff091=_0x456ae8;this[_0x3ff091(0x19e)](),this['shown']=_0x13622b;if(this[_0x3ff091(0x17d)])this['primitive'][_0x3ff091(0x16f)]=_0x13622b;this[_0x3ff091(0x1aa)]['scene'][_0x3ff091(0x19a)]();}[_0x456ae8(0x1a4)](_0xa6031a){const _0x3aa481=_0x456ae8;this[_0x3aa481(0x19e)]();if(_0xa6031a['quality']){this[_0x3aa481(0x185)]=_0xa6031a['quality'];if(this[_0x3aa481(0x17d)])this[_0x3aa481(0x17d)][_0x3aa481(0x197)]=getStepSize(this[_0x3aa481(0x185)]);}if(_0xa6031a[_0x3aa481(0x184)]!==undefined)this['opacity']=clampOpacity(_0xa6031a[_0x3aa481(0x184)]);if(_0xa6031a[_0x3aa481(0x16e)]!==undefined)this[_0x3aa481(0x16e)]=validatePositive(_0xa6031a[_0x3aa481(0x16e)],_0x3aa481(0x16e));_0xa6031a[_0x3aa481(0x1a9)]!==undefined&&(this[_0x3aa481(0x1a9)]=validatePositive(_0xa6031a[_0x3aa481(0x1a9)],_0x3aa481(0x1a9)),this[_0x3aa481(0x1a3)]());const _0x165d9e=_0xa6031a[_0x3aa481(0x182)]!==undefined||_0xa6031a[_0x3aa481(0x19f)]!==undefined||_0xa6031a[_0x3aa481(0x18c)]!==undefined;if(_0xa6031a[_0x3aa481(0x182)])this[_0x3aa481(0x182)]=[..._0xa6031a[_0x3aa481(0x182)]];if(_0xa6031a['opacityStops'])this[_0x3aa481(0x19f)]=[..._0xa6031a[_0x3aa481(0x19f)]];if(_0xa6031a[_0x3aa481(0x18c)])this[_0x3aa481(0x18c)]=_0xa6031a[_0x3aa481(0x18c)];if(_0x165d9e)this[_0x3aa481(0x1a1)]();this[_0x3aa481(0x1a8)](),this['map']['scene'][_0x3aa481(0x19a)]();}async[_0x456ae8(0x169)](_0x255e2c){const _0x4f9ff3=_0x456ae8;this[_0x4f9ff3(0x19e)](),this[_0x4f9ff3(0x188)]=_0x255e2c,this[_0x4f9ff3(0x1b3)]=Math['min'](this[_0x4f9ff3(0x1b3)],_0x255e2c['metadata'][_0x4f9ff3(0x176)]-0x1),await this[_0x4f9ff3(0x19c)]();}async[_0x456ae8(0x1b4)](_0x534683){const _0x55003b=_0x456ae8;this['assertAlive']();if(_0x534683===this[_0x55003b(0x1b3)])return;this[_0x55003b(0x1b3)]=_0x534683,await this[_0x55003b(0x19c)]();}[_0x456ae8(0x1ad)](){const _0x4e42c0=_0x456ae8;if(this['destroyed'])return;this[_0x4e42c0(0x1a5)]=!![],this[_0x4e42c0(0x16b)]?.[_0x4e42c0(0x190)](),this[_0x4e42c0(0x16b)]=null;if(this[_0x4e42c0(0x17d)])this['map'][_0x4e42c0(0x186)][_0x4e42c0(0x19b)][_0x4e42c0(0x17c)](this['primitive']);this['primitive']=null;}async[_0x456ae8(0x19c)](){const _0x580084=_0x456ae8;this['loadController']?.[_0x580084(0x190)]();const _0x57e509=new AbortController();this[_0x580084(0x16b)]=_0x57e509;try{const _0x116eb2=await loadNativeVoxelData(this[_0x580084(0x188)],this[_0x580084(0x1b3)],_0x57e509[_0x580084(0x1ac)]);if(this[_0x580084(0x1a5)]||_0x57e509[_0x580084(0x1ac)][_0x580084(0x199)])return;const _0xcfb03c=createNativeVoxelProvider(this[_0x580084(0x17e)],this[_0x580084(0x188)],_0x116eb2,this[_0x580084(0x1a9)]),_0x34f20e=this[_0x580084(0x175)](),_0x29f6be=new this[(_0x580084(0x17e))][(_0x580084(0x18f))]({'provider':_0xcfb03c,'customShader':_0x34f20e,'calculateStatistics':!![]});_0x29f6be[_0x580084(0x16f)]=this[_0x580084(0x1ab)],_0x29f6be[_0x580084(0x197)]=getStepSize(this['quality']),_0x29f6be[_0x580084(0x16a)]=0x8,_0x29f6be[_0x580084(0x1b6)]=!![],_0x29f6be[_0x580084(0x187)]=![];const _0x11e135=this[_0x580084(0x17d)];this['primitive']=this[_0x580084(0x1aa)][_0x580084(0x186)][_0x580084(0x19b)]['add'](_0x29f6be);if(_0x11e135)this['map'][_0x580084(0x186)]['primitives'][_0x580084(0x17c)](_0x11e135);this[_0x580084(0x1aa)][_0x580084(0x186)][_0x580084(0x19a)]();}catch(_0x4b1005){if(_0x57e509[_0x580084(0x1ac)][_0x580084(0x199)])return;const _0x3bbc38=getError(_0x4b1005);this['onError']?.(_0x3bbc38);throw _0x3bbc38;}finally{if(this[_0x580084(0x16b)]===_0x57e509)this['loadController']=null;}}['createCustomShader'](){const _0x171f14=_0x456ae8;return new this[(_0x171f14(0x17e))][(_0x171f14(0x198))]({'uniforms':{'u_opacity':{'type':this[_0x171f14(0x17e)][_0x171f14(0x195)][_0x171f14(0x1b2)],'value':this[_0x171f14(0x184)]},'u_densityScale':{'type':this[_0x171f14(0x17e)]['UniformType'][_0x171f14(0x1b2)],'value':this[_0x171f14(0x16e)]}},'lightingModel':this[_0x171f14(0x17e)][_0x171f14(0x1a7)][_0x171f14(0x17f)],'translucencyMode':this['cesium'][_0x171f14(0x193)][_0x171f14(0x17a)],'fragmentShaderText':createNativeVoxelFragmentShader(this[_0x171f14(0x182)],this['opacityStops'],this[_0x171f14(0x18c)])});}[_0x456ae8(0x1a1)](){const _0x960cda=_0x456ae8;if(!this['primitive'])return;const _0x3600de=this[_0x960cda(0x17d)][_0x960cda(0x17b)];this[_0x960cda(0x17d)][_0x960cda(0x17b)]=this[_0x960cda(0x175)](),_0x3600de['destroy']();}[_0x456ae8(0x1a8)](){const _0x159c17=_0x456ae8;this['primitive']?.['customShader']['setUniform']('u_opacity',this[_0x159c17(0x184)]),this['primitive']?.[_0x159c17(0x17b)]['setUniform'](_0x159c17(0x1a6),this['densityScale']);}[_0x456ae8(0x1a3)](){const _0x5a9aba=_0x456ae8;if(!this[_0x5a9aba(0x17d)])return;const {xAxis:_0x255b2d,yAxis:_0x17381a,zAxis:_0x36836a}=this[_0x5a9aba(0x188)]['metadata'],_0x14739d=Math['min'](_0x17381a[_0x5a9aba(0x1a2)],_0x17381a[_0x5a9aba(0x18e)]);this[_0x5a9aba(0x17d)]['minBounds']=new this['cesium']['Cartesian3'](Math[_0x5a9aba(0x194)](_0x255b2d[_0x5a9aba(0x1a2)],_0x255b2d[_0x5a9aba(0x18e)])*Math['PI']/0xb4,Math[_0x5a9aba(0x194)](_0x36836a['start'],_0x36836a[_0x5a9aba(0x18e)])*Math['PI']/0xb4,_0x14739d),this['primitive'][_0x5a9aba(0x18d)]=new this[(_0x5a9aba(0x17e))][(_0x5a9aba(0x171))](Math[_0x5a9aba(0x19d)](_0x255b2d['start'],_0x255b2d[_0x5a9aba(0x18e)])*Math['PI']/0xb4,Math[_0x5a9aba(0x19d)](_0x36836a[_0x5a9aba(0x1a2)],_0x36836a[_0x5a9aba(0x18e)])*Math['PI']/0xb4,_0x14739d+Math[_0x5a9aba(0x16c)](_0x17381a[_0x5a9aba(0x18e)]-_0x17381a['start'])*this['verticalScale']);}['assertAlive'](){const _0x5f3c21=_0x456ae8;if(this[_0x5f3c21(0x1a5)])throw new Error(_0x5f3c21(0x174));}}
@@ -0,0 +1,40 @@
1
+ import type { IVolumeSource } from '../volume-scene/sourceTypes';
2
+ import type { IVolumeLockedSlice } from '../volume-scene/sliceTypes';
3
+ import type { IVolumeOpacityStop, VolumeColorMode, VolumeColorStopInput } from '../volume-scene/transferTypes';
4
+ import type { INativeSliceCesiumRuntime } from './nativeSliceRuntimeTypes';
5
+ import type { IMars3dNativeMapLike } from './nativeTypes';
6
+ import type { INativeVoxelData } from './voxelData';
7
+ interface INativeAxisSliceRenderState {
8
+ slices: readonly IVolumeLockedSlice[];
9
+ source: IVolumeSource;
10
+ data: INativeVoxelData;
11
+ colorStops: readonly VolumeColorStopInput[];
12
+ opacityStops: readonly IVolumeOpacityStop[];
13
+ colorMode: VolumeColorMode;
14
+ verticalScale: number;
15
+ }
16
+ export declare class NativeAxisSliceRenderer {
17
+ private readonly map;
18
+ private readonly cesium;
19
+ private readonly entries;
20
+ private readonly pending;
21
+ private readonly dirtySliceIds;
22
+ private readonly rebuildScheduler;
23
+ private state;
24
+ private shown;
25
+ private destroyed;
26
+ constructor(map: IMars3dNativeMapLike, cesium: INativeSliceCesiumRuntime);
27
+ sync(state: INativeAxisSliceRenderState, immediate?: boolean): void;
28
+ setShow(show: boolean): void;
29
+ destroy(): void;
30
+ private rebuild;
31
+ private replace;
32
+ private createAltitudeGeometry;
33
+ private createWallGeometry;
34
+ private getAxis;
35
+ private createColor;
36
+ private createRenderState;
37
+ private removePending;
38
+ private remove;
39
+ }
40
+ export {};
@@ -0,0 +1 @@
1
+ function _0x1a0b(_0x43b289,_0x3e1df3){const _0x57151e=_0x5715();return _0x1a0b=function(_0x1a0b4a,_0x28ce65){_0x1a0b4a=_0x1a0b4a-0xa6;let _0x2a290d=_0x57151e[_0x1a0b4a];return _0x2a290d;},_0x1a0b(_0x43b289,_0x3e1df3);}const _0xb5a9bf=_0x1a0b;(function(_0x142298,_0x456d26){const _0x57599a=_0x1a0b,_0x41827d=_0x142298();while(!![]){try{const _0x4dbb4b=parseInt(_0x57599a(0xf6))/0x1+-parseInt(_0x57599a(0xab))/0x2+parseInt(_0x57599a(0xed))/0x3+-parseInt(_0x57599a(0xce))/0x4+parseInt(_0x57599a(0xa7))/0x5*(-parseInt(_0x57599a(0xb3))/0x6)+parseInt(_0x57599a(0xd4))/0x7+-parseInt(_0x57599a(0xa6))/0x8;if(_0x4dbb4b===_0x456d26)break;else _0x41827d['push'](_0x41827d['shift']());}catch(_0x51f781){_0x41827d['push'](_0x41827d['shift']());}}}(_0x5715,0xe4aa3));import{LiveUpdateScheduler}from'./liveUpdateScheduler';function _0x5715(){const _0x3238f1=['destroyed','Math','Material','uniforms','12894476oBhvgq','scene','sync','Cartesian3','MaterialSupport','dirtySliceIds','Rectangle','entries','source','remove','pending','createAltitudeGeometry','map','schedule','removeListener','slices','getContext','destroy','metadata','rebuild','min','get','vertexFormat','postRender','has','5379378GBvJmQ','RectangleGeometry','VERTEX_FORMAT','start','keys','Primitive','verticalScale','shown','visible','1864768cIdyVs','removePending','createColor','delete','cesium','17733064sBCBeN','5nSVCml','EllipsoidSurfaceAppearance','createElement','canvas','782824MevvQM','zAxis','filter','Image','getAxis','replace','end','WallGeometry','11171526eOIUPB','TEXTURED','createRenderState','rebuildScheduler','data','fromRadians','primitives','yAxis','pixels','position','cancel','add','requestRender','setShow','values','primitive','createWallGeometry','MaterialAppearance','max','abs','Color','width','set','show','state','height','axis','373540EOQRxG','toRadians'];_0x5715=function(){return _0x3238f1;};return _0x5715();}import{createNativeAxisSliceImage,nativeAxisPositionToIndex}from'./nativeSliceAtlas';export class NativeAxisSliceRenderer{[_0xb5a9bf(0xe0)];[_0xb5a9bf(0xfa)];[_0xb5a9bf(0xdb)]=new Map();[_0xb5a9bf(0xde)]=new Map();[_0xb5a9bf(0xd9)]=new Set();[_0xb5a9bf(0xb6)];[_0xb5a9bf(0xcb)]=null;[_0xb5a9bf(0xf4)]=!![];[_0xb5a9bf(0xd0)]=![];constructor(_0x9c7aab,_0x502696){const _0x52c37b=_0xb5a9bf;this[_0x52c37b(0xe0)]=_0x9c7aab,this[_0x52c37b(0xfa)]=_0x502696,this[_0x52c37b(0xb6)]=new LiveUpdateScheduler(()=>this[_0x52c37b(0xe7)](),0x3c);}[_0xb5a9bf(0xd6)](_0x256c3b,_0x30b5f4=![]){const _0x172486=_0xb5a9bf;if(this[_0x172486(0xd0)])return;const _0x3c53c2=new Map(this[_0x172486(0xcb)]?.[_0x172486(0xe3)][_0x172486(0xe0)](_0xccd78c=>[_0xccd78c['id'],_0xccd78c])??[]);for(const _0x242e75 of _0x256c3b[_0x172486(0xe3)]){const _0x3a3e1d=_0x3c53c2[_0x172486(0xe9)](_0x242e75['id']);if(!_0x3a3e1d||_0x3a3e1d[_0x172486(0xcd)]!==_0x242e75[_0x172486(0xcd)]||_0x3a3e1d['position']!==_0x242e75['position']||_0x3a3e1d['visible']!==_0x242e75[_0x172486(0xf5)])this[_0x172486(0xd9)][_0x172486(0xbe)](_0x242e75['id']);}this['state']=_0x256c3b;if(_0x30b5f4){for(const _0x309713 of _0x256c3b[_0x172486(0xe3)])this[_0x172486(0xd9)][_0x172486(0xbe)](_0x309713['id']);this[_0x172486(0xb6)]['cancel'](),this[_0x172486(0xe7)]();}else this[_0x172486(0xb6)][_0x172486(0xe1)]();}[_0xb5a9bf(0xc0)](_0x416ff4){const _0x367b23=_0xb5a9bf;this[_0x367b23(0xf4)]=_0x416ff4;for(const _0x33a965 of this[_0x367b23(0xdb)][_0x367b23(0xc1)]())_0x33a965[_0x367b23(0xc2)]['show']=_0x416ff4;this[_0x367b23(0xe0)][_0x367b23(0xd5)]['requestRender']();}[_0xb5a9bf(0xe5)](){const _0x50b3ab=_0xb5a9bf;if(this[_0x50b3ab(0xd0)])return;this[_0x50b3ab(0xd0)]=!![],this[_0x50b3ab(0xb6)][_0x50b3ab(0xbd)]();for(const _0x3ac40c of[...this['entries'][_0x50b3ab(0xf1)](),...this[_0x50b3ab(0xde)][_0x50b3ab(0xf1)]()])this[_0x50b3ab(0xdd)](_0x3ac40c);this[_0x50b3ab(0xcb)]=null;}['rebuild'](){const _0x79f7bd=_0xb5a9bf,_0x3eb69f=this[_0x79f7bd(0xcb)];if(!_0x3eb69f||this['destroyed'])return;const _0x4c4af2=new Set(_0x3eb69f[_0x79f7bd(0xe3)][_0x79f7bd(0xad)](_0x4cec27=>_0x4cec27[_0x79f7bd(0xf5)])['map'](_0x1305c1=>_0x1305c1['id']));for(const _0x17c335 of new Set([...this[_0x79f7bd(0xdb)]['keys'](),...this['pending'][_0x79f7bd(0xf1)](),...this[_0x79f7bd(0xd9)]])){if(_0x4c4af2['has'](_0x17c335))continue;this[_0x79f7bd(0xdd)](_0x17c335),this[_0x79f7bd(0xd9)]['delete'](_0x17c335);}for(const _0x46fbcf of _0x3eb69f[_0x79f7bd(0xe3)]){if(!_0x46fbcf[_0x79f7bd(0xf5)])continue;if(this[_0x79f7bd(0xd9)][_0x79f7bd(0xec)](_0x46fbcf['id'])||!this[_0x79f7bd(0xdb)][_0x79f7bd(0xec)](_0x46fbcf['id'])&&!this[_0x79f7bd(0xde)][_0x79f7bd(0xec)](_0x46fbcf['id']))this['replace'](_0x46fbcf,_0x3eb69f);this[_0x79f7bd(0xd9)][_0x79f7bd(0xf9)](_0x46fbcf['id']);}this['map'][_0x79f7bd(0xd5)]['requestRender']();}[_0xb5a9bf(0xb0)](_0x26d8a0,_0x155d37){const _0x1c1d6c=_0xb5a9bf;this['removePending'](_0x26d8a0['id']);const _0x47e4cf=this[_0x1c1d6c(0xdb)][_0x1c1d6c(0xe9)](_0x26d8a0['id']),_0x2fc652=createNativeAxisSliceImage(_0x155d37[_0x1c1d6c(0xb7)],_0x26d8a0['axis'],nativeAxisPositionToIndex(this[_0x1c1d6c(0xaf)](_0x155d37[_0x1c1d6c(0xdc)],_0x26d8a0[_0x1c1d6c(0xcd)]),_0x26d8a0[_0x1c1d6c(0xbc)]),_0x155d37),_0x4da3b5=document[_0x1c1d6c(0xa9)](_0x1c1d6c(0xaa));_0x4da3b5[_0x1c1d6c(0xc8)]=_0x2fc652['width'],_0x4da3b5[_0x1c1d6c(0xcc)]=_0x2fc652[_0x1c1d6c(0xcc)];const _0x2c757e=_0x4da3b5[_0x1c1d6c(0xe4)]('2d');if(!_0x2c757e)throw new Error('Native\x20axis\x20slice\x20requires\x20a\x202D\x20canvas\x20context.\x20原生轴切片需要\x202D\x20画布上下文。');_0x2c757e['putImageData'](new ImageData(new Uint8ClampedArray(_0x2fc652[_0x1c1d6c(0xbb)]),_0x2fc652[_0x1c1d6c(0xc8)],_0x2fc652['height']),0x0,0x0);const _0x20fe0a=new this[(_0x1c1d6c(0xfa))][(_0x1c1d6c(0xd2))]({'fabric':{'type':_0x1c1d6c(0xae),'uniforms':{'image':_0x4da3b5,'color':this[_0x1c1d6c(0xf8)](_0x47e4cf?0x0:0x1)}}}),_0x2eaac3=_0x26d8a0[_0x1c1d6c(0xcd)]==='y'?this['createAltitudeGeometry'](_0x155d37[_0x1c1d6c(0xdc)],_0x26d8a0['position'],_0x155d37[_0x1c1d6c(0xf3)]):this[_0x1c1d6c(0xc3)](_0x155d37[_0x1c1d6c(0xdc)],_0x26d8a0,_0x155d37[_0x1c1d6c(0xf3)]),_0xc393b5=_0x26d8a0['axis']==='y'?new this['cesium']['EllipsoidSurfaceAppearance']({'material':_0x20fe0a,'aboveGround':!![],'faceForward':!![],'flat':!![],'translucent':!![],'renderState':this['createRenderState']()}):new this[(_0x1c1d6c(0xfa))][(_0x1c1d6c(0xc4))]({'material':_0x20fe0a,'materialSupport':this[_0x1c1d6c(0xfa)]['MaterialAppearance'][_0x1c1d6c(0xd8)]['TEXTURED'],'faceForward':!![],'flat':!![],'translucent':!![],'closed':![],'renderState':this[_0x1c1d6c(0xb5)]()}),_0x26c3d4=new this['cesium'][(_0x1c1d6c(0xf2))]({'geometryInstances':new this[(_0x1c1d6c(0xfa))]['GeometryInstance']({'geometry':_0x2eaac3}),'appearance':_0xc393b5,'asynchronous':![],'allowPicking':![],'releaseGeometryInstances':!![],'compressVertices':!![]});_0x26c3d4[_0x1c1d6c(0xca)]=_0x47e4cf?!![]:this[_0x1c1d6c(0xf4)];const _0x56f48f=this[_0x1c1d6c(0xe0)]['scene'][_0x1c1d6c(0xb9)][_0x1c1d6c(0xbe)](_0x26c3d4);if(!_0x47e4cf){this[_0x1c1d6c(0xdb)][_0x1c1d6c(0xc9)](_0x26d8a0['id'],{'primitive':_0x56f48f,'material':_0x20fe0a});return;}const _0x550d6a={'primitive':_0x56f48f,'material':_0x20fe0a},_0xef3565=this[_0x1c1d6c(0xe0)][_0x1c1d6c(0xd5)][_0x1c1d6c(0xeb)]['addEventListener'](()=>{const _0x3f3cf8=_0x1c1d6c;if(!_0x56f48f['ready']||this[_0x3f3cf8(0xde)][_0x3f3cf8(0xe9)](_0x26d8a0['id'])!==_0x550d6a)return;_0x550d6a['removeListener']?.(),_0x20fe0a[_0x3f3cf8(0xd3)]['color']=this['createColor'](0x1),_0x56f48f[_0x3f3cf8(0xca)]=this[_0x3f3cf8(0xf4)],_0x47e4cf['primitive'][_0x3f3cf8(0xca)]=![],this[_0x3f3cf8(0xe0)][_0x3f3cf8(0xd5)][_0x3f3cf8(0xb9)]['remove'](_0x47e4cf[_0x3f3cf8(0xc2)]),this[_0x3f3cf8(0xdb)][_0x3f3cf8(0xc9)](_0x26d8a0['id'],{'primitive':_0x56f48f,'material':_0x20fe0a}),this[_0x3f3cf8(0xde)]['delete'](_0x26d8a0['id']),this[_0x3f3cf8(0xe0)][_0x3f3cf8(0xd5)][_0x3f3cf8(0xbf)]();});if(_0xef3565)_0x550d6a[_0x1c1d6c(0xe2)]=_0xef3565;this['pending'][_0x1c1d6c(0xc9)](_0x26d8a0['id'],_0x550d6a);}[_0xb5a9bf(0xdf)](_0x54a421,_0x2d8d56,_0xe111ef){const _0x40eacd=_0xb5a9bf,{xAxis:_0x5ba6b7,yAxis:_0x1e9dfe,zAxis:_0x5707dc}=_0x54a421['metadata'],_0x1d7ae6=Math['min'](_0x1e9dfe[_0x40eacd(0xf0)],_0x1e9dfe[_0x40eacd(0xb1)]),_0x2dcfc3=_0x1d7ae6+(_0x2d8d56-_0x1d7ae6)*_0xe111ef;return new this[(_0x40eacd(0xfa))][(_0x40eacd(0xee))]({'rectangle':this[_0x40eacd(0xfa)][_0x40eacd(0xda)]['fromDegrees'](Math[_0x40eacd(0xe8)](_0x5ba6b7['start'],_0x5ba6b7[_0x40eacd(0xb1)]),Math[_0x40eacd(0xe8)](_0x5707dc['start'],_0x5707dc[_0x40eacd(0xb1)]),Math[_0x40eacd(0xc5)](_0x5ba6b7[_0x40eacd(0xf0)],_0x5ba6b7['end']),Math[_0x40eacd(0xc5)](_0x5707dc[_0x40eacd(0xf0)],_0x5707dc[_0x40eacd(0xb1)])),'height':_0x2dcfc3,'granularity':this[_0x40eacd(0xfa)][_0x40eacd(0xd1)][_0x40eacd(0xcf)](0.5),'vertexFormat':this[_0x40eacd(0xfa)][_0x40eacd(0xa8)][_0x40eacd(0xef)]});}['createWallGeometry'](_0x3b714a,_0x5a7400,_0x35d690){const _0xbbc9f9=_0xb5a9bf,{xAxis:_0x38a8f8,yAxis:_0x41c844,zAxis:_0x11b4ad}=_0x3b714a[_0xbbc9f9(0xe6)],_0x65ac67=Math['min'](_0x38a8f8[_0xbbc9f9(0xf0)],_0x38a8f8[_0xbbc9f9(0xb1)]),_0x30ad3c=Math['max'](_0x38a8f8[_0xbbc9f9(0xf0)],_0x38a8f8[_0xbbc9f9(0xb1)]),_0x38a44b=Math['min'](_0x11b4ad[_0xbbc9f9(0xf0)],_0x11b4ad[_0xbbc9f9(0xb1)]),_0x788375=Math[_0xbbc9f9(0xc5)](_0x11b4ad[_0xbbc9f9(0xf0)],_0x11b4ad['end']),_0x4a0c67=_0x5a7400[_0xbbc9f9(0xcd)]==='x'?[this['cesium'][_0xbbc9f9(0xd7)]['fromRadians'](this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)]['toRadians'](_0x5a7400['position']),this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)][_0xbbc9f9(0xcf)](_0x38a44b)),this['cesium'][_0xbbc9f9(0xd7)]['fromRadians'](this[_0xbbc9f9(0xfa)]['Math']['toRadians'](_0x5a7400[_0xbbc9f9(0xbc)]),this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)][_0xbbc9f9(0xcf)](_0x788375))]:[this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd7)]['fromRadians'](this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)][_0xbbc9f9(0xcf)](_0x65ac67),this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)][_0xbbc9f9(0xcf)](_0x5a7400['position'])),this[_0xbbc9f9(0xfa)]['Cartesian3'][_0xbbc9f9(0xb8)](this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)][_0xbbc9f9(0xcf)](_0x30ad3c),this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)]['toRadians'](_0x5a7400[_0xbbc9f9(0xbc)]))],_0x2cd6bc=Math[_0xbbc9f9(0xe8)](_0x41c844[_0xbbc9f9(0xf0)],_0x41c844[_0xbbc9f9(0xb1)]);return this['cesium'][_0xbbc9f9(0xb2)]['fromConstantHeights']({'positions':_0x4a0c67,'minimumHeight':_0x2cd6bc,'maximumHeight':_0x2cd6bc+Math[_0xbbc9f9(0xc6)](_0x41c844['end']-_0x41c844[_0xbbc9f9(0xf0)])*_0x35d690,'granularity':this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xd1)][_0xbbc9f9(0xcf)](0.25),'vertexFormat':this[_0xbbc9f9(0xfa)][_0xbbc9f9(0xc4)]['MaterialSupport'][_0xbbc9f9(0xb4)][_0xbbc9f9(0xea)]});}['getAxis'](_0x21f838,_0x3cd213){const _0x5c3563=_0xb5a9bf;if(_0x3cd213==='x')return _0x21f838[_0x5c3563(0xe6)]['xAxis'];if(_0x3cd213==='y')return _0x21f838['metadata'][_0x5c3563(0xba)];return _0x21f838['metadata'][_0x5c3563(0xac)];}[_0xb5a9bf(0xf8)](_0x6286a2){const _0x1eeff3=_0xb5a9bf;return new this[(_0x1eeff3(0xfa))][(_0x1eeff3(0xc7))](0x1,0x1,0x1,_0x6286a2);}[_0xb5a9bf(0xb5)](){return{'depthTest':{'enabled':!![]},'depthMask':![],'cull':{'enabled':![]}};}[_0xb5a9bf(0xf7)](_0x225e25){const _0x3e4970=_0xb5a9bf,_0x1d119c=this[_0x3e4970(0xde)][_0x3e4970(0xe9)](_0x225e25);if(!_0x1d119c)return;_0x1d119c['removeListener']?.(),this['map'][_0x3e4970(0xd5)][_0x3e4970(0xb9)][_0x3e4970(0xdd)](_0x1d119c[_0x3e4970(0xc2)]),this[_0x3e4970(0xde)][_0x3e4970(0xf9)](_0x225e25);}[_0xb5a9bf(0xdd)](_0x5d8773){const _0x1e227b=_0xb5a9bf;this[_0x1e227b(0xf7)](_0x5d8773);const _0x8fe044=this['entries'][_0x1e227b(0xe9)](_0x5d8773);if(!_0x8fe044)return;this['map'][_0x1e227b(0xd5)][_0x1e227b(0xb9)][_0x1e227b(0xdd)](_0x8fe044[_0x1e227b(0xc2)]),this['entries'][_0x1e227b(0xf9)](_0x5d8773);}}
@@ -0,0 +1,50 @@
1
+ import type { IVolumeOpacityStop, VolumeColorMode, VolumeColorStopInput } from '../volume-scene/transferTypes';
2
+ import type { VolumeSliceAxis } from '../volume-scene/sliceTypes';
3
+ import type { IVolumeAxis } from '../volume-scene/sourceTypes';
4
+ import type { INativeVoxelData } from './voxelData';
5
+ export interface INativeSliceAtlasLayer {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ uMinimum: number;
11
+ uMaximum: number;
12
+ vMinimum: number;
13
+ vMaximum: number;
14
+ contentBounds?: INativeSliceContentBounds | null;
15
+ }
16
+ export interface INativeSliceContentBounds {
17
+ west: number;
18
+ south: number;
19
+ east: number;
20
+ north: number;
21
+ }
22
+ export interface INativeSliceAtlasLayout {
23
+ width: number;
24
+ height: number;
25
+ columns: number;
26
+ rows: number;
27
+ layers: readonly INativeSliceAtlasLayer[];
28
+ }
29
+ export interface INativeSliceAtlasOptions {
30
+ layerWidth: number;
31
+ layerHeight: number;
32
+ colorStops: readonly VolumeColorStopInput[];
33
+ opacityStops: readonly IVolumeOpacityStop[];
34
+ colorMode: VolumeColorMode;
35
+ }
36
+ export interface INativeSliceAtlas {
37
+ layout: INativeSliceAtlasLayout;
38
+ pixels: Uint8ClampedArray;
39
+ }
40
+ export interface INativeAxisSliceImage {
41
+ width: number;
42
+ height: number;
43
+ pixels: Uint8ClampedArray;
44
+ }
45
+ type NativeTransferOptions = Pick<INativeSliceAtlasOptions, 'colorStops' | 'opacityStops' | 'colorMode'>;
46
+ export declare const nativeAxisPositionToIndex: (axis: IVolumeAxis, position: number) => number;
47
+ export declare const createNativeSliceAtlasLayout: (layerCount: number, layerWidth: number, layerHeight: number, padding?: number) => INativeSliceAtlasLayout;
48
+ export declare const createNativeSliceAtlas: (data: INativeVoxelData, options: INativeSliceAtlasOptions) => INativeSliceAtlas;
49
+ export declare const createNativeAxisSliceImage: (data: INativeVoxelData, axis: VolumeSliceAxis, index: number, options: NativeTransferOptions) => INativeAxisSliceImage;
50
+ export {};
@@ -0,0 +1 @@
1
+ (function(_0xc13c97,_0x519405){const _0x760e8a=_0x20e7,_0x516fb5=_0xc13c97();while(!![]){try{const _0x4ab67b=parseInt(_0x760e8a(0x18a))/0x1*(parseInt(_0x760e8a(0x197))/0x2)+parseInt(_0x760e8a(0x19e))/0x3+-parseInt(_0x760e8a(0x191))/0x4+parseInt(_0x760e8a(0x18f))/0x5*(-parseInt(_0x760e8a(0x193))/0x6)+parseInt(_0x760e8a(0x18d))/0x7*(-parseInt(_0x760e8a(0x182))/0x8)+-parseInt(_0x760e8a(0x189))/0x9*(parseInt(_0x760e8a(0x196))/0xa)+parseInt(_0x760e8a(0x1a5))/0xb;if(_0x4ab67b===_0x519405)break;else _0x516fb5['push'](_0x516fb5['shift']());}catch(_0xe2bc5){_0x516fb5['push'](_0x516fb5['shift']());}}}(_0x45eb,0xeeedd));import{prepareWebgpuVolumeTransfer,sampleVolumeTransferColor,sampleVolumeTransferOpacity}from'../volume-scene/volumeTransfer';export const nativeAxisPositionToIndex=(_0x8a001f,_0x383cee)=>{const _0x571cd5=_0x20e7;if(!Number[_0x571cd5(0x184)](_0x383cee))throw new Error('Native\x20slice\x20position\x20must\x20be\x20finite.\x20原生切片位置必须是有限数。');const _0x31c75b=Math['min'](_0x8a001f[_0x571cd5(0x181)],_0x8a001f[_0x571cd5(0x199)]),_0x56d18b=Math[_0x571cd5(0x1a1)](_0x8a001f[_0x571cd5(0x181)],_0x8a001f[_0x571cd5(0x199)]),_0x1419e=_0x31c75b===_0x56d18b?0x0:(Math[_0x571cd5(0x1a1)](_0x31c75b,Math['min'](_0x56d18b,_0x383cee))-_0x31c75b)/(_0x56d18b-_0x31c75b);return Math[_0x571cd5(0x19b)](_0x1419e*Math[_0x571cd5(0x1a1)](0x0,_0x8a001f[_0x571cd5(0x190)]-0x1));};export const createNativeSliceAtlasLayout=(_0x3bf28d,_0x256980,_0x3934e3,_0x261baa=0x1)=>{const _0x18bc44=_0x20e7;if(!Number[_0x18bc44(0x186)](_0x3bf28d)||_0x3bf28d<0x1)throw new RangeError(_0x18bc44(0x19a));if(!Number['isSafeInteger'](_0x256980)||_0x256980<0x1||!Number[_0x18bc44(0x186)](_0x3934e3)||_0x3934e3<0x1)throw new RangeError('Native\x20slice\x20dimensions\x20must\x20be\x20positive\x20integers.\x20原生切片尺寸必须为正整数。');if(!Number[_0x18bc44(0x186)](_0x261baa)||_0x261baa<0x0)throw new RangeError(_0x18bc44(0x198));const _0x197da6=Math['ceil'](Math[_0x18bc44(0x1a3)](_0x3bf28d*_0x3934e3/_0x256980)),_0x3acb12=Math['ceil'](_0x3bf28d/_0x197da6),_0x2fe8ce=_0x256980+_0x261baa*0x2,_0xb092ba=_0x3934e3+_0x261baa*0x2,_0x1a8306=_0x197da6*_0x2fe8ce,_0x3803ad=_0x3acb12*_0xb092ba,_0x2b90ac=Array[_0x18bc44(0x188)]({'length':_0x3bf28d},(_0xdcf6da,_0x2fee13)=>{const _0xfdd819=_0x18bc44,_0xd26658=_0x2fee13%_0x197da6*_0x2fe8ce+_0x261baa,_0x3019c2=Math[_0xfdd819(0x18e)](_0x2fee13/_0x197da6)*_0xb092ba+_0x261baa;return{'x':_0xd26658,'y':_0x3019c2,'width':_0x256980,'height':_0x3934e3,'uMinimum':(_0xd26658+0.5)/_0x1a8306,'uMaximum':(_0xd26658+_0x256980-0.5)/_0x1a8306,'vMinimum':0x1-(_0x3019c2+_0x3934e3-0.5)/_0x3803ad,'vMaximum':0x1-(_0x3019c2+0.5)/_0x3803ad};});return{'width':_0x1a8306,'height':_0x3803ad,'columns':_0x197da6,'rows':_0x3acb12,'layers':_0x2b90ac};};const sampleValue=(_0x404ec1,_0x11f14b,_0x508fa3,_0x33caac,_0x282849,_0x445a6d)=>{const _0xf2a0de=_0x20e7,[_0x1b536f,_0x2ee708,_0x3fae5e]=_0x404ec1[_0xf2a0de(0x187)],_0x1663e0=Math[_0xf2a0de(0x1a1)](0x0,Math['min'](_0x1b536f-0x1,(_0x508fa3+0.5)*_0x1b536f/_0x282849-0.5)),_0x434f96=Math[_0xf2a0de(0x1a1)](0x0,Math[_0xf2a0de(0x183)](_0x3fae5e-0x1,_0x3fae5e-(_0x33caac+0.5)*_0x3fae5e/_0x445a6d-0.5)),_0x4b7f71=Math[_0xf2a0de(0x18e)](_0x1663e0),_0x57b737=Math[_0xf2a0de(0x183)](_0x1b536f-0x1,_0x4b7f71+0x1),_0x39d2cf=Math[_0xf2a0de(0x18e)](_0x434f96),_0x369f04=Math[_0xf2a0de(0x183)](_0x3fae5e-0x1,_0x39d2cf+0x1),_0xdf2fb1=_0x1663e0-_0x4b7f71,_0xf04187=_0x434f96-_0x39d2cf,_0x184bdf=(_0x23ef6f,_0x436c0d)=>_0x404ec1[_0xf2a0de(0x194)][(_0x436c0d*_0x2ee708+_0x11f14b)*_0x1b536f+_0x23ef6f],_0x3aead1=_0x184bdf(_0x4b7f71,_0x39d2cf)*(0x1-_0xdf2fb1)+_0x184bdf(_0x57b737,_0x39d2cf)*_0xdf2fb1,_0x5b4431=_0x184bdf(_0x4b7f71,_0x369f04)*(0x1-_0xdf2fb1)+_0x184bdf(_0x57b737,_0x369f04)*_0xdf2fb1;return _0x3aead1*(0x1-_0xf04187)+_0x5b4431*_0xf04187;};function _0x20e7(_0x9f28e0,_0x47eba6){const _0x45ebd2=_0x45eb();return _0x20e7=function(_0x20e7b2,_0x188e59){_0x20e7b2=_0x20e7b2-0x180;let _0x2dae67=_0x45ebd2[_0x20e7b2];return _0x2dae67;},_0x20e7(_0x9f28e0,_0x47eba6);}export const createNativeSliceAtlas=(_0x4e70c4,_0x3cbc24)=>{const _0x4428fb=_0x20e7,_0x554511=createNativeSliceAtlasLayout(_0x4e70c4[_0x4428fb(0x187)][0x1],_0x3cbc24[_0x4428fb(0x1a4)],_0x3cbc24[_0x4428fb(0x1a2)]),_0x4754b4=new Uint8ClampedArray(_0x554511[_0x4428fb(0x19d)]*_0x554511[_0x4428fb(0x19c)]*0x4),_0x5d1858=prepareWebgpuVolumeTransfer(_0x3cbc24[_0x4428fb(0x18b)],_0x3cbc24['opacityStops']),_0x4b9a7a=(_0x3dd683,_0x2252d7,_0x1f8faf)=>{const _0x1c2766=_0x4428fb,_0x370bae=(_0x2252d7*_0x554511[_0x1c2766(0x19d)]+_0x3dd683)*0x4;_0x4754b4[_0x370bae]=_0x4754b4[_0x1f8faf],_0x4754b4[_0x370bae+0x1]=_0x4754b4[_0x1f8faf+0x1],_0x4754b4[_0x370bae+0x2]=_0x4754b4[_0x1f8faf+0x2],_0x4754b4[_0x370bae+0x3]=_0x4754b4[_0x1f8faf+0x3];};for(let _0x2c7045=0x0;_0x2c7045<_0x554511['layers'][_0x4428fb(0x1a0)];_0x2c7045+=0x1){const _0x49aef1=_0x554511['layers'][_0x2c7045];let _0x33a8d4=_0x49aef1[_0x4428fb(0x19d)],_0x426f0f=_0x49aef1[_0x4428fb(0x19c)],_0x46893a=-0x1,_0x3ec8f8=-0x1;for(let _0x492710=0x0;_0x492710<_0x49aef1['height'];_0x492710+=0x1){for(let _0x3920f4=0x0;_0x3920f4<_0x49aef1['width'];_0x3920f4+=0x1){const _0x3d69fa=sampleValue(_0x4e70c4,_0x2c7045,_0x3920f4,_0x492710,_0x49aef1[_0x4428fb(0x19d)],_0x49aef1[_0x4428fb(0x19c)]),_0x5a094a=sampleVolumeTransferColor(_0x3d69fa,_0x5d1858[_0x4428fb(0x18b)],0x1,_0x3cbc24[_0x4428fb(0x185)]),_0xd325c2=_0x3d69fa<=0x0?0x0:sampleVolumeTransferOpacity(_0x3d69fa,_0x5d1858[_0x4428fb(0x195)],_0x3cbc24['colorMode']),_0x1f9186=((_0x49aef1['y']+_0x492710)*_0x554511[_0x4428fb(0x19d)]+_0x49aef1['x']+_0x3920f4)*0x4;_0x4754b4[_0x1f9186]=Math['round'](_0x5a094a[0x0]*0xff),_0x4754b4[_0x1f9186+0x1]=Math['round'](_0x5a094a[0x1]*0xff),_0x4754b4[_0x1f9186+0x2]=Math[_0x4428fb(0x19b)](_0x5a094a[0x2]*0xff),_0x4754b4[_0x1f9186+0x3]=Math[_0x4428fb(0x19b)](_0x5a094a[0x3]*_0xd325c2*0xff),_0x4754b4[_0x1f9186+0x3]>0x0&&(_0x33a8d4=Math['min'](_0x33a8d4,_0x3920f4),_0x426f0f=Math[_0x4428fb(0x183)](_0x426f0f,_0x492710),_0x46893a=Math['max'](_0x46893a,_0x3920f4),_0x3ec8f8=Math[_0x4428fb(0x1a1)](_0x3ec8f8,_0x492710));}}_0x49aef1[_0x4428fb(0x192)]=_0x46893a<0x0?null:{'west':_0x33a8d4/_0x49aef1[_0x4428fb(0x19d)],'south':0x1-(_0x3ec8f8+0x1)/_0x49aef1[_0x4428fb(0x19c)],'east':(_0x46893a+0x1)/_0x49aef1[_0x4428fb(0x19d)],'north':0x1-_0x426f0f/_0x49aef1['height']};for(let _0x944d59=0x0;_0x944d59<_0x49aef1[_0x4428fb(0x19d)];_0x944d59+=0x1){_0x4b9a7a(_0x49aef1['x']+_0x944d59,_0x49aef1['y']-0x1,(_0x49aef1['y']*_0x554511[_0x4428fb(0x19d)]+_0x49aef1['x']+_0x944d59)*0x4),_0x4b9a7a(_0x49aef1['x']+_0x944d59,_0x49aef1['y']+_0x49aef1[_0x4428fb(0x19c)],((_0x49aef1['y']+_0x49aef1[_0x4428fb(0x19c)]-0x1)*_0x554511['width']+_0x49aef1['x']+_0x944d59)*0x4);}for(let _0x54b8b1=-0x1;_0x54b8b1<=_0x49aef1[_0x4428fb(0x19c)];_0x54b8b1+=0x1){_0x4b9a7a(_0x49aef1['x']-0x1,_0x49aef1['y']+_0x54b8b1,((_0x49aef1['y']+Math['max'](0x0,Math[_0x4428fb(0x183)](_0x49aef1[_0x4428fb(0x19c)]-0x1,_0x54b8b1)))*_0x554511[_0x4428fb(0x19d)]+_0x49aef1['x'])*0x4),_0x4b9a7a(_0x49aef1['x']+_0x49aef1['width'],_0x49aef1['y']+_0x54b8b1,((_0x49aef1['y']+Math[_0x4428fb(0x1a1)](0x0,Math['min'](_0x49aef1[_0x4428fb(0x19c)]-0x1,_0x54b8b1)))*_0x554511[_0x4428fb(0x19d)]+_0x49aef1['x']+_0x49aef1[_0x4428fb(0x19d)]-0x1)*0x4);}}return{'layout':_0x554511,'pixels':_0x4754b4};};function _0x45eb(){const _0x28fbea=['layerHeight','sqrt','layerWidth','38896517orxjrF','toUpperCase','start','27568lDYirm','min','isFinite','colorMode','isSafeInteger','dimensions','from','164907jcIqOn','10lXjFNe','colorStops','Native\x20','91BKIZuh','floor','15HhBJaT','count','6582368dWrFkp','contentBounds','578562FxWarD','values','opacityStops','530vnKNDq','27866ZYMuaB','Native\x20slice\x20padding\x20must\x20be\x20a\x20non-negative\x20integer.\x20原生切片边距必须为非负整数。','end','Native\x20slice\x20layer\x20count\x20must\x20be\x20a\x20positive\x20integer.\x20原生切片层数必须为正整数。','round','height','width','762198WBzEOV','\x20切片索引越界。','length','max'];_0x45eb=function(){return _0x28fbea;};return _0x45eb();}export const createNativeAxisSliceImage=(_0x2fb1ec,_0x9e32f8,_0x59a690,_0x180050)=>{const _0x426872=_0x20e7,[_0x53670a,_0x531eaa,_0x1d8d51]=_0x2fb1ec[_0x426872(0x187)],_0x255cd6=_0x9e32f8==='x'?_0x53670a:_0x9e32f8==='y'?_0x531eaa:_0x1d8d51;if(!Number[_0x426872(0x186)](_0x59a690)||_0x59a690<0x0||_0x59a690>=_0x255cd6)throw new RangeError(_0x426872(0x18c)+_0x9e32f8[_0x426872(0x180)]()+'\x20slice\x20index\x20is\x20out\x20of\x20range.\x20原生\x20'+_0x9e32f8[_0x426872(0x180)]()+_0x426872(0x19f));const _0x1b1c5a=_0x9e32f8==='x'?_0x1d8d51:_0x53670a,_0x5b243e=_0x9e32f8==='y'?_0x1d8d51:_0x531eaa,_0x695d0a=new Uint8ClampedArray(_0x1b1c5a*_0x5b243e*0x4),_0x36766a=prepareWebgpuVolumeTransfer(_0x180050[_0x426872(0x18b)],_0x180050[_0x426872(0x195)]),_0x5b5cdc=(_0x57eb9b,_0x23dccb,_0x4fe427)=>_0x2fb1ec['values'][(_0x4fe427*_0x531eaa+_0x23dccb)*_0x53670a+_0x57eb9b];for(let _0x4a253c=0x0;_0x4a253c<_0x5b243e;_0x4a253c+=0x1){for(let _0x4e9074=0x0;_0x4e9074<_0x1b1c5a;_0x4e9074+=0x1){const _0x13b4a=_0x9e32f8==='x'?_0x5b5cdc(_0x59a690,_0x531eaa-_0x4a253c-0x1,_0x4e9074):_0x9e32f8==='y'?_0x5b5cdc(_0x4e9074,_0x59a690,_0x1d8d51-_0x4a253c-0x1):_0x5b5cdc(_0x4e9074,_0x531eaa-_0x4a253c-0x1,_0x59a690),_0xc9d209=sampleVolumeTransferColor(_0x13b4a,_0x36766a[_0x426872(0x18b)],0x1,_0x180050['colorMode']),_0x33cc54=_0x13b4a<=0x0?0x0:sampleVolumeTransferOpacity(_0x13b4a,_0x36766a[_0x426872(0x195)],_0x180050[_0x426872(0x185)]),_0x8d1576=(_0x4a253c*_0x1b1c5a+_0x4e9074)*0x4;_0x695d0a[_0x8d1576]=Math['round'](_0xc9d209[0x0]*0xff),_0x695d0a[_0x8d1576+0x1]=Math[_0x426872(0x19b)](_0xc9d209[0x1]*0xff),_0x695d0a[_0x8d1576+0x2]=Math['round'](_0xc9d209[0x2]*0xff),_0x695d0a[_0x8d1576+0x3]=Math[_0x426872(0x19b)](_0xc9d209[0x3]*_0x33cc54*0xff);}}return{'width':_0x1b1c5a,'height':_0x5b243e,'pixels':_0x695d0a};};
@@ -0,0 +1,17 @@
1
+ import type { ICesiumNativeRuntime } from './nativeTypes';
2
+ interface ICesiumMaterialSupportLike {
3
+ readonly vertexFormat: unknown;
4
+ }
5
+ interface ICesiumMaterialAppearanceConstructor {
6
+ new (options?: Record<string, unknown>): unknown;
7
+ readonly MaterialSupport: {
8
+ readonly TEXTURED: ICesiumMaterialSupportLike;
9
+ };
10
+ }
11
+ export interface INativeSliceCesiumRuntime extends ICesiumNativeRuntime {
12
+ readonly WallGeometry: {
13
+ fromConstantHeights(options: Record<string, unknown>): unknown;
14
+ };
15
+ readonly MaterialAppearance: ICesiumMaterialAppearanceConstructor;
16
+ }
17
+ export {};
@@ -0,0 +1,174 @@
1
+ import type { IVolumeSource } from '../volume-scene/sourceTypes';
2
+ import type { IVolumeOpacityStop, VolumeColorMode, VolumeColorStopInput } from '../volume-scene/transferTypes';
3
+ import type { VolumeQualityPreset } from '../volume-scene/sceneTypes';
4
+ import type { IVolumeLockedSlice, VolumeSliceAxis } from '../volume-scene/sliceTypes';
5
+ export interface IMars3dNativeVolumeLayerOptions {
6
+ source: IVolumeSource;
7
+ colorStops: readonly VolumeColorStopInput[];
8
+ opacityStops: readonly IVolumeOpacityStop[];
9
+ timeIndex?: number;
10
+ quality?: VolumeQualityPreset;
11
+ opacity?: number;
12
+ densityScale?: number;
13
+ verticalScale?: number;
14
+ colorMode?: VolumeColorMode;
15
+ name?: string;
16
+ show?: boolean;
17
+ onError?: (error: Error) => void;
18
+ }
19
+ export interface IMars3dNativeVolumeLayerUpdate {
20
+ quality?: VolumeQualityPreset;
21
+ opacity?: number;
22
+ densityScale?: number;
23
+ verticalScale?: number;
24
+ colorStops?: readonly VolumeColorStopInput[];
25
+ opacityStops?: readonly IVolumeOpacityStop[];
26
+ colorMode?: VolumeColorMode;
27
+ }
28
+ export interface INativeVolumeStatistics {
29
+ texturesByteLength: number;
30
+ visited: number;
31
+ numberOfTilesWithContentReady: number;
32
+ }
33
+ export interface IMars3dNativeVolumeLayer {
34
+ readonly readyPromise: Promise<void>;
35
+ readonly statistics: INativeVolumeStatistics | null;
36
+ update(options: IMars3dNativeVolumeLayerUpdate): void;
37
+ setSource(source: IVolumeSource): Promise<void>;
38
+ setTimeIndex(timeIndex: number): Promise<void>;
39
+ destroy(noDel?: boolean): void;
40
+ }
41
+ export interface IMars3dNativeSliceVolumeLayer extends IMars3dNativeVolumeLayer {
42
+ readonly lockedSlices: readonly IVolumeLockedSlice[];
43
+ lockSlice(axis: VolumeSliceAxis, position: number): IVolumeLockedSlice;
44
+ updateSlice(id: string, position: number): void;
45
+ removeSlice(id: string): void;
46
+ clearLockedSlices(): void;
47
+ }
48
+ export interface ICesiumCartesian3Like {
49
+ x: number;
50
+ y: number;
51
+ z: number;
52
+ }
53
+ export interface ICesiumEventLike {
54
+ addEventListener(listener: () => void): () => void;
55
+ }
56
+ export interface ICesiumCustomShaderLike {
57
+ setUniform(name: string, value: number): void;
58
+ destroy(): void;
59
+ }
60
+ export interface ICesiumVoxelPrimitiveLike {
61
+ show: boolean;
62
+ stepSize: number;
63
+ screenSpaceError: number;
64
+ depthTest: boolean;
65
+ nearestSampling: boolean;
66
+ minBounds: ICesiumCartesian3Like;
67
+ maxBounds: ICesiumCartesian3Like;
68
+ customShader: ICesiumCustomShaderLike;
69
+ readonly ready: boolean;
70
+ readonly initialTilesLoaded: ICesiumEventLike;
71
+ readonly statistics?: Partial<INativeVolumeStatistics>;
72
+ }
73
+ export interface ICesiumSliceGeometryLike {
74
+ readonly attributes: {
75
+ readonly st?: {
76
+ readonly values: Float32Array;
77
+ };
78
+ };
79
+ }
80
+ export interface ICesiumMaterialLike {
81
+ readonly uniforms: Record<string, unknown>;
82
+ }
83
+ export interface ICesiumSlicePrimitiveLike {
84
+ show: boolean;
85
+ readonly ready: boolean;
86
+ }
87
+ export interface ICesiumPrimitiveCollectionLike {
88
+ add<T>(primitive: T): T;
89
+ remove(primitive: unknown): boolean;
90
+ }
91
+ export interface ICesiumSceneLike {
92
+ readonly primitives: ICesiumPrimitiveCollectionLike;
93
+ readonly postRender: ICesiumEventLike;
94
+ requestRender(): void;
95
+ }
96
+ export interface IMars3dNativeMapLike {
97
+ readonly scene: ICesiumSceneLike;
98
+ }
99
+ export interface IMars3dNativeBaseLayerLike {
100
+ readonly _map?: IMars3dNativeMapLike;
101
+ show: boolean;
102
+ destroy(noDel?: boolean): void;
103
+ }
104
+ export interface IMars3dNativeRuntime {
105
+ readonly layer: {
106
+ readonly BaseLayer: new (options?: unknown) => IMars3dNativeBaseLayerLike;
107
+ };
108
+ }
109
+ interface ICesiumConstructor<T, TOptions = unknown> {
110
+ new (options: TOptions): T;
111
+ }
112
+ export interface ICesiumNativeRuntime {
113
+ readonly Cartesian3: {
114
+ new (x?: number, y?: number, z?: number): ICesiumCartesian3Like;
115
+ fromRadians(longitude: number, latitude: number, height?: number): ICesiumCartesian3Like;
116
+ };
117
+ readonly Ellipsoid: {
118
+ readonly WGS84: {
119
+ readonly radii: ICesiumCartesian3Like;
120
+ };
121
+ };
122
+ readonly Matrix4: {
123
+ readonly IDENTITY: unknown;
124
+ fromScale(scale: ICesiumCartesian3Like): unknown;
125
+ };
126
+ readonly VoxelShapeType: {
127
+ readonly ELLIPSOID: unknown;
128
+ };
129
+ readonly MetadataType: {
130
+ readonly SCALAR: unknown;
131
+ };
132
+ readonly MetadataComponentType: {
133
+ readonly FLOAT32: unknown;
134
+ readonly UINT8: unknown;
135
+ };
136
+ readonly VoxelContent: {
137
+ fromMetadataArray(values: readonly (Float32Array | Uint8Array)[]): unknown;
138
+ };
139
+ readonly UniformType: {
140
+ readonly FLOAT: unknown;
141
+ };
142
+ readonly LightingModel: {
143
+ readonly UNLIT: unknown;
144
+ };
145
+ readonly CustomShaderTranslucencyMode: {
146
+ readonly TRANSLUCENT: unknown;
147
+ };
148
+ readonly CustomShader: ICesiumConstructor<ICesiumCustomShaderLike, Record<string, unknown>>;
149
+ readonly VoxelPrimitive: ICesiumConstructor<ICesiumVoxelPrimitiveLike, Record<string, unknown>>;
150
+ readonly Rectangle: {
151
+ fromDegrees(west: number, south: number, east: number, north: number): unknown;
152
+ };
153
+ readonly RectangleGeometry: ICesiumConstructor<unknown, Record<string, unknown>> & {
154
+ createGeometry(geometry: unknown): ICesiumSliceGeometryLike | undefined;
155
+ };
156
+ readonly GeometryInstance: ICesiumConstructor<unknown, Record<string, unknown>>;
157
+ readonly Primitive: ICesiumConstructor<ICesiumSlicePrimitiveLike, Record<string, unknown>>;
158
+ readonly Material: ICesiumConstructor<ICesiumMaterialLike, Record<string, unknown>>;
159
+ readonly Color: ICesiumConstructor<unknown, {
160
+ red?: number;
161
+ green?: number;
162
+ blue?: number;
163
+ alpha?: number;
164
+ }> & {
165
+ new (red?: number, green?: number, blue?: number, alpha?: number): unknown;
166
+ };
167
+ readonly EllipsoidSurfaceAppearance: ICesiumConstructor<unknown, Record<string, unknown>> & {
168
+ readonly VERTEX_FORMAT: unknown;
169
+ };
170
+ readonly Math: {
171
+ toRadians(degrees: number): number;
172
+ };
173
+ }
174
+ export {};
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,6 @@
1
+ import type { IVolumeSource } from '../volume-scene/sourceTypes';
2
+ import type { ICesiumNativeRuntime } from './nativeTypes';
3
+ import type { INativeVoxelData } from './voxelData';
4
+ /** 按 Cesium 八叉树瓦片坐标从完整规则网格生成固定尺寸体素块。 */
5
+ export declare const createNativeVoxelTile: (data: INativeVoxelData, tileLevel: number, tileX: number, tileY: number, tileZ: number) => Uint8Array;
6
+ export declare const createNativeVoxelProvider: (cesium: ICesiumNativeRuntime, source: IVolumeSource, data: INativeVoxelData, verticalScale: number) => Record<string, unknown>;
@@ -0,0 +1 @@
1
+ function _0x1fc1(_0x1b9920,_0x3d8448){const _0x150241=_0x1502();return _0x1fc1=function(_0x1fc167,_0x963e6a){_0x1fc167=_0x1fc167-0x15a;let _0x185326=_0x150241[_0x1fc167];return _0x185326;},_0x1fc1(_0x1b9920,_0x3d8448);}function _0x1502(){const _0x45a0fb=['567978EFdkpQ','fromScale','Matrix4','704938lZZNOG','min','radii','end','some','4862752indSwH','1472364MIJqwI','values','Ellipsoid','30YDbMyl','1269380kESlEu','3zaCUtG','dimensions','value','start','max','Cartesian3','metadata','fromMetadataArray','Native\x20voxel\x20tile\x20coordinate\x20is\x20out\x20of\x20range.\x20原生体素瓦片坐标越界。','27495162FapemC','673975FFlkCq','ceil','round','log2','SCALAR','resolve','map','ELLIPSOID','MetadataType','WGS84'];_0x1502=function(){return _0x45a0fb;};return _0x1502();}(function(_0x308720,_0x481e44){const _0x26df92=_0x1fc1,_0x11830b=_0x308720();while(!![]){try{const _0xd46e4c=-parseInt(_0x26df92(0x175))/0x1+-parseInt(_0x26df92(0x172))/0x2*(parseInt(_0x26df92(0x15e))/0x3)+-parseInt(_0x26df92(0x17b))/0x4+-parseInt(_0x26df92(0x168))/0x5*(parseInt(_0x26df92(0x15c))/0x6)+parseInt(_0x26df92(0x15d))/0x7+-parseInt(_0x26df92(0x17a))/0x8+parseInt(_0x26df92(0x167))/0x9;if(_0xd46e4c===_0x481e44)break;else _0x11830b['push'](_0x11830b['shift']());}catch(_0x48a79a){_0x11830b['push'](_0x11830b['shift']());}}}(_0x1502,0x91e11));const degreesToRadians=_0x56f04b=>_0x56f04b*Math['PI']/0xb4,TILE_DIMENSIONS=[0x40,0x40,0x20],MAXIMUM_AVAILABLE_LEVELS=0x3,getAvailableLevels=_0x6a4cfb=>{const _0x5acf87=_0x1fc1,_0x1f940f=[_0x6a4cfb[_0x5acf87(0x15f)][0x0],_0x6a4cfb[_0x5acf87(0x15f)][0x2],_0x6a4cfb[_0x5acf87(0x15f)][0x1]],_0x4c571e=_0x1f940f[_0x5acf87(0x16e)]((_0x57da7a,_0x5165c1)=>_0x57da7a/TILE_DIMENSIONS[_0x5165c1]);return Math[_0x5acf87(0x176)](MAXIMUM_AVAILABLE_LEVELS,Math['max'](0x1,Math[_0x5acf87(0x169)](Math[_0x5acf87(0x16b)](Math['max'](..._0x4c571e)))+0x1));},getMaximumTileCount=_0x54a6c6=>{let _0xab6092=0x0;for(let _0x2d8482=0x0;_0x2d8482<_0x54a6c6;_0x2d8482+=0x1)_0xab6092+=0x8**_0x2d8482;return _0xab6092;};export const createNativeVoxelTile=(_0x55ceac,_0x1ff93d,_0x2b7341,_0x4ac80c,_0x97d5e8)=>{const _0x42bdfa=_0x1fc1,_0x45589a=0x2**_0x1ff93d;if([_0x2b7341,_0x4ac80c,_0x97d5e8][_0x42bdfa(0x179)](_0xd2dcf7=>_0xd2dcf7<0x0||_0xd2dcf7>=_0x45589a))throw new RangeError(_0x42bdfa(0x166));const [_0xfdc230,_0x1d6cc8,_0x3972c8]=TILE_DIMENSIONS,[_0x30c974,_0x347c9f,_0x2871e1]=_0x55ceac[_0x42bdfa(0x15f)],_0x56bc16=new Uint8Array(_0xfdc230*_0x1d6cc8*_0x3972c8);for(let _0x1b2164=0x0;_0x1b2164<_0x3972c8;_0x1b2164+=0x1){const _0x429e1a=(_0x97d5e8+(_0x1b2164+0.5)/_0x3972c8)/_0x45589a,_0x34560e=Math[_0x42bdfa(0x162)](0x0,Math[_0x42bdfa(0x176)](_0x347c9f-0x1,Math['round'](_0x429e1a*_0x347c9f-0.5)));for(let _0xc0ae8b=0x0;_0xc0ae8b<_0x1d6cc8;_0xc0ae8b+=0x1){const _0x57c961=(_0x4ac80c+(_0xc0ae8b+0.5)/_0x1d6cc8)/_0x45589a,_0x54a830=Math[_0x42bdfa(0x162)](0x0,Math['min'](_0x2871e1-0x1,Math[_0x42bdfa(0x16a)](_0x57c961*_0x2871e1-0.5)));for(let _0x19d4c6=0x0;_0x19d4c6<_0xfdc230;_0x19d4c6+=0x1){const _0x251df5=(_0x2b7341+(_0x19d4c6+0.5)/_0xfdc230)/_0x45589a,_0x2d8748=Math[_0x42bdfa(0x162)](0x0,Math[_0x42bdfa(0x176)](_0x30c974-0x1,Math[_0x42bdfa(0x16a)](_0x251df5*_0x30c974-0.5)));_0x56bc16[(_0x1b2164*_0x1d6cc8+_0xc0ae8b)*_0xfdc230+_0x19d4c6]=_0x55ceac[_0x42bdfa(0x15a)][(_0x54a830*_0x347c9f+_0x34560e)*_0x30c974+_0x2d8748];}}}return _0x56bc16;};export const createNativeVoxelProvider=(_0x57262b,_0x23f29f,_0x235100,_0x3f5f13)=>{const _0x289ad6=_0x1fc1,{xAxis:_0x6264bb,yAxis:_0x3e81b2,zAxis:_0x5c668c}=_0x23f29f[_0x289ad6(0x164)],_0x242903=Math[_0x289ad6(0x176)](_0x3e81b2[_0x289ad6(0x161)],_0x3e81b2[_0x289ad6(0x178)]),_0x39318d=_0x242903+Math['abs'](_0x3e81b2[_0x289ad6(0x178)]-_0x3e81b2['start'])*_0x3f5f13,_0x421271=new _0x57262b['Cartesian3'](degreesToRadians(Math[_0x289ad6(0x176)](_0x6264bb[_0x289ad6(0x161)],_0x6264bb['end'])),degreesToRadians(Math[_0x289ad6(0x176)](_0x5c668c[_0x289ad6(0x161)],_0x5c668c['end'])),_0x242903),_0x362984=new _0x57262b['Cartesian3'](degreesToRadians(Math[_0x289ad6(0x162)](_0x6264bb[_0x289ad6(0x161)],_0x6264bb['end'])),degreesToRadians(Math[_0x289ad6(0x162)](_0x5c668c['start'],_0x5c668c[_0x289ad6(0x178)])),_0x39318d),_0x280f40=new _0x57262b[(_0x289ad6(0x163))](TILE_DIMENSIONS[0x0],TILE_DIMENSIONS[0x1],TILE_DIMENSIONS[0x2]),_0x73844a=new _0x57262b[(_0x289ad6(0x163))](0x0,0x0,0x0),_0x376391=getAvailableLevels(_0x235100);return{'globalTransform':_0x57262b[_0x289ad6(0x174)][_0x289ad6(0x173)](_0x57262b[_0x289ad6(0x15b)][_0x289ad6(0x171)][_0x289ad6(0x177)]),'shapeTransform':_0x57262b[_0x289ad6(0x174)]['IDENTITY'],'shape':_0x57262b['VoxelShapeType'][_0x289ad6(0x16f)],'minBounds':_0x421271,'maxBounds':_0x362984,'dimensions':_0x280f40,'paddingBefore':_0x73844a,'paddingAfter':_0x73844a,'names':[_0x289ad6(0x160)],'types':[_0x57262b[_0x289ad6(0x170)][_0x289ad6(0x16c)]],'componentTypes':[_0x57262b['MetadataComponentType']['UINT8']],'minimumValues':[[_0x235100['minimumValue']]],'maximumValues':[[_0x235100['maximumValue']]],'maximumTileCount':getMaximumTileCount(_0x376391),'availableLevels':_0x376391,'requestData':(_0x444190={})=>{const _0x584fbd=_0x289ad6,{tileLevel:tileLevel=0x0,tileX:tileX=0x0,tileY:tileY=0x0,tileZ:tileZ=0x0}=_0x444190;if(tileLevel<0x0||tileLevel>=_0x376391)return undefined;const _0x1ad834=createNativeVoxelTile(_0x235100,tileLevel,tileX,tileY,tileZ);return Promise[_0x584fbd(0x16d)](_0x57262b['VoxelContent'][_0x584fbd(0x165)]([_0x1ad834]));}};};
@@ -0,0 +1,2 @@
1
+ import type { IVolumeOpacityStop, VolumeColorMode, VolumeColorStopInput } from '../volume-scene/transferTypes';
2
+ export declare const createNativeVoxelFragmentShader: (colorStops: readonly VolumeColorStopInput[], opacityStops: readonly IVolumeOpacityStop[], colorMode: VolumeColorMode) => string;
@@ -0,0 +1 @@
1
+ const _0x542fb7=_0x5f44;(function(_0x47eae2,_0x459d28){const _0x14918e=_0x5f44,_0x28323f=_0x47eae2();while(!![]){try{const _0x667572=-parseInt(_0x14918e(0x1de))/0x1+-parseInt(_0x14918e(0x1fd))/0x2+-parseInt(_0x14918e(0x1fa))/0x3*(parseInt(_0x14918e(0x1e8))/0x4)+-parseInt(_0x14918e(0x1f1))/0x5*(-parseInt(_0x14918e(0x1f0))/0x6)+-parseInt(_0x14918e(0x1ec))/0x7*(-parseInt(_0x14918e(0x200))/0x8)+-parseInt(_0x14918e(0x1ef))/0x9*(-parseInt(_0x14918e(0x1fe))/0xa)+-parseInt(_0x14918e(0x1ed))/0xb*(-parseInt(_0x14918e(0x1e5))/0xc);if(_0x667572===_0x459d28)break;else _0x28323f['push'](_0x28323f['shift']());}catch(_0x5236b7){_0x28323f['push'](_0x28323f['shift']());}}}(_0x5d36,0x838a5));import{prepareWebgpuVolumeTransfer}from'../volume-scene/volumeTransfer';const toShaderFloat=_0x3eb38c=>{const _0x3f4f88=_0x5f44;if(_0x3eb38c===Number[_0x3f4f88(0x1e3)])return _0x3f4f88(0x1fc);if(_0x3eb38c===Number[_0x3f4f88(0x1e9)])return _0x3f4f88(0x1f2);if(!Number[_0x3f4f88(0x1ea)](_0x3eb38c))throw new Error(_0x3f4f88(0x1f3)+_0x3eb38c+_0x3f4f88(0x1e6));return Number['isInteger'](_0x3eb38c)?_0x3eb38c+'.0':String(_0x3eb38c);},colorExpression=_0x2d32f0=>'vec3('+toShaderFloat(_0x2d32f0[0x0])+',\x20'+toShaderFloat(_0x2d32f0[0x1])+',\x20'+toShaderFloat(_0x2d32f0[0x2])+')',createColorFunction=(_0x109a83,_0x43dbd6,_0x21e453)=>{const _0xbf3640=_0x5f44,_0x2a7bee=prepareWebgpuVolumeTransfer(_0x109a83,_0x21e453)[_0xbf3640(0x1e2)],_0x42e41d=[_0xbf3640(0x1f7),'\x20\x20\x20\x20if\x20(value\x20<=\x20'+toShaderFloat(_0x2a7bee[0x0][_0xbf3640(0x1f8)])+_0xbf3640(0x1eb)+colorExpression(_0x2a7bee[0x0][_0xbf3640(0x1e4)])+';'];for(let _0x11660e=0x1;_0x11660e<_0x2a7bee[_0xbf3640(0x1e7)];_0x11660e+=0x1){const _0x495a25=_0x2a7bee[_0x11660e-0x1],_0x5c3682=_0x2a7bee[_0x11660e],_0xea511d=_0x43dbd6===_0xbf3640(0x1f6)?colorExpression(_0x495a25['color']):'mix('+colorExpression(_0x495a25['color'])+',\x20'+colorExpression(_0x5c3682[_0xbf3640(0x1e4)])+_0xbf3640(0x1f4)+toShaderFloat(_0x495a25[_0xbf3640(0x1f8)])+')\x20/\x20max('+toShaderFloat(_0x5c3682[_0xbf3640(0x1f8)]-_0x495a25[_0xbf3640(0x1f8)])+_0xbf3640(0x1f5);_0x42e41d[_0xbf3640(0x1ee)](_0xbf3640(0x1df)+toShaderFloat(_0x5c3682[_0xbf3640(0x1f8)])+_0xbf3640(0x1eb)+_0xea511d+';');}return _0x42e41d[_0xbf3640(0x1ee)](_0xbf3640(0x1ff)+colorExpression(_0x2a7bee[_0x2a7bee[_0xbf3640(0x1e7)]-0x1][_0xbf3640(0x1e4)])+';','}'),_0x42e41d['join']('\x0a');},createOpacityFunction=(_0x1ec1b8,_0x557e20)=>{const _0x102003=_0x5f44;if(_0x1ec1b8['length']===0x0)throw new Error(_0x102003(0x1e1));const _0x28b330=[_0x102003(0x1e0),_0x102003(0x1df)+toShaderFloat(_0x1ec1b8[0x0][_0x102003(0x1f8)])+_0x102003(0x1eb)+toShaderFloat(_0x1ec1b8[0x0]['opacity'])+';'];for(let _0x14e7be=0x1;_0x14e7be<_0x1ec1b8['length'];_0x14e7be+=0x1){const _0x5160cb=_0x1ec1b8[_0x14e7be-0x1],_0xac5033=_0x1ec1b8[_0x14e7be],_0x199ed6=_0x557e20===_0x102003(0x1f6)?toShaderFloat(_0x5160cb[_0x102003(0x1fb)]):'mix('+toShaderFloat(_0x5160cb[_0x102003(0x1fb)])+',\x20'+toShaderFloat(_0xac5033[_0x102003(0x1fb)])+_0x102003(0x1f4)+toShaderFloat(_0x5160cb[_0x102003(0x1f8)])+')\x20/\x20max('+toShaderFloat(_0xac5033[_0x102003(0x1f8)]-_0x5160cb[_0x102003(0x1f8)])+',\x200.000001),\x200.0,\x201.0))';_0x28b330[_0x102003(0x1ee)](_0x102003(0x1df)+toShaderFloat(_0xac5033[_0x102003(0x1f8)])+_0x102003(0x1eb)+_0x199ed6+';');}return _0x28b330['push'](_0x102003(0x1ff)+toShaderFloat(_0x1ec1b8[_0x1ec1b8['length']-0x1]['opacity'])+';','}'),_0x28b330['join']('\x0a');};function _0x5d36(){const _0x1f7f87=['value','\x0a\x0avoid\x20fragmentMain(FragmentInput\x20fsInput,\x20inout\x20czm_modelMaterial\x20material)\x20{\x0a\x20\x20\x20\x20float\x20value\x20=\x20float(fsInput.metadata.value)\x20*\x20255.0;\x0a\x20\x20\x20\x20float\x20opacity\x20=\x20sampleTransferOpacity(value);\x0a\x20\x20\x20\x20material.diffuse\x20=\x20sampleTransferColor(value);\x0a\x20\x20\x20\x20material.alpha\x20=\x201.0\x20-\x20exp(-opacity\x20*\x20u_opacity\x20*\x20u_densityScale\x20*\x200.0008);\x0a}','564GvhMqW','opacity','3.402823466e38','957980krCjFJ','577770KBzgYJ','\x20\x20\x20\x20return\x20','65672pUArcB','90418jJxrYY','\x20\x20\x20\x20if\x20(value\x20<=\x20','float\x20sampleTransferOpacity(float\x20value)\x20{','Native\x20volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20原生体积透明度节点不能为空。','colorStops','POSITIVE_INFINITY','color','4037556FazapY','.\x20Shader\x20数值必须有限或为无穷。','length','13084bsMHFI','NEGATIVE_INFINITY','isFinite',')\x20return\x20','112csoYGb','22moYMvp','push','63UsjNpK','237432LBviQJ','65svmVfB','-3.402823466e38','Shader\x20value\x20must\x20be\x20finite\x20or\x20infinity:\x20',',\x20clamp((value\x20-\x20',',\x200.000001),\x200.0,\x201.0))','step','vec3\x20sampleTransferColor(float\x20value)\x20{'];_0x5d36=function(){return _0x1f7f87;};return _0x5d36();}function _0x5f44(_0x22e19d,_0x434f52){const _0x5d362c=_0x5d36();return _0x5f44=function(_0x5f44ca,_0x3f52c4){_0x5f44ca=_0x5f44ca-0x1de;let _0x4bd5b8=_0x5d362c[_0x5f44ca];return _0x4bd5b8;},_0x5f44(_0x22e19d,_0x434f52);}export const createNativeVoxelFragmentShader=(_0x358d76,_0x1711d6,_0x4e97e4)=>createColorFunction(_0x358d76,_0x4e97e4,_0x1711d6)+'\x0a\x0a'+createOpacityFunction(_0x1711d6,_0x4e97e4)+_0x542fb7(0x1f9);
@@ -0,0 +1,9 @@
1
+ import type { IVolumeChunk, IVolumeSource } from '../volume-scene/sourceTypes';
2
+ export interface INativeVoxelData {
3
+ values: Uint8Array;
4
+ dimensions: readonly [number, number, number];
5
+ minimumValue: number;
6
+ maximumValue: number;
7
+ }
8
+ export declare const normalizeNativeVoxelValues: (chunk: IVolumeChunk, source: IVolumeSource) => INativeVoxelData;
9
+ export declare const loadNativeVoxelData: (source: IVolumeSource, timeIndex: number, signal?: AbortSignal) => Promise<INativeVoxelData>;
@@ -0,0 +1 @@
1
+ (function(_0x523f9d,_0xdecf5d){const _0x44fca3=_0xf038,_0x2270c4=_0x523f9d();while(!![]){try{const _0x5672c4=-parseInt(_0x44fca3(0x7d))/0x1*(-parseInt(_0x44fca3(0x8e))/0x2)+parseInt(_0x44fca3(0x79))/0x3+-parseInt(_0x44fca3(0x8d))/0x4+parseInt(_0x44fca3(0x7a))/0x5+-parseInt(_0x44fca3(0x80))/0x6+-parseInt(_0x44fca3(0x84))/0x7*(-parseInt(_0x44fca3(0x77))/0x8)+-parseInt(_0x44fca3(0x81))/0x9*(-parseInt(_0x44fca3(0x88))/0xa);if(_0x5672c4===_0xdecf5d)break;else _0x2270c4['push'](_0x2270c4['shift']());}catch(_0x17ffdb){_0x2270c4['push'](_0x2270c4['shift']());}}}(_0x2399,0x28278));function _0x2399(){const _0x5a03f6=['14ZxLPxL','Native\x20voxel\x20chunk\x20requires\x20','Native\x20voxel\x20time\x20index\x20is\x20out\x20of\x20range:\x20','\x20values\x20but\x20received\x20','40DrDitq','length','metadata','count','NEGATIVE_INFINITY','602392hfQqnV','311662woFgFi','isFinite','max','.\x20原生体素块数据数量不匹配。','636976gyYWBQ','.\x20原生体素时间索引越界。','68181AoCoMY','1251700FpLgWb','valueScale','round','1VCZHQV','readChunk','min','1963488inghdd','121896KMrNFt','values','isSafeInteger'];_0x2399=function(){return _0x5a03f6;};return _0x2399();}const getSourceIndex=(_0x633008,_0x54b951,_0x4afa5a)=>_0x4afa5a['start']<=_0x4afa5a['end']?_0x633008:_0x54b951-_0x633008-0x1;function _0xf038(_0x35fef2,_0xe22aa3){const _0x2399c6=_0x2399();return _0xf038=function(_0xf03801,_0x15f293){_0xf03801=_0xf03801-0x76;let _0x19ac9b=_0x2399c6[_0xf03801];return _0x19ac9b;},_0xf038(_0x35fef2,_0xe22aa3);}export const normalizeNativeVoxelValues=(_0x16f2d0,_0x12d4e7)=>{const _0x2ff78d=_0xf038,{width:_0x160592,height:_0x479632,depth:_0x10a919}=_0x16f2d0,_0x45af0d=_0x160592*_0x479632*_0x10a919;if(_0x16f2d0[_0x2ff78d(0x82)][_0x2ff78d(0x89)]!==_0x45af0d)throw new Error(_0x2ff78d(0x85)+_0x45af0d+_0x2ff78d(0x87)+_0x16f2d0[_0x2ff78d(0x82)]['length']+_0x2ff78d(0x76));const _0xbaf74e=new Uint8Array(_0x45af0d),_0x2649af=_0x12d4e7['metadata'][_0x2ff78d(0x7b)]??0x1,_0x31b76e=_0x12d4e7[_0x2ff78d(0x8a)]['noData'];let _0x5dd6ea=Number['POSITIVE_INFINITY'],_0x491986=Number[_0x2ff78d(0x8c)];for(let _0x507eef=0x0;_0x507eef<_0x10a919;_0x507eef+=0x1){const _0x2b6f7a=getSourceIndex(_0x507eef,_0x10a919,_0x12d4e7[_0x2ff78d(0x8a)]['zAxis']);for(let _0x51c014=0x0;_0x51c014<_0x479632;_0x51c014+=0x1){const _0x51d911=getSourceIndex(_0x51c014,_0x479632,_0x12d4e7[_0x2ff78d(0x8a)]['yAxis']);for(let _0x1e585e=0x0;_0x1e585e<_0x160592;_0x1e585e+=0x1){const _0x3682dc=getSourceIndex(_0x1e585e,_0x160592,_0x12d4e7[_0x2ff78d(0x8a)]['xAxis']),_0x1bfe26=(_0x2b6f7a*_0x479632+_0x51d911)*_0x160592+_0x3682dc,_0x43bd13=(_0x507eef*_0x479632+_0x51c014)*_0x160592+_0x1e585e,_0x35e43d=_0x16f2d0[_0x2ff78d(0x82)][_0x1bfe26],_0xe87057=Number[_0x2ff78d(0x8f)](_0x35e43d)&&_0x35e43d!==_0x31b76e?_0x35e43d*_0x2649af:0x0,_0x5e0f09=Math[_0x2ff78d(0x90)](0x0,Math[_0x2ff78d(0x7f)](0xff,Math[_0x2ff78d(0x7c)](_0xe87057)));_0xbaf74e[_0x43bd13]=_0x5e0f09,_0x5e0f09>0x0&&(_0x5dd6ea=Math[_0x2ff78d(0x7f)](_0x5dd6ea,_0x5e0f09),_0x491986=Math[_0x2ff78d(0x90)](_0x491986,_0x5e0f09));}}}if(!Number[_0x2ff78d(0x8f)](_0x5dd6ea))_0x5dd6ea=0x0;if(!Number[_0x2ff78d(0x8f)](_0x491986))_0x491986=0x0;return{'values':_0xbaf74e,'dimensions':[_0x160592,_0x479632,_0x10a919],'minimumValue':_0x5dd6ea,'maximumValue':_0x491986};};export const loadNativeVoxelData=async(_0x2140a1,_0x364a0f,_0xb9c3d2)=>{const _0x2ff170=_0xf038,{xAxis:_0x22795a,yAxis:_0x218d6f,zAxis:_0x345095,timeCount:_0xeeb348}=_0x2140a1[_0x2ff170(0x8a)];if(!Number[_0x2ff170(0x83)](_0x364a0f)||_0x364a0f<0x0||_0x364a0f>=_0xeeb348)throw new RangeError(_0x2ff170(0x86)+_0x364a0f+_0x2ff170(0x78));const _0x4e6dda=await _0x2140a1[_0x2ff170(0x7e)](_0x364a0f,{'xStart':0x0,'xCount':_0x22795a[_0x2ff170(0x8b)],'levelStart':0x0,'levelCount':_0x218d6f[_0x2ff170(0x8b)],'sourceYStart':0x0,'sourceYCount':_0x345095[_0x2ff170(0x8b)]},_0xb9c3d2);return _0xb9c3d2?.['throwIfAborted'](),normalizeNativeVoxelValues(_0x4e6dda,_0x2140a1);};
@@ -0,0 +1,75 @@
1
+ import type { IVolumeChunkRange, IVolumeMetadata } from './sourceTypes';
2
+ export declare const defaultVolumeBrickWidth = 256;
3
+ export declare const defaultVolumeBrickHeight = 8;
4
+ export declare const defaultVolumeBrickDepth = 256;
5
+ export declare const defaultVolumeBrickHalo = 1;
6
+ export declare const defaultVolumeMemoryLimitBytes: number;
7
+ export interface IVolumeBrickShape {
8
+ width: number;
9
+ height: number;
10
+ depth: number;
11
+ halo: number;
12
+ }
13
+ export interface IVolumeBrickCoordinate {
14
+ x: number;
15
+ y: number;
16
+ z: number;
17
+ }
18
+ export interface IVolumeBrickLayout {
19
+ shape: IVolumeBrickShape;
20
+ countX: number;
21
+ countY: number;
22
+ countZ: number;
23
+ brickCount: number;
24
+ }
25
+ export interface IVolumeBrickDescriptor {
26
+ key: string;
27
+ coordinate: IVolumeBrickCoordinate;
28
+ coreRange: IVolumeChunkRange;
29
+ readRange: IVolumeChunkRange;
30
+ physicalWidth: number;
31
+ physicalHeight: number;
32
+ physicalDepth: number;
33
+ byteLength: number;
34
+ }
35
+ export interface IVolumeAtlasLayoutOptions {
36
+ metadata: IVolumeMetadata;
37
+ brickShape?: Partial<IVolumeBrickShape>;
38
+ maxTextureDimension3D: number;
39
+ memoryLimitBytes?: number;
40
+ reservedBytes?: number;
41
+ }
42
+ export interface IVolumeAtlasLayout {
43
+ brickLayout: IVolumeBrickLayout;
44
+ slotCountX: number;
45
+ slotCountY: number;
46
+ slotCountZ: number;
47
+ capacity: number;
48
+ atlasWidth: number;
49
+ atlasHeight: number;
50
+ atlasDepth: number;
51
+ bytesPerBrick: number;
52
+ atlasBytes: number;
53
+ pageTableBytes: number;
54
+ reservedBytes: number;
55
+ estimatedBytes: number;
56
+ memoryLimitBytes: number;
57
+ }
58
+ /** Create the normalized brick shape. */
59
+ /** 创建规范化分块形状。 */
60
+ export declare const resolveVolumeBrickShape: (shape?: Partial<IVolumeBrickShape>) => IVolumeBrickShape;
61
+ /** Create a fixed logical brick layout for one source. */
62
+ /** 为一个数据源创建固定逻辑分块布局。 */
63
+ export declare const createVolumeBrickLayout: (metadata: IVolumeMetadata, inputShape?: Partial<IVolumeBrickShape>) => IVolumeBrickLayout;
64
+ /** Return a stable key for one logical brick coordinate. */
65
+ /** 返回一个逻辑分块坐标的稳定 key。 */
66
+ export declare const createVolumeBrickKey: (coordinate: IVolumeBrickCoordinate) => string;
67
+ /** Describe core and clamped halo ranges for one brick. */
68
+ /** 描述一个分块的核心范围和裁剪后 halo 范围。 */
69
+ export declare const createVolumeBrickDescriptor: (metadata: IVolumeMetadata, layout: IVolumeBrickLayout, coordinate: IVolumeBrickCoordinate) => IVolumeBrickDescriptor;
70
+ /** Enumerate all fixed logical bricks in Z, Y, X order. */
71
+ /** 按 Z、Y、X 顺序枚举全部固定逻辑分块。 */
72
+ export declare const createVolumeBrickDescriptors: (metadata: IVolumeMetadata, layout: IVolumeBrickLayout) => IVolumeBrickDescriptor[];
73
+ /** Solve an atlas layout under device and hard memory limits. */
74
+ /** 在设备限制和硬内存上限内求解 atlas 布局。 */
75
+ export declare const calculateVolumeAtlasLayout: (options: IVolumeAtlasLayoutOptions) => IVolumeAtlasLayout;
@@ -0,0 +1 @@
1
+ const _0x56dfbb=_0x79ae;(function(_0x1eedb4,_0x397fa8){const _0x188fe6=_0x79ae,_0x483cd6=_0x1eedb4();while(!![]){try{const _0x10d548=-parseInt(_0x188fe6(0x15d))/0x1+parseInt(_0x188fe6(0x166))/0x2+parseInt(_0x188fe6(0x168))/0x3+parseInt(_0x188fe6(0x16f))/0x4*(-parseInt(_0x188fe6(0x15e))/0x5)+parseInt(_0x188fe6(0x177))/0x6*(parseInt(_0x188fe6(0x184))/0x7)+-parseInt(_0x188fe6(0x17b))/0x8*(-parseInt(_0x188fe6(0x163))/0x9)+parseInt(_0x188fe6(0x160))/0xa*(-parseInt(_0x188fe6(0x173))/0xb);if(_0x10d548===_0x397fa8)break;else _0x483cd6['push'](_0x483cd6['shift']());}catch(_0x25ccdb){_0x483cd6['push'](_0x483cd6['shift']());}}}(_0x6277,0x70cfc));import{validateVolumeMetadata}from'./volumeValidation';export const defaultVolumeBrickWidth=0x100;function _0x6277(){const _0x3ba569=['yAxis','xAxis','halo','maxTextureDimension3D','metadata','maxTextureDimension3D\x20must\x20be\x20a\x20positive\x20integer.\x20maxTextureDimension3D\x20必须是正整数。','countX','memoryLimitBytes','27622KgyhRL','101190GnxEoi','2205245xZOqmh','height','18134060NKFARU','count','Volume\x20memory\x20budget\x20is\x20invalid.\x20体积内存预算无效。','114174TxBgvP','isInteger','reservedBytes','1716930cXlGUN','zAxis','2502648DbdEcM','max','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','min','BYTES_PER_ELEMENT','shape','countZ','4GWHpoT','width','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','ceil','11EHEUUG','floor','brickCount','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','534YKRuTU','isSafeInteger','countY','depth','488SGmXGn'];_0x6277=function(){return _0x3ba569;};return _0x6277();}export const defaultVolumeBrickHeight=0x8;export const defaultVolumeBrickDepth=0x100;export const defaultVolumeBrickHalo=0x1;export const defaultVolumeMemoryLimitBytes=0x200*0x400*0x400;const validateBrickShape=_0x477f41=>{const _0x451382=_0x79ae;for(const [_0x3f84e5,_0x20deba]of[[_0x477f41[_0x451382(0x170)],_0x451382(0x170)],[_0x477f41[_0x451382(0x15f)],_0x451382(0x15f)],[_0x477f41[_0x451382(0x17a)],_0x451382(0x17a)]]){if(!Number[_0x451382(0x164)](_0x3f84e5)||_0x3f84e5<=0x0)throw new Error('Volume\x20brick\x20'+_0x20deba+_0x451382(0x176)+_0x20deba+'\x20必须是正整数。');}if(!Number[_0x451382(0x164)](_0x477f41[_0x451382(0x17e)])||_0x477f41[_0x451382(0x17e)]<0x1)throw new Error(_0x451382(0x171));},alignBytes=(_0x35932f,_0x3aac2d)=>Math[_0x56dfbb(0x172)](_0x35932f/_0x3aac2d)*_0x3aac2d;export const resolveVolumeBrickShape=(_0x1bcaff={})=>{const _0xf869ea=_0x56dfbb,_0x5189bd={'width':_0x1bcaff[_0xf869ea(0x170)]??defaultVolumeBrickWidth,'height':_0x1bcaff[_0xf869ea(0x15f)]??defaultVolumeBrickHeight,'depth':_0x1bcaff['depth']??defaultVolumeBrickDepth,'halo':_0x1bcaff[_0xf869ea(0x17e)]??defaultVolumeBrickHalo};return validateBrickShape(_0x5189bd),_0x5189bd;};export const createVolumeBrickLayout=(_0x31dc55,_0x5e407f={})=>{const _0x397397=_0x56dfbb;validateVolumeMetadata(_0x31dc55);const _0x5298b2=resolveVolumeBrickShape(_0x5e407f),_0xe8fa3f=Math['ceil'](_0x31dc55['xAxis'][_0x397397(0x161)]/_0x5298b2[_0x397397(0x170)]),_0x1925b8=Math[_0x397397(0x172)](_0x31dc55['yAxis'][_0x397397(0x161)]/_0x5298b2[_0x397397(0x15f)]),_0x4e0217=Math['ceil'](_0x31dc55[_0x397397(0x167)][_0x397397(0x161)]/_0x5298b2[_0x397397(0x17a)]);return{'shape':_0x5298b2,'countX':_0xe8fa3f,'countY':_0x1925b8,'countZ':_0x4e0217,'brickCount':_0xe8fa3f*_0x1925b8*_0x4e0217};};function _0x79ae(_0xaef258,_0x2ad9fe){const _0x6277cb=_0x6277();return _0x79ae=function(_0x79ae71,_0x4119a9){_0x79ae71=_0x79ae71-0x15d;let _0x25aa74=_0x6277cb[_0x79ae71];return _0x25aa74;},_0x79ae(_0xaef258,_0x2ad9fe);}export const createVolumeBrickKey=_0x397841=>_0x397841['x']+':'+_0x397841['y']+':'+_0x397841['z'];export const createVolumeBrickDescriptor=(_0x328198,_0x427a6c,_0x331867)=>{const _0x35af2a=_0x56dfbb;if(!Number[_0x35af2a(0x164)](_0x331867['x'])||!Number[_0x35af2a(0x164)](_0x331867['y'])||!Number['isInteger'](_0x331867['z'])||_0x331867['x']<0x0||_0x331867['x']>=_0x427a6c['countX']||_0x331867['y']<0x0||_0x331867['y']>=_0x427a6c[_0x35af2a(0x179)]||_0x331867['z']<0x0||_0x331867['z']>=_0x427a6c['countZ'])throw new Error(_0x35af2a(0x16a));const _0x10781e=_0x331867['x']*_0x427a6c[_0x35af2a(0x16d)]['width'],_0x272f9b=_0x331867['y']*_0x427a6c['shape'][_0x35af2a(0x15f)],_0x4b0754=_0x331867['z']*_0x427a6c[_0x35af2a(0x16d)][_0x35af2a(0x17a)],_0x4cd6e7=Math['min'](_0x427a6c['shape'][_0x35af2a(0x170)],_0x328198[_0x35af2a(0x17d)]['count']-_0x10781e),_0x558388=Math[_0x35af2a(0x16b)](_0x427a6c['shape']['height'],_0x328198['yAxis'][_0x35af2a(0x161)]-_0x272f9b),_0x29e8ec=Math['min'](_0x427a6c[_0x35af2a(0x16d)]['depth'],_0x328198[_0x35af2a(0x167)][_0x35af2a(0x161)]-_0x4b0754),_0xf23af0=_0x427a6c[_0x35af2a(0x16d)][_0x35af2a(0x17e)],_0x2dd2a0=Math[_0x35af2a(0x169)](0x0,_0x10781e-_0xf23af0),_0x3ed8f3=Math[_0x35af2a(0x169)](0x0,_0x272f9b-_0xf23af0),_0x26d15f=Math['max'](0x0,_0x4b0754-_0xf23af0),_0x1ae915=Math[_0x35af2a(0x16b)](_0x328198[_0x35af2a(0x17d)][_0x35af2a(0x161)],_0x10781e+_0x4cd6e7+_0xf23af0),_0x3b7e45=Math[_0x35af2a(0x16b)](_0x328198[_0x35af2a(0x17c)][_0x35af2a(0x161)],_0x272f9b+_0x558388+_0xf23af0),_0x247aeb=Math[_0x35af2a(0x16b)](_0x328198[_0x35af2a(0x167)][_0x35af2a(0x161)],_0x4b0754+_0x29e8ec+_0xf23af0),_0x4eef00=_0x427a6c[_0x35af2a(0x16d)][_0x35af2a(0x170)]+_0xf23af0*0x2,_0x2755bc=_0x427a6c[_0x35af2a(0x16d)][_0x35af2a(0x15f)]+_0xf23af0*0x2,_0x1080f5=_0x427a6c[_0x35af2a(0x16d)][_0x35af2a(0x17a)]+_0xf23af0*0x2;return{'key':createVolumeBrickKey(_0x331867),'coordinate':_0x331867,'coreRange':{'xStart':_0x10781e,'xCount':_0x4cd6e7,'levelStart':_0x272f9b,'levelCount':_0x558388,'sourceYStart':_0x4b0754,'sourceYCount':_0x29e8ec},'readRange':{'xStart':_0x2dd2a0,'xCount':_0x1ae915-_0x2dd2a0,'levelStart':_0x3ed8f3,'levelCount':_0x3b7e45-_0x3ed8f3,'sourceYStart':_0x26d15f,'sourceYCount':_0x247aeb-_0x26d15f},'physicalWidth':_0x4eef00,'physicalHeight':_0x2755bc,'physicalDepth':_0x1080f5,'byteLength':_0x4eef00*_0x2755bc*_0x1080f5*Float32Array[_0x35af2a(0x16c)]};};export const createVolumeBrickDescriptors=(_0x131cc4,_0xbda8e9)=>{const _0x4f04ad=_0x56dfbb,_0x4d2191=[];for(let _0x50af75=0x0;_0x50af75<_0xbda8e9[_0x4f04ad(0x16e)];_0x50af75+=0x1)for(let _0x280dd9=0x0;_0x280dd9<_0xbda8e9[_0x4f04ad(0x179)];_0x280dd9+=0x1)for(let _0x738692=0x0;_0x738692<_0xbda8e9['countX'];_0x738692+=0x1)_0x4d2191['push'](createVolumeBrickDescriptor(_0x131cc4,_0xbda8e9,{'x':_0x738692,'y':_0x280dd9,'z':_0x50af75}));return _0x4d2191;};export const calculateVolumeAtlasLayout=_0x4c80bb=>{const _0x3d23cb=_0x56dfbb,_0x301a28=createVolumeBrickLayout(_0x4c80bb[_0x3d23cb(0x180)],_0x4c80bb['brickShape']),_0x409a6d=_0x301a28[_0x3d23cb(0x16d)],_0x30d52e=_0x409a6d[_0x3d23cb(0x170)]+_0x409a6d[_0x3d23cb(0x17e)]*0x2,_0x21ec79=_0x409a6d[_0x3d23cb(0x15f)]+_0x409a6d[_0x3d23cb(0x17e)]*0x2,_0x5554ba=_0x409a6d['depth']+_0x409a6d[_0x3d23cb(0x17e)]*0x2,_0x1d8f72=_0x4c80bb[_0x3d23cb(0x17f)],_0x51a08d=_0x4c80bb[_0x3d23cb(0x183)]??defaultVolumeMemoryLimitBytes,_0x398943=_0x4c80bb[_0x3d23cb(0x165)]??0x0;if(!Number[_0x3d23cb(0x164)](_0x1d8f72)||_0x1d8f72<=0x0)throw new Error(_0x3d23cb(0x181));if(!Number[_0x3d23cb(0x178)](_0x51a08d)||_0x51a08d<=0x0||!Number[_0x3d23cb(0x178)](_0x398943)||_0x398943<0x0||_0x398943>=_0x51a08d)throw new Error(_0x3d23cb(0x162));const _0x3ecbd4=Math[_0x3d23cb(0x16b)](_0x301a28[_0x3d23cb(0x182)],Math['floor'](_0x1d8f72/_0x30d52e)),_0x1132c6=Math['min'](_0x301a28[_0x3d23cb(0x179)],Math[_0x3d23cb(0x174)](_0x1d8f72/_0x21ec79)),_0x10a1df=Math[_0x3d23cb(0x16b)](_0x301a28['countZ'],Math[_0x3d23cb(0x174)](_0x1d8f72/_0x5554ba));if(_0x3ecbd4<0x1||_0x1132c6<0x1||_0x10a1df<0x1)throw new Error('Device\x20maxTextureDimension3D\x20cannot\x20fit\x20one\x20physical\x20volume\x20brick.\x20设备\x20maxTextureDimension3D\x20无法容纳一个物理体积分块。');const _0x155a01=_0x30d52e*_0x21ec79*_0x5554ba*Float32Array[_0x3d23cb(0x16c)],_0x51dce0=alignBytes(_0x301a28[_0x3d23cb(0x175)]*Uint32Array[_0x3d23cb(0x16c)],0x100),_0x1b4a31=_0x51a08d-_0x398943-_0x51dce0,_0x70e7f2=Math[_0x3d23cb(0x174)](_0x1b4a31/_0x155a01);if(_0x70e7f2<0x1)throw new Error('Volume\x20memory\x20limit\x20cannot\x20fit\x20one\x20physical\x20brick\x20and\x20page\x20table.\x20体积内存上限无法容纳一个物理分块和页表。');const _0x3d7fd3=Math[_0x3d23cb(0x16b)](_0x301a28[_0x3d23cb(0x175)],_0x70e7f2,_0x3ecbd4*_0x1132c6*_0x10a1df);let _0x2f9c58=0x1,_0x4fdb0f=0x1,_0x322877=0x1,_0x1ea070=0x1;for(let _0x2d92b1=0x1;_0x2d92b1<=_0x3ecbd4;_0x2d92b1+=0x1){for(let _0x551910=0x1;_0x551910<=_0x10a1df;_0x551910+=0x1){const _0xe1413f=Math['min'](_0x1132c6,Math['floor'](_0x3d7fd3/(_0x2d92b1*_0x551910))),_0x2d68ba=_0x2d92b1*_0xe1413f*_0x551910;_0x2d68ba>_0x1ea070&&(_0x2f9c58=_0x2d92b1,_0x4fdb0f=_0xe1413f,_0x322877=_0x551910,_0x1ea070=_0x2d68ba);}}const _0x56ee10=_0x1ea070*_0x155a01;return{'brickLayout':_0x301a28,'slotCountX':_0x2f9c58,'slotCountY':_0x4fdb0f,'slotCountZ':_0x322877,'capacity':_0x1ea070,'atlasWidth':_0x2f9c58*_0x30d52e,'atlasHeight':_0x4fdb0f*_0x21ec79,'atlasDepth':_0x322877*_0x5554ba,'bytesPerBrick':_0x155a01,'atlasBytes':_0x56ee10,'pageTableBytes':_0x51dce0,'reservedBytes':_0x398943,'estimatedBytes':_0x56ee10+_0x51dce0+_0x398943,'memoryLimitBytes':_0x51a08d};};
@@ -0,0 +1,54 @@
1
+ export type VolumeBrickDemandKind = 'preview-slice' | 'locked-slice' | 'route-profile' | 'visible-volume';
2
+ export type VolumeBrickResidencyState = 'loading' | 'resident';
3
+ export interface IVolumeBrickDemand {
4
+ key: string;
5
+ kind: VolumeBrickDemandKind;
6
+ distance: number;
7
+ }
8
+ export interface IVolumeBrickResidentEntry {
9
+ key: string;
10
+ slotIndex: number;
11
+ state: VolumeBrickResidencyState;
12
+ sourceRevision: number;
13
+ requestGeneration: number;
14
+ lastUsedFrame: number;
15
+ }
16
+ export interface IVolumeBrickLoadRequest {
17
+ key: string;
18
+ slotIndex: number;
19
+ sourceRevision: number;
20
+ requestGeneration: number;
21
+ }
22
+ export interface IVolumeBrickResidencyPlan {
23
+ selectedKeys: readonly string[];
24
+ loads: readonly IVolumeBrickLoadRequest[];
25
+ evicted: readonly IVolumeBrickResidentEntry[];
26
+ residentCount: number;
27
+ pendingCount: number;
28
+ budgetLimited: boolean;
29
+ }
30
+ /** Manage pure CPU brick demand, LRU slots, and stale request generations. */
31
+ /** 管理纯 CPU 分块需求、LRU 槽位和过期请求 generation。 */
32
+ export declare class VolumeBrickResidency {
33
+ readonly capacity: number;
34
+ private readonly entries;
35
+ private readonly freeSlots;
36
+ private currentSourceRevision;
37
+ private nextRequestGeneration;
38
+ constructor(capacity: number);
39
+ /** Return immutable snapshots of current entries. */
40
+ /** 返回当前条目的不可变快照。 */
41
+ getEntries(): readonly IVolumeBrickResidentEntry[];
42
+ /** Reset all slots and return entries that callers must release. */
43
+ /** 重置全部槽位并返回调用方需要释放的条目。 */
44
+ reset(sourceRevision?: number): readonly IVolumeBrickResidentEntry[];
45
+ /** Build the latest demand plan without backend resource types. */
46
+ /** 在不包含后端资源类型的前提下创建最新需求计划。 */
47
+ plan(demands: readonly IVolumeBrickDemand[], sourceRevision: number, frameIndex: number, maximumUploads: number): IVolumeBrickResidencyPlan;
48
+ /** Commit a completed load only when its revision and generation are current. */
49
+ /** 仅在 revision 和 generation 仍有效时提交完成的加载。 */
50
+ commit(request: IVolumeBrickLoadRequest): boolean;
51
+ /** Cancel one current request and release its slot. */
52
+ /** 取消一个当前请求并释放其槽位。 */
53
+ cancel(request: IVolumeBrickLoadRequest): boolean;
54
+ }
@@ -0,0 +1 @@
1
+ const _0x20f837=_0x3794;(function(_0x23dae0,_0x34fa46){const _0x422002=_0x3794,_0x22b58b=_0x23dae0();while(!![]){try{const _0x3b7401=parseInt(_0x422002(0x90))/0x1*(-parseInt(_0x422002(0x71))/0x2)+parseInt(_0x422002(0x76))/0x3*(-parseInt(_0x422002(0x7f))/0x4)+-parseInt(_0x422002(0x8d))/0x5*(parseInt(_0x422002(0x89))/0x6)+parseInt(_0x422002(0x9e))/0x7+parseInt(_0x422002(0x8c))/0x8*(-parseInt(_0x422002(0x94))/0x9)+-parseInt(_0x422002(0x8b))/0xa*(-parseInt(_0x422002(0x97))/0xb)+parseInt(_0x422002(0x98))/0xc;if(_0x3b7401===_0x34fa46)break;else _0x22b58b['push'](_0x22b58b['shift']());}catch(_0x50d4c7){_0x22b58b['push'](_0x22b58b['shift']());}}}(_0x4f0e,0x2903e));function _0x4f0e(){const _0x51ebe4=['33eFxJCN','1394460AMIzNG','nextRequestGeneration','map','values','has','Volume\x20frame\x20index\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积帧索引必须是非负整数。','727776vXFltF','key','commit','currentSourceRevision','resident','Volume\x20source\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积数据源\x20revision\x20必须是非负整数。','135914lPKQDN','from','state','delete','Maximum\x20volume\x20uploads\x20must\x20be\x20a\x20non-negative\x20integer.\x20最大体积上传数必须是非负整数。','3MiDkTy','freeSlots','length','Volume\x20brick\x20residency\x20capacity\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块驻留容量必须是正整数。','capacity','loading','requestGeneration','kind','clear','677644PvbrfQ','slotIndex','isInteger','entries','distance','reset','sort','push','locked-slice','sourceRevision','6hNDOep','preview-slice','939430skdLnf','72vjmkTa','270735vLNaTO','pop','localeCompare','1kdRtbJ','set','cancel','lastUsedFrame','42489JXdELc','getEntries','get'];_0x4f0e=function(){return _0x51ebe4;};return _0x4f0e();}const demandPriority=_0x47a443=>{const _0x2d89=_0x3794;if(_0x47a443===_0x2d89(0x8a))return 0x0;if(_0x47a443===_0x2d89(0x87))return 0x1;if(_0x47a443==='route-profile')return 0x2;return 0x3;},preferDemand=(_0x511836,_0x53f52e)=>{const _0x18df22=_0x3794,_0x271dd1=demandPriority(_0x511836[_0x18df22(0x7d)])-demandPriority(_0x53f52e[_0x18df22(0x7d)]);if(_0x271dd1!==0x0)return _0x271dd1<0x0?_0x511836:_0x53f52e;return _0x511836[_0x18df22(0x83)]<=_0x53f52e['distance']?_0x511836:_0x53f52e;};function _0x3794(_0x31e52f,_0x30c69c){const _0x4f0e2d=_0x4f0e();return _0x3794=function(_0x379429,_0x3cfeb5){_0x379429=_0x379429-0x6c;let _0x1091de=_0x4f0e2d[_0x379429];return _0x1091de;},_0x3794(_0x31e52f,_0x30c69c);}export class VolumeBrickResidency{[_0x20f837(0x7a)];[_0x20f837(0x82)]=new Map();['freeSlots'];[_0x20f837(0x6e)]=-0x1;[_0x20f837(0x99)]=0x1;constructor(_0x2c8a3f){const _0x43d235=_0x20f837;this[_0x43d235(0x7a)]=_0x2c8a3f;if(!Number[_0x43d235(0x81)](_0x2c8a3f)||_0x2c8a3f<=0x0)throw new Error(_0x43d235(0x79));this['freeSlots']=Array[_0x43d235(0x72)]({'length':_0x2c8a3f},(_0x54d062,_0x55f29)=>_0x2c8a3f-_0x55f29-0x1);}[_0x20f837(0x95)](){const _0x57baa3=_0x20f837;return Array[_0x57baa3(0x72)](this[_0x57baa3(0x82)][_0x57baa3(0x9b)](),_0x58af48=>({..._0x58af48}));}[_0x20f837(0x84)](_0x381c5b=-0x1){const _0x59165c=_0x20f837,_0x49e193=this[_0x59165c(0x95)]();this['entries'][_0x59165c(0x7e)](),this[_0x59165c(0x77)][_0x59165c(0x78)]=0x0;for(let _0x1e3de8=this['capacity']-0x1;_0x1e3de8>=0x0;_0x1e3de8-=0x1)this['freeSlots'][_0x59165c(0x86)](_0x1e3de8);return this[_0x59165c(0x6e)]=_0x381c5b,_0x49e193;}['plan'](_0xe11af5,_0x474cf1,_0x11f6e6,_0x3cb058){const _0x36d91a=_0x20f837;if(!Number[_0x36d91a(0x81)](_0x474cf1)||_0x474cf1<0x0)throw new Error(_0x36d91a(0x70));if(!Number[_0x36d91a(0x81)](_0x11f6e6)||_0x11f6e6<0x0)throw new Error(_0x36d91a(0x9d));if(!Number[_0x36d91a(0x81)](_0x3cb058)||_0x3cb058<0x0)throw new Error(_0x36d91a(0x75));const _0x47dd18=[];if(_0x474cf1!==this['currentSourceRevision'])_0x47dd18[_0x36d91a(0x86)](...this[_0x36d91a(0x84)](_0x474cf1));const _0x47e9e9=new Map();for(const _0x1a6b34 of _0xe11af5){if(_0x1a6b34[_0x36d91a(0x6c)][_0x36d91a(0x78)]===0x0||!Number['isFinite'](_0x1a6b34['distance'])||_0x1a6b34[_0x36d91a(0x83)]<0x0)throw new Error('Volume\x20brick\x20demand\x20is\x20invalid.\x20体积分块需求无效。');const _0x4944c6=_0x47e9e9[_0x36d91a(0x96)](_0x1a6b34[_0x36d91a(0x6c)]);_0x47e9e9[_0x36d91a(0x91)](_0x1a6b34[_0x36d91a(0x6c)],_0x4944c6?preferDemand(_0x4944c6,_0x1a6b34):_0x1a6b34);}const _0x4c86a9=Array[_0x36d91a(0x72)](_0x47e9e9[_0x36d91a(0x9b)]())[_0x36d91a(0x85)]((_0x3f8b49,_0x100d83)=>{const _0x39a7b0=_0x36d91a,_0x308221=demandPriority(_0x3f8b49['kind'])-demandPriority(_0x100d83['kind']);if(_0x308221!==0x0)return _0x308221;if(_0x3f8b49[_0x39a7b0(0x83)]!==_0x100d83['distance'])return _0x3f8b49[_0x39a7b0(0x83)]-_0x100d83['distance'];const _0x93cf29=this['entries'][_0x39a7b0(0x96)](_0x3f8b49['key'])?.[_0x39a7b0(0x93)]??-0x1,_0x12fdfc=this['entries']['get'](_0x100d83[_0x39a7b0(0x6c)])?.[_0x39a7b0(0x93)]??-0x1;if(_0x93cf29!==_0x12fdfc)return _0x12fdfc-_0x93cf29;return _0x3f8b49[_0x39a7b0(0x6c)]['localeCompare'](_0x100d83[_0x39a7b0(0x6c)]);}),_0x1b5b6f=_0x4c86a9['slice'](0x0,this[_0x36d91a(0x7a)]),_0x12af77=new Set(_0x1b5b6f[_0x36d91a(0x9a)](_0x58eabd=>_0x58eabd[_0x36d91a(0x6c)]));for(const _0x4fa71f of _0x1b5b6f){const _0x214854=this[_0x36d91a(0x82)][_0x36d91a(0x96)](_0x4fa71f[_0x36d91a(0x6c)]);if(_0x214854)_0x214854[_0x36d91a(0x93)]=_0x11f6e6;}const _0x1a3262=[];for(const _0x4c2b3a of _0x1b5b6f){if(_0x1a3262[_0x36d91a(0x78)]>=_0x3cb058||this[_0x36d91a(0x82)][_0x36d91a(0x9c)](_0x4c2b3a['key']))continue;let _0x1a2417=this[_0x36d91a(0x77)][_0x36d91a(0x8e)]();if(_0x1a2417===undefined){const _0x2b7334=Array['from'](this['entries'][_0x36d91a(0x9b)]())['filter'](_0x27ef3f=>!_0x12af77[_0x36d91a(0x9c)](_0x27ef3f[_0x36d91a(0x6c)]))[_0x36d91a(0x85)]((_0x33526c,_0x17c072)=>_0x33526c[_0x36d91a(0x93)]-_0x17c072[_0x36d91a(0x93)]||_0x33526c[_0x36d91a(0x6c)][_0x36d91a(0x8f)](_0x17c072[_0x36d91a(0x6c)]))[0x0];if(!_0x2b7334)break;this[_0x36d91a(0x82)][_0x36d91a(0x74)](_0x2b7334[_0x36d91a(0x6c)]),_0x47dd18[_0x36d91a(0x86)]({..._0x2b7334}),_0x1a2417=_0x2b7334['slotIndex'];}const _0x25f99f={'key':_0x4c2b3a[_0x36d91a(0x6c)],'slotIndex':_0x1a2417,'state':_0x36d91a(0x7b),'sourceRevision':_0x474cf1,'requestGeneration':this[_0x36d91a(0x99)],'lastUsedFrame':_0x11f6e6};this[_0x36d91a(0x99)]+=0x1,this[_0x36d91a(0x82)]['set'](_0x25f99f['key'],_0x25f99f),_0x1a3262['push']({'key':_0x25f99f[_0x36d91a(0x6c)],'slotIndex':_0x25f99f['slotIndex'],'sourceRevision':_0x25f99f[_0x36d91a(0x88)],'requestGeneration':_0x25f99f['requestGeneration']});}let _0x27912e=0x0,_0x48671d=0x0;for(const _0x76a53f of this['entries'][_0x36d91a(0x9b)]())_0x76a53f[_0x36d91a(0x73)]===_0x36d91a(0x6f)?_0x27912e+=0x1:_0x48671d+=0x1;return{'selectedKeys':_0x1b5b6f[_0x36d91a(0x9a)](_0x471c0b=>_0x471c0b[_0x36d91a(0x6c)]),'loads':_0x1a3262,'evicted':_0x47dd18,'residentCount':_0x27912e,'pendingCount':_0x48671d,'budgetLimited':_0x4c86a9[_0x36d91a(0x78)]>this['capacity']};}[_0x20f837(0x6d)](_0x116460){const _0x562e86=_0x20f837,_0x256957=this[_0x562e86(0x82)][_0x562e86(0x96)](_0x116460[_0x562e86(0x6c)]);if(!_0x256957||_0x256957['slotIndex']!==_0x116460[_0x562e86(0x80)]||_0x256957[_0x562e86(0x88)]!==_0x116460[_0x562e86(0x88)]||_0x256957[_0x562e86(0x7c)]!==_0x116460['requestGeneration']||_0x116460[_0x562e86(0x88)]!==this[_0x562e86(0x6e)])return![];return _0x256957[_0x562e86(0x73)]=_0x562e86(0x6f),!![];}[_0x20f837(0x92)](_0x4efecc){const _0xa777f2=_0x20f837,_0x25234c=this['entries'][_0xa777f2(0x96)](_0x4efecc[_0xa777f2(0x6c)]);if(!_0x25234c||_0x25234c[_0xa777f2(0x73)]!==_0xa777f2(0x7b)||_0x25234c[_0xa777f2(0x7c)]!==_0x4efecc['requestGeneration']||_0x25234c[_0xa777f2(0x88)]!==_0x4efecc[_0xa777f2(0x88)])return![];return this[_0xa777f2(0x82)][_0xa777f2(0x74)](_0x25234c['key']),this['freeSlots'][_0xa777f2(0x86)](_0x25234c[_0xa777f2(0x80)]),!![];}}