rayzee 11.13.0 → 11.15.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 (278) hide show
  1. package/README.md +95 -22
  2. package/dist/{ActiveColor-YvuQq44O.js → ActiveColor-DakLCifA.js} +1 -1
  3. package/dist/{ArchiveImporter-DQU55mit.js → ArchiveImporter-DuWqpbXf.js} +282 -277
  4. package/dist/{BidirectionalIntegrator-CLmFjSN3.js → BidirectionalIntegrator-BEXXxmZH.js} +199 -198
  5. package/dist/{BufferLayout-BROyMqO1.js → BufferLayout-ny3WneEc.js} +1 -1
  6. package/dist/ColorManagement-CKN2pTRS.js +2537 -0
  7. package/dist/DepthPass-u5g7hr7J.js +68 -0
  8. package/dist/{EngineEvents-CLckhYbL.js → EngineEvents-oQGofgRf.js} +16 -2
  9. package/dist/{EngineIssues-CfJiBaNj.js → EngineIssues-t5p7TEjb.js} +2 -0
  10. package/dist/{FileFormats-sPGJeCRc.js → FileFormats-C91JE5DM.js} +1 -1
  11. package/dist/LocalExposure-Cw1g8rdU.js +344 -0
  12. package/dist/{Logger-dDDGj9Av.js → Logger-CH-TZ1co.js} +1 -1
  13. package/dist/{NeuralRetouch-CEkBhI1M.js → NeuralRetouch-CLtoW6Vt.js} +5 -5
  14. package/dist/{NeuralSuperRes-Drjws9nE.js → NeuralSuperRes-PlLjWpMF.js} +14 -14
  15. package/dist/{SolarLimb-ZYl-Pwl0.js → PackedRayBuffer-DwhV931f.js} +8 -12
  16. package/dist/{PathTracer-7a7L3cGF.js → PathTracer-BMtUFjdP.js} +5263 -4868
  17. package/dist/{PhysicalSky-DUIbTE93.js → PhysicalSky-DqanSS2m.js} +49 -48
  18. package/dist/PictureView-DpHE_jDr.js +96 -0
  19. package/dist/RayzeeRenderer-C9zGAMJo.js +3281 -0
  20. package/dist/{sceneCachePolicy-DavHt6Ii.js → SceneMetadata-BUfzHMSj.js} +335 -608
  21. package/dist/SolarLimb-BiVdxxmL.js +8 -0
  22. package/dist/TextureBuckets-D09iX9_y.js +308 -0
  23. package/dist/TextureSampling-CvMi8LNc.js +904 -0
  24. package/dist/{ToneMapGPU-4GPwoG_c.js → ToneMapGPU-tJZo_-7S.js} +22 -12
  25. package/dist/{ViewTransforms-CYN7bq2w.js → ViewTransforms-Bh7hSjSb.js} +1 -1
  26. package/dist/{WorkingMatrix-C6y233hT.js → WorkingMatrix-CDGicYGE.js} +1 -1
  27. package/dist/{ZipReader-gDSWr0I5.js → ZipReader-KPFbIuOs.js} +1 -1
  28. package/dist/addons/archives.es.js +2 -2
  29. package/dist/addons/bidirectional.es.js +1 -1
  30. package/dist/addons/color.es.js +3 -3
  31. package/dist/addons/formats.es.js +1 -1
  32. package/dist/addons/physical-sky.es.js +1 -1
  33. package/dist/addons/storage.es.js +3 -3
  34. package/dist/archiveFormats-j39rQeKs.js +37 -0
  35. package/dist/encoders.es.js +942 -0
  36. package/dist/identity-x_UfobDa.js +65 -0
  37. package/dist/{openStorage-CdyVjmps.js → openStorage-CxLMw2_a.js} +61 -62
  38. package/dist/rayzee-core.es.js +13 -12
  39. package/dist/rayzee.es.js +795 -1053
  40. package/dist/rayzee.umd.js +163 -115
  41. package/package.json +5 -2
  42. package/src/AssetConfig.js +1 -1
  43. package/src/EngineDefaults.js +1 -1
  44. package/src/EngineEvents.js +26 -0
  45. package/src/EngineIssues.js +2 -0
  46. package/src/Platform.js +40 -0
  47. package/src/RayzeeRenderer.js +221 -1111
  48. package/src/RenderSettings.js +3 -3
  49. package/src/addons/archives.js +2 -2
  50. package/src/addons/bidirectional.js +1 -1
  51. package/src/addons/color.js +6 -6
  52. package/src/addons/formats.js +1 -1
  53. package/src/addons/physicalSky.js +1 -1
  54. package/src/addons/storage.js +3 -3
  55. package/src/{Processor → bvh}/BVHBuilder.js +2 -2
  56. package/src/{Processor → bvh}/BVHLeafFold.js +1 -1
  57. package/src/{Processor/Workers → bvh}/BVHRefitWorker.js +2 -2
  58. package/src/{Processor → bvh}/BVHRefitter.js +1 -1
  59. package/src/{Processor/Workers → bvh}/BVHSubtreeWorker.js +2 -2
  60. package/src/{Processor/Workers → bvh}/BVHWorker.js +3 -3
  61. package/src/{Processor → bvh}/ParallelBVHBuilder.js +3 -3
  62. package/src/{Processor → bvh}/SplitBLAS.js +2 -2
  63. package/src/{Processor → bvh}/TLASBuilder.js +4 -4
  64. package/src/{Processor/Workers → bvh}/TLASWorker.js +2 -2
  65. package/src/{Color → color}/BakedViews.js +5 -1
  66. package/src/{Color → color}/BasicColor.js +7 -0
  67. package/src/{Color → color}/ColorManagement.js +132 -64
  68. package/src/{Color → color}/Displays.js +35 -0
  69. package/src/{Color → color}/LutBake.js +163 -9
  70. package/src/{Color → color}/OcioRuntime.js +1 -1
  71. package/src/color/OcioViews.js +1086 -0
  72. package/src/core.js +8 -8
  73. package/src/{Processor/Workers → environment}/CDFWorker.js +1 -1
  74. package/src/{Processor → environment}/EnvironmentExactTable.js +2 -2
  75. package/src/{managers → environment}/EnvironmentManager.js +10 -10
  76. package/src/{Processor → environment}/EquirectHDRInfo.js +1 -1
  77. package/src/{Processor → environment}/PhysicalSky.js +5 -5
  78. package/src/{Processor → environment}/SolarLimb.js +1 -1
  79. package/src/index.js +46 -46
  80. package/src/{Processor → lights}/EmissiveTriangleBuilder.js +5 -5
  81. package/src/{managers → lights}/LightManager.js +3 -3
  82. package/src/{Processor → lights}/LightSerializer.js +1 -1
  83. package/src/{Processor → loaders}/AssetLoader.js +115 -11
  84. package/src/loaders/SceneLoading.js +730 -0
  85. package/src/{Processor → loaders/archives}/ArchiveCache.js +3 -3
  86. package/src/{Processor → loaders/archives}/ArchiveImporter.js +15 -15
  87. package/src/{Processor/PBRT → loaders/pbrt}/PBRTSceneBuilder.js +2 -3
  88. package/src/{Processor/USD → loaders/usd}/USDScene.js +1 -1
  89. package/src/{Processor/USD → loaders/usd}/index.js +1 -1
  90. package/src/{managers → materials}/MaterialDataManager.js +8 -8
  91. package/src/{Processor → materials}/MaterialPacking.js +1 -1
  92. package/src/{Processor/Workers → materials}/PackWorker.js +1 -1
  93. package/src/{Processor → materials}/TextureCreator.js +160 -54
  94. package/src/{Processor/Workers → materials}/TexturesWorker.js +11 -14
  95. package/src/{Processor → memory}/HostMemory.js +1 -1
  96. package/src/memory/SceneSpill.js +477 -0
  97. package/src/node/nodePlatform.js +4 -2
  98. package/src/output/ImageEncoders.js +1306 -0
  99. package/src/output/Pictures.js +460 -0
  100. package/src/{Processor → output}/ToneMapCPU.js +37 -11
  101. package/src/{Processor → output}/ToneMapGPU.js +54 -8
  102. package/src/{integrators → pathtracer}/BidirectionalIntegrator.js +16 -16
  103. package/src/{Processor → pathtracer}/KernelManager.js +29 -4
  104. package/src/{Processor → pathtracer}/PackedRayBuffer.js +3 -3
  105. package/src/{Stages → pathtracer}/PathTracer.js +294 -180
  106. package/src/{Stages → pathtracer}/PathTracerStage.js +84 -26
  107. package/src/{Processor → pathtracer}/QueueManager.js +42 -13
  108. package/src/{Processor → pathtracer}/ShaderBuilder.js +1 -1
  109. package/src/{Processor → pathtracer}/StorageTexturePool.js +2 -2
  110. package/src/{managers → pathtracer}/UniformManager.js +2 -2
  111. package/src/{Pipeline → pipeline}/CompletionTracker.js +8 -1
  112. package/src/{Stages → pipeline}/Compositor.js +128 -21
  113. package/src/{Processor → scene}/BuildTimer.js +1 -1
  114. package/src/{Processor → scene}/GeometryExtractor.js +46 -6
  115. package/src/scene/SceneEdits.js +260 -0
  116. package/src/{Processor → scene}/SceneProcessor.js +65 -1106
  117. package/src/scene/SceneRefit.js +823 -0
  118. package/src/{TSL → shaders}/Atmosphere.js +1 -1
  119. package/src/{TSL → shaders}/BVHTraversal.js +1 -1
  120. package/src/{TSL → shaders}/CameraRay.js +1 -1
  121. package/src/{TSL → shaders}/Common.js +1 -1
  122. package/src/{TSL → shaders}/EmissiveSampling.js +1 -1
  123. package/src/{TSL → shaders}/Environment.js +1 -1
  124. package/src/{TSL → shaders}/LightGuide.js +1 -1
  125. package/src/{TSL → shaders}/LightVisibility.js +1 -1
  126. package/src/{TSL → shaders}/Sun.js +1 -1
  127. package/src/{TSL → shaders}/TextureSampling.js +1 -1
  128. package/src/{TSL → shaders/kernels}/CompactKernel.js +2 -2
  129. package/src/{TSL → shaders/kernels}/ConnectKernel.js +10 -10
  130. package/src/{TSL → shaders/kernels}/DebugKernel.js +4 -4
  131. package/src/shaders/kernels/DepthPass.js +146 -0
  132. package/src/{TSL → shaders/kernels}/ExtendKernel.js +5 -5
  133. package/src/{TSL → shaders/kernels}/FinalWriteKernel.js +14 -4
  134. package/src/{TSL → shaders/kernels}/GenerateKernel.js +5 -5
  135. package/src/{TSL → shaders/kernels}/LightGenerateKernel.js +14 -14
  136. package/src/{TSL → shaders/kernels}/LightSplatKernel.js +9 -9
  137. package/src/{TSL → shaders/kernels}/MergeKernel.js +7 -7
  138. package/src/{TSL → shaders/kernels}/ShadeKernel.js +27 -27
  139. package/src/{TSL → shaders/kernels}/SortGlobalKernels.js +2 -2
  140. package/src/{TSL → shaders}/patches.js +1 -1
  141. package/src/{Storage → storage}/BLASCache.js +1 -1
  142. package/src/{Storage → storage}/DownloadCache.js +10 -0
  143. package/src/{Storage → storage}/SceneGraphCodec.js +17 -2
  144. package/src/{Headless.js → viewer/Headless.js} +15 -3
  145. package/src/{PathTracerApp.js → viewer/PathTracerApp.js} +54 -32
  146. package/src/{SceneState → viewer}/SceneState.js +3 -3
  147. package/src/{managers → viewer/animation}/AnimationManager.js +1 -1
  148. package/src/{managers/timeline → viewer/animation}/CameraTrack.js +1 -1
  149. package/src/{managers/timeline → viewer/animation}/TimelineManager.js +1 -1
  150. package/src/{managers → viewer/animation}/VideoRenderManager.js +10 -6
  151. package/src/{managers → viewer/camera}/CameraManager.js +10 -10
  152. package/src/{managers → viewer/camera}/InteractionManager.js +4 -4
  153. package/src/{Stages → viewer/denoise}/DenoiserSettings.js +1 -1
  154. package/src/{managers → viewer/denoise}/DenoisingManager.js +27 -17
  155. package/src/{Stages → viewer/denoise}/MotionVector.js +3 -3
  156. package/src/{Stages → viewer/denoise}/NRD.js +4 -4
  157. package/src/{Stages → viewer/denoise}/NormalDepth.js +8 -8
  158. package/src/{Passes → viewer/denoise}/OIDNDenoiser.js +94 -25
  159. package/src/{Passes → viewer/denoise}/OIDNTemporalHistory.js +1 -1
  160. package/src/{managers → viewer/lights}/GoboManager.js +3 -3
  161. package/src/{managers → viewer/lights}/IESManager.js +4 -4
  162. package/src/{Processor → viewer/lights}/IESParser.js +1 -1
  163. package/src/{managers → viewer/overlays}/OverlayManager.js +10 -10
  164. package/src/{managers/helpers → viewer/overlays}/TransformGizmoHelper.js +1 -1
  165. package/src/{managers → viewer/overlays}/TransformManager.js +1 -1
  166. package/src/{managers/helpers → viewer/overlays}/ViewOverlayRenderer.js +2 -12
  167. package/src/{Passes → viewer/picture}/AIUpscaler.js +3 -3
  168. package/src/{Processor/Workers → viewer/picture}/AIUpscalerWorker.js +2 -2
  169. package/src/{Stages → viewer/picture}/AutoExposure.js +2 -2
  170. package/src/{Stages → viewer/picture}/LocalExposure.js +2 -2
  171. package/src/{neural → viewer/picture}/NeuralRetouch.js +3 -3
  172. package/src/{neural → viewer/picture}/NeuralSuperRes.js +5 -5
  173. package/src/viewer/picture/PictureView.js +205 -0
  174. package/dist/ColorManagement-3xw0xXRg.js +0 -1973
  175. package/dist/RayzeeRenderer-CjjGT2e0.js +0 -3717
  176. package/dist/SceneMetadata-CoAHTAmo.js +0 -183
  177. package/dist/identity-C1cLD1C0.js +0 -49
  178. package/dist/shared-BGBcSxBQ.js +0 -17
  179. package/src/Color/OcioViews.js +0 -633
  180. package/src/Processor/generateMaterialSpheres.js +0 -71
  181. package/src/Processor/utils.js +0 -613
  182. /package/dist/{AssetConfig-DSEntE65.js → AssetConfig-C8BsprCp.js} +0 -0
  183. /package/src/{utils/Logger.js → Logger.js} +0 -0
  184. /package/src/{Processor → bvh}/ReinsertionOptimizer.js +0 -0
  185. /package/src/{Color → color}/ActiveColor.js +0 -0
  186. /package/src/{Color → color}/BuiltinViews.js +0 -0
  187. /package/src/{Color → color}/ColorSpaces.js +0 -0
  188. /package/src/{Color → color}/InputColorSpaces.js +0 -0
  189. /package/src/{Color → color}/ViewTransforms.js +0 -0
  190. /package/src/{Color → color}/WorkingMatrix.js +0 -0
  191. /package/src/{Processor → environment}/AtmosphereModel.js +0 -0
  192. /package/src/{Processor → environment}/SimpleSky.js +0 -0
  193. /package/src/{Processor → environment}/SunPosition.js +0 -0
  194. /package/src/{Processor → lights}/LightBVHBuilder.js +0 -0
  195. /package/src/{Processor → lights}/blackbody.js +0 -0
  196. /package/src/{Processor → loaders}/FileFormats.js +0 -0
  197. /package/src/{Processor → loaders}/GLTFDecoders.js +0 -0
  198. /package/src/{Processor → loaders}/GLTFDiffuseTransmission.js +0 -0
  199. /package/src/{Processor → loaders}/PlatformImageLoader.js +0 -0
  200. /package/src/{Processor → loaders}/SceneMetadata.js +0 -0
  201. /package/src/{Processor → loaders/archives}/ArchiveReader.js +0 -0
  202. /package/src/{Processor → loaders/archives}/ZipReader.js +0 -0
  203. /package/src/{Processor → loaders/archives}/archiveFormats.js +0 -0
  204. /package/src/{Processor/PBRT → loaders/pbrt}/EqualAreaOctahedral.js +0 -0
  205. /package/src/{Processor/PBRT → loaders/pbrt}/LoopSubdivision.js +0 -0
  206. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTAnimation.js +0 -0
  207. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTCurves.js +0 -0
  208. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTMaterials.js +0 -0
  209. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTMath.js +0 -0
  210. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTParser.js +0 -0
  211. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTScattering.js +0 -0
  212. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTTextureBake.js +0 -0
  213. /package/src/{Processor/PBRT → loaders/pbrt}/PBRTTokenizer.js +0 -0
  214. /package/src/{Processor/PBRT → loaders/pbrt}/PFM.js +0 -0
  215. /package/src/{Processor/PBRT → loaders/pbrt}/buffers.js +0 -0
  216. /package/src/{Processor/PBRT → loaders/pbrt}/index.js +0 -0
  217. /package/src/{Processor/USD → loaders/usd}/USDLayer.js +0 -0
  218. /package/src/{Processor/USD → loaders/usd}/USDStage.js +0 -0
  219. /package/src/{Processor/USD → loaders/usd}/USDText.js +0 -0
  220. /package/src/{Processor → materials}/ResampleRGBA8.js +0 -0
  221. /package/src/{Processor → materials}/TextureBuckets.js +0 -0
  222. /package/src/{Processor → memory}/ChunkedRecords.js +0 -0
  223. /package/src/{Processor → memory}/VRAMTracker.js +0 -0
  224. /package/src/{Processor → output}/TextureReadback.js +0 -0
  225. /package/src/{Processor → pathtracer}/CameraOptimizer.js +0 -0
  226. /package/src/{Pipeline → pipeline}/BindingAudit.js +0 -0
  227. /package/src/{Pipeline → pipeline}/EventDispatcher.js +0 -0
  228. /package/src/{Pipeline → pipeline}/PipelineContext.js +0 -0
  229. /package/src/{Pipeline → pipeline}/RenderPipeline.js +0 -0
  230. /package/src/{Pipeline → pipeline}/RenderStage.js +0 -0
  231. /package/src/{SceneState/portable.js → portable.js} +0 -0
  232. /package/src/{Processor → scene}/BufferLayout.js +0 -0
  233. /package/src/{Processor → scene}/InstanceTable.js +0 -0
  234. /package/src/{SceneHelpers.js → scene/SceneHelpers.js} +0 -0
  235. /package/src/{managers → scene}/ViewCamera.js +0 -0
  236. /package/src/{TSL → shaders}/Bidirectional.js +0 -0
  237. /package/src/{TSL → shaders}/BidirectionalLamps.js +0 -0
  238. /package/src/{TSL → shaders}/Clearcoat.js +0 -0
  239. /package/src/{TSL → shaders}/Debugger.js +0 -0
  240. /package/src/{TSL → shaders}/Displacement.js +0 -0
  241. /package/src/{TSL → shaders}/EnvironmentCDF.js +0 -0
  242. /package/src/{TSL → shaders}/Fresnel.js +0 -0
  243. /package/src/{TSL → shaders}/HitFacet.js +0 -0
  244. /package/src/{TSL → shaders}/LightBVHSampling.js +0 -0
  245. /package/src/{TSL → shaders}/LightsCore.js +0 -0
  246. /package/src/{TSL → shaders}/LightsDirect.js +0 -0
  247. /package/src/{TSL → shaders}/LightsIndirect.js +0 -0
  248. /package/src/{TSL → shaders}/LightsSampling.js +0 -0
  249. /package/src/{TSL → shaders}/MaterialEvaluation.js +0 -0
  250. /package/src/{TSL → shaders}/MaterialProperties.js +0 -0
  251. /package/src/{TSL → shaders}/MaterialSampling.js +0 -0
  252. /package/src/{TSL → shaders}/MaterialTransmission.js +0 -0
  253. /package/src/{TSL → shaders}/PathTracerCore.js +0 -0
  254. /package/src/{TSL → shaders}/Random.js +0 -0
  255. /package/src/{TSL → shaders}/SceneResources.js +0 -0
  256. /package/src/{TSL → shaders}/ShadowTerminator.js +0 -0
  257. /package/src/{TSL → shaders}/Struct.js +0 -0
  258. /package/src/{TSL → shaders}/Subsurface.js +0 -0
  259. /package/src/{Storage → storage}/CDFCache.js +0 -0
  260. /package/src/{Storage → storage}/GeometrySpill.js +0 -0
  261. /package/src/{Storage → storage}/SpillStore.js +0 -0
  262. /package/src/{Storage → storage}/StorageManager.js +0 -0
  263. /package/src/{Storage → storage}/StorageOps.js +0 -0
  264. /package/src/{Storage → storage}/StorageWorker.js +0 -0
  265. /package/src/{Storage → storage}/areas.js +0 -0
  266. /package/src/{Storage → storage}/events.js +0 -0
  267. /package/src/{Storage → storage}/identity.js +0 -0
  268. /package/src/{Storage → storage}/index.js +0 -0
  269. /package/src/{Storage → storage}/inlineTransport.js +0 -0
  270. /package/src/{Storage → storage}/locks.js +0 -0
  271. /package/src/{Storage → storage}/openStorage.js +0 -0
  272. /package/src/{Storage → storage}/sceneCachePolicy.js +0 -0
  273. /package/src/{Storage → storage}/shared.js +0 -0
  274. /package/src/{Storage → storage}/transport.js +0 -0
  275. /package/src/{managers → viewer/camera}/WalkControls.js +0 -0
  276. /package/src/{managers/helpers → viewer/overlays}/OutlineHelper.js +0 -0
  277. /package/src/{managers/helpers → viewer/overlays}/TileHelper.js +0 -0
  278. /package/src/{managers/helpers → viewer/overlays}/overlaySurface.js +0 -0
@@ -1,15 +1,15 @@
1
- import { n as e } from "./BidirectionalIntegrator-CLmFjSN3.js";
2
- import { A as t, T as n, Z as r, at as i, n as a, r as o, st as s, v as c, x as l } from "./sceneCachePolicy-DavHt6Ii.js";
3
- import { n as u, r as d, t as f } from "./EngineIssues-CfJiBaNj.js";
4
- import { r as p } from "./shared-BGBcSxBQ.js";
5
- import { i as m, n as h, o as g, r as _ } from "./identity-C1cLD1C0.js";
6
- import { a as v, s as y, t as b } from "./SceneMetadata-CoAHTAmo.js";
7
- import { n as x, t as S } from "./ZipReader-gDSWr0I5.js";
1
+ import { n as e } from "./BidirectionalIntegrator-BEXXxmZH.js";
2
+ import { n as t, r as n, t as r } from "./EngineIssues-t5p7TEjb.js";
3
+ import { D as i, F as a, M as o, R as s, a as c, c as l, j as u, l as d, t as f, w as p } from "./SceneMetadata-BUfzHMSj.js";
4
+ import { i as m, l as h, n as g, o as _, r as v } from "./identity-x_UfobDa.js";
5
+ import { a as y } from "./EngineEvents-oQGofgRf.js";
6
+ import { t as b } from "./archiveFormats-j39rQeKs.js";
7
+ import { n as x, t as S } from "./ZipReader-KPFbIuOs.js";
8
8
  import { AnimationClip as C, BooleanKeyframeTrack as w, BoxGeometry as T, BufferAttribute as E, BufferGeometry as D, CapsuleGeometry as ee, ClampToEdgeWrapping as te, Color as O, ConeGeometry as ne, CylinderGeometry as re, DataTexture as k, DirectionalLight as ie, DoubleSide as A, EquirectangularReflectionMapping as ae, Euler as oe, Float32BufferAttribute as j, FloatType as se, FrontSide as ce, Group as le, InstancedBufferAttribute as ue, InstancedMesh as de, LinearFilter as fe, LoadingManager as pe, MaterialLoader as me, Matrix4 as M, Mesh as he, MeshPhysicalMaterial as N, MirroredRepeatWrapping as ge, NoColorSpace as _e, NumberKeyframeTrack as ve, Object3D as ye, OrthographicCamera as be, PerspectiveCamera as xe, PlaneGeometry as Se, PointLight as Ce, Quaternion as we, QuaternionKeyframeTrack as Te, RGBAFormat as Ee, RectAreaLight as De, RepeatWrapping as Oe, SRGBColorSpace as P, SphereGeometry as ke, SpotLight as Ae, Texture as je, Uint32BufferAttribute as F, Vector3 as I, VectorKeyframeTrack as Me } from "three";
9
9
  import { HDRLoader as Ne } from "three/addons/loaders/HDRLoader.js";
10
10
  import { Gunzip as Pe, strFromU8 as Fe } from "three/addons/libs/fflate.module.js";
11
11
  import { EXRLoader as Ie } from "three/addons/loaders/EXRLoader.js";
12
- //#region src/Processor/ArchiveReader.js
12
+ //#region src/loaders/archives/ArchiveReader.js
13
13
  var L = 512, Le = 4 << 20, Re = 15e8, ze = new TextDecoder();
14
14
  function Be(e) {
15
15
  return e.length >= 2 && e[0] === 31 && e[1] === 139;
@@ -331,59 +331,59 @@ function lt(e) {
331
331
  };
332
332
  }
333
333
  //#endregion
334
- //#region src/Processor/ArchiveCache.js
334
+ //#region src/loaders/archives/ArchiveCache.js
335
335
  var ut = 1, dt = 3;
336
336
  async function ft(e, t) {
337
- return `${e}:${m(await h(t))}`;
338
- }
339
- async function pt(e, { storage: t, label: n = e.name, onProgress: r = null, filter: i = null, part: a = null }) {
340
- if (!t || typeof DecompressionStream > "u") return null;
341
- let o = t.area(p.ARCHIVES), s = await ft("gunzip", e), c = s, l = await o.open(s);
342
- !l && i && (l = await o.open(c = `${s}|${a}`));
343
- let d = !!l;
344
- if (!l) {
345
- let s = await o.create(c, i ? { label: `${n} (${a})` } : {
346
- label: n,
337
+ return `${e}:${m(await g(t))}`;
338
+ }
339
+ async function pt(e, { storage: n, label: r = e.name, onProgress: i = null, filter: a = null, part: o = null }) {
340
+ if (!n || typeof DecompressionStream > "u") return null;
341
+ let s = n.area(h.ARCHIVES), c = await ft("gunzip", e), l = c, u = await s.open(c);
342
+ !u && a && (u = await s.open(l = `${c}|${o}`));
343
+ let d = !!u;
344
+ if (!u) {
345
+ let c = await s.create(l, a ? { label: `${r} (${o})` } : {
346
+ label: r,
347
347
  expectedBytes: e.size * dt
348
348
  });
349
- if (!s) return null;
350
- let d = null, f = at(i ? {
351
- filter: i,
349
+ if (!c) return null;
350
+ let d = null, f = at(a ? {
351
+ filter: a,
352
352
  sink: (e) => d.enqueue(e)
353
- } : {}), m = new TransformStream({
353
+ } : {}), p = new TransformStream({
354
354
  start(e) {
355
355
  d = e;
356
356
  },
357
357
  transform(e, t) {
358
- f.push(e), i || t.enqueue(e);
358
+ f.push(e), a || t.enqueue(e);
359
359
  }
360
360
  });
361
361
  try {
362
- let t = e.stream().pipeThrough(new DecompressionStream("gzip")).pipeThrough(m), n = await s.writeStream("data.tar", t, { onProgress: r });
363
- await s.writeJSON("index.json", {
362
+ let t = e.stream().pipeThrough(new DecompressionStream("gzip")).pipeThrough(p), n = await c.writeStream("data.tar", t, { onProgress: i });
363
+ await c.writeJSON("index.json", {
364
364
  v: ut,
365
365
  listing: f.finish()
366
- }), await s.commit({
366
+ }), await c.commit({
367
367
  compressedBytes: e.size,
368
368
  tarBytes: n
369
369
  });
370
370
  } catch (e) {
371
- if (await s.abort(), e?.name !== "QuotaExceededError") throw e;
372
- return t._issue(u.STORAGE_QUOTA_EXCEEDED, `ran out of room unpacking ${n}; reading it in memory instead`, { area: p.ARCHIVES }), null;
371
+ if (await c.abort(), e?.name !== "QuotaExceededError") throw e;
372
+ return n._issue(t.STORAGE_QUOTA_EXCEEDED, `ran out of room unpacking ${r}; reading it in memory instead`, { area: h.ARCHIVES }), null;
373
373
  }
374
- if (l = await o.open(c, { wait: !0 }), !l) return null;
374
+ if (u = await s.open(l, { wait: !0 }), !u) return null;
375
375
  }
376
- let f = await l.file("data.tar"), m = await l.json("index.json");
377
- return !f || m?.v !== ut ? (l.release(), null) : {
376
+ let f = await u.file("data.tar"), p = await u.json("index.json");
377
+ return !f || p?.v !== ut ? (u.release(), null) : {
378
378
  file: f,
379
- index: m,
380
- release: () => l.release(),
379
+ index: p,
380
+ release: () => u.release(),
381
381
  cached: d
382
382
  };
383
383
  }
384
384
  async function mt(e, t) {
385
385
  if (!t) return null;
386
- let n = await t.area(p.ARCHIVES).open(await ft("tarindex", e));
386
+ let n = await t.area(h.ARCHIVES).open(await ft("tarindex", e));
387
387
  if (!n) return null;
388
388
  try {
389
389
  let e = await n.json("index.json");
@@ -394,7 +394,7 @@ async function mt(e, t) {
394
394
  }
395
395
  async function ht(e, t, n) {
396
396
  if (!t || !n) return !1;
397
- let r = await t.area(p.ARCHIVES).create(await ft("tarindex", e), { label: `${e.name} (index)` });
397
+ let r = await t.area(h.ARCHIVES).create(await ft("tarindex", e), { label: `${e.name} (index)` });
398
398
  if (!r) return !1;
399
399
  try {
400
400
  return await r.writeJSON("index.json", n), await r.commit(), !0;
@@ -646,44 +646,49 @@ function Vt(e, t) {
646
646
  }
647
647
  async function Ht(e, t, { loadTexture: n }) {
648
648
  if (e?.v !== 2) throw Error("scene graph: unknown format");
649
- let r = await Rt(t, zt(e)), i = (e) => r.get(e.offset), a = /* @__PURE__ */ new Map(), o = {};
649
+ let r = await Rt(t, zt(e)), i = (e) => r.get(e.offset), a = /* @__PURE__ */ new Map(), o = {}, s = /* @__PURE__ */ new Map();
650
650
  for (let t of e.textures) {
651
651
  let e;
652
652
  if (t.path) {
653
- if (e = await n(t.path, t.loader), !e) throw Error(`scene graph: "${t.path}" is missing from the archive`);
653
+ let r = `${t.loader}|${t.path}`, i = s.get(r);
654
+ if (i) e = i.clone(), e.userData = {};
655
+ else {
656
+ if (e = await n(t.path, t.loader), !e) throw Error(`scene graph: "${t.path}" is missing from the archive`);
657
+ s.set(r, e);
658
+ }
654
659
  e.userData[_t] = t.path, e.userData[vt] = t.loader;
655
660
  } else e = new k(i(t.data.section), t.data.width, t.data.height);
656
661
  Vt(e, t), o[t.uuid] = e;
657
662
  }
658
- let s = new me().setTextures(o), c = {};
663
+ let c = new me().setTextures(o), l = {};
659
664
  for (let t of e.materials) {
660
- let e = s.parse(t);
665
+ let e = c.parse(t);
661
666
  for (let [n, r] of Object.entries(t.exactColors ?? {})) n === "diffuseTransmissionColor" && (e[n] = new O()), e[n]?.setRGB(r[0], r[1], r[2]);
662
667
  t.exactIor !== void 0 && (e.ior = t.exactIor), t.diffuseTransmission !== void 0 && (e.diffuseTransmission = t.diffuseTransmission), t.diffuseRoughness !== void 0 && (e.diffuseRoughness = t.diffuseRoughness);
663
668
  for (let [n, r] of Object.entries(t.engineTextures ?? {})) o[r] && (e[n] = o[r]);
664
- c[t.uuid] = e;
669
+ l[t.uuid] = e;
665
670
  }
666
- let l = {};
671
+ let u = {};
667
672
  for (let t of e.geometries) {
668
673
  let e = new D();
669
674
  e.uuid = t.uuid, e.name = t.name;
670
675
  for (let [n, i] of Object.entries(t.attributes)) e.setAttribute(n, Bt(r, i));
671
676
  t.index && e.setIndex(Bt(r, t.index));
672
677
  for (let n of t.groups) e.addGroup(n.start, n.count, n.materialIndex);
673
- e.setDrawRange(t.drawRange.start, t.drawRange.count), e.userData = t.userData, l[t.uuid] = e;
678
+ e.setDrawRange(t.drawRange.start, t.drawRange.count), e.userData = t.userData, u[t.uuid] = e;
674
679
  }
675
- let u = [];
680
+ let d = [];
676
681
  for (let t of e.nodes) {
677
- let e = Array.isArray(t.material) ? t.material.map((e) => c[e]) : c[t.material], n;
682
+ let e = Array.isArray(t.material) ? t.material.map((e) => l[e]) : l[t.material], n;
678
683
  switch (t.type) {
679
684
  case "InstancedMesh": {
680
- n = new de(l[t.geometry], e, 1);
685
+ n = new de(u[t.geometry], e, 1);
681
686
  let r = a.get(t.instanceMatrix.offset);
682
687
  r || a.set(t.instanceMatrix.offset, r = new ue(i(t.instanceMatrix), 16)), n.instanceMatrix = r, n.count = t.count, t.instanceColor && (n.instanceColor = new ue(i(t.instanceColor), 3));
683
688
  break;
684
689
  }
685
690
  case "Mesh":
686
- n = new he(l[t.geometry], e);
691
+ n = new he(u[t.geometry], e);
687
692
  break;
688
693
  case "PerspectiveCamera":
689
694
  n = new xe();
@@ -728,20 +733,20 @@ async function Ht(e, t, { loadTexture: n }) {
728
733
  n.color.fromArray(t.color);
729
734
  for (let e of wt) t[e] !== void 0 && (n[e] = t[e]);
730
735
  }
731
- u.push(n), t.parent >= 0 && u[t.parent].add(n);
736
+ d.push(n), t.parent >= 0 && d[t.parent].add(n);
732
737
  }
733
- let d = new Map(u.map((e) => [e.uuid, e]));
738
+ let f = new Map(d.map((e) => [e.uuid, e]));
734
739
  return e.nodes.forEach((e, t) => {
735
- e.target && d.has(e.target) && (u[t].target = d.get(e.target));
740
+ e.target && f.has(e.target) && (d[t].target = f.get(e.target));
736
741
  }), {
737
- root: u[0],
742
+ root: d[0],
738
743
  environment: e.environment ? o[e.environment] : null,
739
744
  animations: e.animations.map((e) => C.parse(e)),
740
745
  stats: e.stats
741
746
  };
742
747
  }
743
748
  //#endregion
744
- //#region src/Processor/PBRT/buffers.js
749
+ //#region src/loaders/pbrt/buffers.js
745
750
  var Ut = (e) => e.byteOffset === 0 && e.byteLength === e.buffer.byteLength && typeof e.buffer.transfer == "function" && !(typeof SharedArrayBuffer < "u" && e.buffer instanceof SharedArrayBuffer);
746
751
  function R(e) {
747
752
  e && Ut(e) && e.buffer.transfer(0);
@@ -753,7 +758,7 @@ function z(e, t) {
753
758
  return r.set(t < e.length ? e.subarray(0, t) : e), r;
754
759
  }
755
760
  //#endregion
756
- //#region src/Processor/PBRT/PBRTTokenizer.js
761
+ //#region src/loaders/pbrt/PBRTTokenizer.js
757
762
  var B = {
758
763
  STRING: "string",
759
764
  NUMBER: "number",
@@ -856,7 +861,7 @@ var mn = class {
856
861
  }
857
862
  };
858
863
  //#endregion
859
- //#region src/Processor/PBRT/PBRTMath.js
864
+ //#region src/loaders/pbrt/PBRTMath.js
860
865
  function hn() {
861
866
  return [
862
867
  1,
@@ -1038,7 +1043,7 @@ function Tn(e) {
1038
1043
  ];
1039
1044
  }
1040
1045
  //#endregion
1041
- //#region src/Processor/PBRT/PBRTParser.js
1046
+ //#region src/loaders/pbrt/PBRTParser.js
1042
1047
  var En = 8, Dn = 1, On = 2, kn = 3, An = new Set([
1043
1048
  "Identity",
1044
1049
  "Transform",
@@ -2099,7 +2104,7 @@ function zn(e, t) {
2099
2104
  return (r + i) / 2;
2100
2105
  }
2101
2106
  //#endregion
2102
- //#region src/Processor/PBRT/PBRTMaterials.js
2107
+ //#region src/loaders/pbrt/PBRTMaterials.js
2103
2108
  var Bn = {
2104
2109
  au: [
2105
2110
  1,
@@ -2466,7 +2471,7 @@ async function tr(e, t) {
2466
2471
  return s && t.resolveNormalMap && (i.normalMap = await t.resolveNormalMap(s)), i.clearcoat > 0 && i.normalMap && (i.clearcoatNormalMap = i.normalMap), i.roughness = Math.max(0, Math.min(1, i.roughness)), i;
2467
2472
  }
2468
2473
  //#endregion
2469
- //#region src/Processor/PBRT/PBRTTextureBake.js
2474
+ //#region src/loaders/pbrt/PBRTTextureBake.js
2470
2475
  var nr = 4096, rr = (e) => e?.key ?? "", ir = (e) => e <= .04045 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4, ar = (e) => e <= .0031308 ? e * 12.92 : 1.055 * e ** (1 / 2.4) - .055;
2471
2476
  function or(e, { channels: t, decode: n = null, scale: r = 1, invert: i = !1, mapping: a = null }) {
2472
2477
  let { width: o, height: s } = e, c = e.channels ?? 4, l = new Float32Array(o * s * t), u = e.topDown !== !1, d = n && (e.data instanceof Uint8Array || e.data instanceof Uint8ClampedArray) ? Float64Array.from({ length: 256 }, (e, t) => n(t / 255)) : null, f = d ? (t) => d[e.data[t]] : (t) => n ? n(e.data[t] / 255) : e.data[t], p = t === 1 && c === 4 && sr(e), m = t === 1 && c >= 3 && !p;
@@ -2645,7 +2650,7 @@ function hr(e, t, n, r) {
2645
2650
  };
2646
2651
  }
2647
2652
  //#endregion
2648
- //#region src/Processor/PBRT/LoopSubdivision.js
2653
+ //#region src/loaders/pbrt/LoopSubdivision.js
2649
2654
  function gr(e) {
2650
2655
  return e === 3 ? 3 / 16 : 3 / (8 * e);
2651
2656
  }
@@ -2733,7 +2738,7 @@ function xr(e, t, n, r = 2e6) {
2733
2738
  };
2734
2739
  }
2735
2740
  //#endregion
2736
- //#region src/Processor/PBRT/EqualAreaOctahedral.js
2741
+ //#region src/loaders/pbrt/EqualAreaOctahedral.js
2737
2742
  function Sr(e, t, n) {
2738
2743
  let r = Math.abs(e), i = Math.abs(t), a = Math.sqrt(Math.max(0, 1 - Math.abs(n))), o = Math.max(r, i), s = o === 0 ? 0 : Math.min(r, i) / o, c = 2 / Math.PI * Math.atan(s);
2739
2744
  r < i && (c = 1 - c);
@@ -2786,7 +2791,7 @@ function Tr(e, t, n = 1, r = 0) {
2786
2791
  };
2787
2792
  }
2788
2793
  //#endregion
2789
- //#region src/Processor/PBRT/PBRTCurves.js
2794
+ //#region src/loaders/pbrt/PBRTCurves.js
2790
2795
  var Er = 2;
2791
2796
  function Dr(e, t) {
2792
2797
  let n = e * e, r = n * e;
@@ -3081,7 +3086,7 @@ async function Hr(e, t = null) {
3081
3086
  };
3082
3087
  }
3083
3088
  //#endregion
3084
- //#region src/Processor/PBRT/PBRTSceneBuilder.js
3089
+ //#region src/loaders/pbrt/PBRTSceneBuilder.js
3085
3090
  var Ur = new Set([
3086
3091
  "distant",
3087
3092
  "point",
@@ -3503,7 +3508,7 @@ var Ri = class {
3503
3508
  async _buildInstances(e, t) {
3504
3509
  let n = 0;
3505
3510
  e.skippedInstances > 0 && (this.skippedForBudget += e.skippedInstances);
3506
- let i = new Float64Array(16), a = new M(), o = /* @__PURE__ */ new Map(), s = (e, s, c, l, u, d, f) => {
3511
+ let r = new Float64Array(16), i = new M(), o = /* @__PURE__ */ new Map(), s = (e, s, c, l, u, d, f) => {
3507
3512
  let p = l ? Array.prototype.join.call(l, ",") : "", m = o.get(e);
3508
3513
  m || o.set(e, m = /* @__PURE__ */ new Map());
3509
3514
  let h = m.get(p), g = Math.max(0, this.maxPlacements - this.placementCount), _ = h ? h.count : Math.min(e.count, g);
@@ -3512,16 +3517,16 @@ var Ri = class {
3512
3517
  if (v.name = `instance_${n++}`, v.frustumCulled = !1, h) v.instanceMatrix = h.attribute;
3513
3518
  else {
3514
3519
  for (let t = 0; t < _; t++) {
3515
- if (l) _n(i, e.matrices, t * 16, l);
3516
- else for (let n = 0; n < 16; n++) i[n] = e.matrices[t * 16 + n];
3517
- v.setMatrixAt(t, a.fromArray(this.convertHandedness ? V(Gr, i) : i));
3520
+ if (l) _n(r, e.matrices, t * 16, l);
3521
+ else for (let n = 0; n < 16; n++) r[n] = e.matrices[t * 16 + n];
3522
+ v.setMatrixAt(t, i.fromArray(this.convertHandedness ? V(Gr, r) : r));
3518
3523
  }
3519
3524
  v.instanceMatrix.needsUpdate = !0, m.set(p, {
3520
3525
  attribute: v.instanceMatrix,
3521
3526
  count: _
3522
3527
  }), this.placementCount += _;
3523
3528
  }
3524
- r(v), t.add(v), this.reportedMeshes += _, this.report.length < Xr && this.report.push({
3529
+ a(v), t.add(v), this.reportedMeshes += _, this.report.length < Xr && this.report.push({
3525
3530
  mesh: `${v.name} ×${_}`,
3526
3531
  shape: u,
3527
3532
  material: d,
@@ -3820,26 +3825,26 @@ var Ri = class {
3820
3825
  return a && a.length && n.setIndex(qr(a)), r || n.computeVertexNormals(), n;
3821
3826
  }
3822
3827
  _curve(e) {
3823
- let n = U(e, "P")?.value;
3824
- if (!n || n.length < 12) return this.warn("curve needs at least 4 control points"), null;
3825
- let r = Math.round(G(e, "degree", 3));
3826
- if (r !== 3) return this.warn(`curve degree ${r} not supported — only cubic`), null;
3827
- let i = K(e, "type", "flat"), a = G(e, "width", 1), o = Lr({
3828
- P: n,
3828
+ let t = U(e, "P")?.value;
3829
+ if (!t || t.length < 12) return this.warn("curve needs at least 4 control points"), null;
3830
+ let n = Math.round(G(e, "degree", 3));
3831
+ if (n !== 3) return this.warn(`curve degree ${n} not supported — only cubic`), null;
3832
+ let r = K(e, "type", "flat"), i = G(e, "width", 1), a = Lr({
3833
+ P: t,
3829
3834
  basis: K(e, "basis", "bezier"),
3830
- width0: G(e, "width0", a),
3831
- width1: G(e, "width1", a),
3835
+ width0: G(e, "width0", i),
3836
+ width1: G(e, "width1", i),
3832
3837
  N: U(e, "N")?.value || null,
3833
3838
  steps: this.curveSteps,
3834
- sides: this.curveSides ?? ii[i] ?? 1,
3839
+ sides: this.curveSides ?? ii[r] ?? 1,
3835
3840
  tolerance: this.curveTolerance
3836
3841
  });
3837
- if (!o) return this.warn("curve could not be tessellated"), null;
3838
- let s = new D();
3839
- return s.setAttribute("position", new E(o.positions, 3)), s.setIndex(new E(o.indices, 1)), s.computeVertexNormals(), t(s, "normal"), s;
3842
+ if (!a) return this.warn("curve could not be tessellated"), null;
3843
+ let o = new D();
3844
+ return o.setAttribute("position", new E(a.positions, 3)), o.setIndex(new E(a.indices, 1)), o.computeVertexNormals(), s(o, "normal"), o;
3840
3845
  }
3841
3846
  async _curves(e) {
3842
- let n = await Hr({
3847
+ let t = await Hr({
3843
3848
  P: U(e, "P").value,
3844
3849
  counts: U(e, "counts").value,
3845
3850
  widths: U(e, "widths")?.value ?? null,
@@ -3853,10 +3858,10 @@ var Ri = class {
3853
3858
  sides: this.curveSides ?? 1,
3854
3859
  tolerance: this.curveTolerance
3855
3860
  }, () => this._tick());
3856
- if (!n) return this.warn("curves could not be tessellated"), null;
3857
- n.skipped > 0 && this.warn(`${n.skipped} curve(s) of an unsupported basis or too few points skipped`);
3858
- let r = new D();
3859
- return r.setAttribute("position", new E(n.positions, 3)), r.setIndex(new E(n.indices, 1)), r.computeVertexNormals(), t(r, "normal"), r;
3861
+ if (!t) return this.warn("curves could not be tessellated"), null;
3862
+ t.skipped > 0 && this.warn(`${t.skipped} curve(s) of an unsupported basis or too few points skipped`);
3863
+ let n = new D();
3864
+ return n.setAttribute("position", new E(t.positions, 3)), n.setIndex(new E(t.indices, 1)), n.computeVertexNormals(), s(n, "normal"), n;
3860
3865
  }
3861
3866
  _loopSubdiv(e) {
3862
3867
  let t = U(e, "P")?.value, n = U(e, "indices")?.value;
@@ -4825,7 +4830,7 @@ function ea(e) {
4825
4830
  }, e;
4826
4831
  }
4827
4832
  //#endregion
4828
- //#region src/Processor/PBRT/index.js
4833
+ //#region src/loaders/pbrt/index.js
4829
4834
  var ta = 2e6, na = new TextDecoder();
4830
4835
  function ra(e) {
4831
4836
  let t = e.replace(/\\/g, "/").split("/"), n = [];
@@ -5035,7 +5040,7 @@ function ya(e) {
5035
5040
  return `${t.length > 1 ? t[t.length - 2] : t[0].replace(/\d+\.pbrt$/i, "") || "frames"} · frames ${e[0].number}–${e[e.length - 1].number}`;
5036
5041
  }
5037
5042
  //#endregion
5038
- //#region src/Processor/USD/USDLayer.js
5043
+ //#region src/loaders/usd/USDLayer.js
5039
5044
  var ba = class {
5040
5045
  constructor(e, t) {
5041
5046
  this.asset = e, this.path = t;
@@ -5682,7 +5687,7 @@ function Ga(e, t = "") {
5682
5687
  return r;
5683
5688
  }
5684
5689
  //#endregion
5685
- //#region src/Processor/USD/USDText.js
5690
+ //#region src/loaders/usd/USDText.js
5686
5691
  var Ka = new Set([
5687
5692
  "prepend",
5688
5693
  "append",
@@ -6049,7 +6054,7 @@ function fo(e, t = "") {
6049
6054
  return new uo(e).parse(t);
6050
6055
  }
6051
6056
  //#endregion
6052
- //#region src/Processor/USD/USDStage.js
6057
+ //#region src/loaders/usd/USDStage.js
6053
6058
  var po = {
6054
6059
  local: 0,
6055
6060
  inherit: 1,
@@ -8127,7 +8132,7 @@ async function ds(e) {
8127
8132
  };
8128
8133
  }
8129
8134
  //#endregion
8130
- //#region src/Processor/PBRT/PFM.js
8135
+ //#region src/loaders/pbrt/PFM.js
8131
8136
  function fs(e) {
8132
8137
  let t = 0, n = () => {
8133
8138
  for (; t < e.length && e[t] <= 32;) t++;
@@ -8157,7 +8162,7 @@ function ps(e) {
8157
8162
  return i.minFilter = fe, i.magFilter = fe, i.needsUpdate = !0, i;
8158
8163
  }
8159
8164
  //#endregion
8160
- //#region src/Processor/ArchiveImporter.js
8165
+ //#region src/loaders/archives/ArchiveImporter.js
8161
8166
  var ms = /* @__PURE__ */ e({
8162
8167
  ARCHIVE_ELEMENT_PROMPT_BYTES: () => Ss,
8163
8168
  ArchiveImporter: () => ws,
@@ -8179,7 +8184,7 @@ var ms = /* @__PURE__ */ e({
8179
8184
  let t = await vs(e);
8180
8185
  return t.byteOffset === 0 && t.byteLength === t.buffer.byteLength ? t.buffer : t.slice().buffer;
8181
8186
  }, Ss = 4e9, Cs = 1e9, ws = class {
8182
- static FORMATS = y;
8187
+ static FORMATS = b;
8183
8188
  constructor(e) {
8184
8189
  this.loader = e, this._store = null, this.lastPBRTStats = null, this.lastUSDStats = null;
8185
8190
  }
@@ -8190,7 +8195,7 @@ var ms = /* @__PURE__ */ e({
8190
8195
  return e instanceof Uint8Array ? e.subarray(0, t) : typeof e.slice == "function" && typeof e.arrayBuffer == "function" ? new Uint8Array(await e.slice(0, t).arrayBuffer()) : new Uint8Array((await this.loader.readFileAsArrayBuffer(e)).slice(0, t));
8191
8196
  }
8192
8197
  async inspectArchive(e) {
8193
- let t = Ue(await this._readHead(e)), n = (e) => s({
8198
+ let t = Ue(await this._readHead(e)), n = (e) => y({
8194
8199
  isLoading: !0,
8195
8200
  status: `Scanning archive… ${(e.bytes / 1e9).toFixed(1)} GB`,
8196
8201
  progress: 4
@@ -8224,7 +8229,7 @@ var ms = /* @__PURE__ */ e({
8224
8229
  filter: ct(r),
8225
8230
  part: [...r].sort().join(",")
8226
8231
  } : {},
8227
- onProgress: (e) => s({
8232
+ onProgress: (e) => y({
8228
8233
  isLoading: !0,
8229
8234
  status: `Unpacking archive… ${(e / 1e9).toFixed(1)} GB`,
8230
8235
  progress: 4
@@ -8236,7 +8241,7 @@ var ms = /* @__PURE__ */ e({
8236
8241
  }
8237
8242
  async loadArchiveFromFile(e, t, { pbrtEntry: n = null, element: r = null, byteBudget: i, promptBytes: a, ...o } = {}) {
8238
8243
  try {
8239
- let s = Ue(await this._readHead(e)), c = this.loader.storage ? m(await h(e)) : null, l = {
8244
+ let s = Ue(await this._readHead(e)), c = this.loader.storage ? m(await g(e)) : null, l = {
8240
8245
  element: r,
8241
8246
  promptBytes: a,
8242
8247
  pbrtEntry: n,
@@ -8270,7 +8275,7 @@ var ms = /* @__PURE__ */ e({
8270
8275
  async loadFolder(e, { pbrtEntry: t = null, element: n = null, promptBytes: r, ...i } = {}) {
8271
8276
  let a = (Array.isArray(n) ? n : [n]).filter(Boolean), o = st(e, { filter: a.length ? ct(a) : null }), s = o.listing.reduce((e, t) => e + t.size, 0);
8272
8277
  a.length === 0 && this._requireElementChoice(e.name, o.listing, s, r), console.info(`Folder "${e.name}": ${o.listing.length} files, ${(s / 1e9).toFixed(1)} GB` + (a.length ? `, ${a.length} part${a.length > 1 ? "s" : ""} selected.` : "."));
8273
- let c = this.loader.storage ? m(await _(e)) : null;
8278
+ let c = this.loader.storage ? m(await v(e)) : null;
8274
8279
  return await this._loadSource(o, e.name, {
8275
8280
  element: n,
8276
8281
  pbrtEntry: t,
@@ -8308,38 +8313,38 @@ var ms = /* @__PURE__ */ e({
8308
8313
  }) : await this._loadNonPBRTArchive(c, t);
8309
8314
  return this.loader._sourceKey = this.loader._keyed(s, a), l;
8310
8315
  }
8311
- async _loadStoredGraph(e, t, { imageFromBytes: n, envFromBytes: r }) {
8312
- let i = this.loader.storage?.area(p.SCENES), a = i ? await i.open(e) : null;
8313
- if (!a) return null;
8314
- let o = performance.now(), c = null;
8316
+ async _loadStoredGraph(e, n, { imageFromBytes: r, envFromBytes: i }) {
8317
+ let a = this.loader.storage?.area(h.SCENES), o = a ? await a.open(e) : null;
8318
+ if (!o) return null;
8319
+ let s = performance.now(), c = null;
8315
8320
  try {
8316
- s({
8321
+ y({
8317
8322
  isLoading: !0,
8318
8323
  status: "Opening the stored scene...",
8319
8324
  progress: 6
8320
8325
  });
8321
- let e = await a.json("graph.json"), i = await a.file("data.bin"), c = new aa({}, t), l = await Ht(e, i, { loadTexture: async (e, t) => {
8322
- let i = await c.readPath(e);
8323
- return i ? t === "environment" ? r(i, e) : n(i, e) : null;
8326
+ let e = await o.json("graph.json"), t = await o.file("data.bin"), a = new aa({}, n), c = await Ht(e, t, { loadTexture: async (e, t) => {
8327
+ let n = await a.readPath(e);
8328
+ return n ? t === "environment" ? i(n, e) : r(n, e) : null;
8324
8329
  } });
8325
8330
  return {
8326
- ...l.stats,
8327
- group: l.root,
8328
- environment: l.environment ? { texture: l.environment } : null,
8329
- animations: l.animations,
8331
+ ...c.stats,
8332
+ group: c.root,
8333
+ environment: c.environment ? { texture: c.environment } : null,
8334
+ animations: c.animations,
8330
8335
  report: null,
8331
8336
  parseMs: 0,
8332
- buildMs: performance.now() - o,
8337
+ buildMs: performance.now() - s,
8333
8338
  fromStorage: !0
8334
8339
  };
8335
8340
  } catch (e) {
8336
8341
  return c = e, null;
8337
8342
  } finally {
8338
- a.release(), c && (console.warn(`The stored scene could not be used, parsing the archive instead: ${c.message}`), this.loader._issues?.warn(u.STORAGE_ENTRY_CORRUPT, `stored scene unusable: ${c.message}`, { key: e }), i.remove(e).catch(() => {}));
8343
+ o.release(), c && (console.warn(`The stored scene could not be used, parsing the archive instead: ${c.message}`), this.loader._issues?.warn(t.STORAGE_ENTRY_CORRUPT, `stored scene unusable: ${c.message}`, { key: e }), a.remove(e).catch(() => {}));
8339
8344
  }
8340
8345
  }
8341
8346
  _storeGraph(e, t, n) {
8342
- let r = this.loader.storage?.area(p.SCENES);
8347
+ let r = this.loader.storage?.area(h.SCENES);
8343
8348
  if (!r) return;
8344
8349
  let i;
8345
8350
  try {
@@ -8365,29 +8370,29 @@ var ms = /* @__PURE__ */ e({
8365
8370
  e instanceof Et ? console.info(`Scene not stored for next time: ${e.message}`) : console.warn("Scene not stored for next time:", e);
8366
8371
  return;
8367
8372
  }
8368
- let o, s = new AbortController(), c = {
8373
+ let a, o = new AbortController(), s = {
8369
8374
  key: e,
8370
8375
  encoded: i,
8371
8376
  label: n,
8372
8377
  model: t.group,
8373
8378
  writing: !1,
8374
- signal: s.signal,
8379
+ signal: o.signal,
8375
8380
  parseMs: (t.parseMs ?? 0) + (t.buildMs ?? 0),
8376
8381
  triangles: t.triangleCount ?? null,
8377
8382
  accepted: new Promise((e) => {
8378
- o = e;
8383
+ a = e;
8379
8384
  }),
8380
8385
  decide: (e) => {
8381
- o(e), e || s.abort();
8386
+ a(e), e || o.abort();
8382
8387
  }
8383
8388
  };
8384
- this._store = c, a(c.parseMs, i.byteLength) && this._writeGraph(r, c);
8389
+ this._store = s, l(s.parseMs, i.byteLength) && this._writeGraph(r, s);
8385
8390
  }
8386
8391
  flushPendingGraph(e) {
8387
8392
  let t = this._store;
8388
8393
  if (!t || t.writing) return;
8389
- let n = this.loader.storage?.area(p.SCENES);
8390
- n && a(t.parseMs + e, t.encoded.byteLength) ? this._writeGraph(n, t) : this._store = null;
8394
+ let n = this.loader.storage?.area(h.SCENES);
8395
+ n && l(t.parseMs + e, t.encoded.byteLength) ? this._writeGraph(n, t) : this._store = null;
8391
8396
  }
8392
8397
  commitPendingGraph(e) {
8393
8398
  let t = this._store;
@@ -8413,65 +8418,65 @@ var ms = /* @__PURE__ */ e({
8413
8418
  })();
8414
8419
  }
8415
8420
  async _openSeekableArchive(e, t, n, r, { index: i = null, zip: a = !1 } = {}) {
8416
- let o = Array.isArray(n) ? n.filter(Boolean) : n ? [n] : [], c = o.length ? ct(o) : null, l;
8417
- if (a) l = await S(e, { filter: c });
8421
+ let o = Array.isArray(n) ? n.filter(Boolean) : n ? [n] : [], s = o.length ? ct(o) : null, c;
8422
+ if (a) c = await S(e, { filter: s });
8418
8423
  else {
8419
8424
  let t = i ?? await mt(e, this.loader.storage);
8420
- l = await ot(e, {
8425
+ c = await ot(e, {
8421
8426
  index: t,
8422
8427
  headersOnly: !0,
8423
- filter: c,
8424
- onProgress: (e) => s({
8428
+ filter: s,
8429
+ onProgress: (e) => y({
8425
8430
  isLoading: !0,
8426
8431
  status: `Indexing archive… ${(e.bytes / 1e9).toFixed(1)} GB`,
8427
8432
  progress: 4
8428
8433
  })
8429
- }), t || ht(e, this.loader.storage, l.index).catch(() => {});
8434
+ }), t || ht(e, this.loader.storage, c.index).catch(() => {});
8430
8435
  }
8431
- let u = l.listing.reduce((e, t) => e + t.size, 0);
8432
- return o.length === 0 && this._requireElementChoice(t, l.listing, u, r), console.info(`Archive "${t}": indexed ${l.indexed} entries, ${(u / 1e9).toFixed(1)} GB, none resident` + (o.length ? `, ${o.length} part${o.length > 1 ? "s" : ""} selected.` : ".")), l;
8436
+ let l = c.listing.reduce((e, t) => e + t.size, 0);
8437
+ return o.length === 0 && this._requireElementChoice(t, c.listing, l, r), console.info(`Archive "${t}": indexed ${c.indexed} entries, ${(l / 1e9).toFixed(1)} GB, none resident` + (o.length ? `, ${o.length} part${o.length > 1 ? "s" : ""} selected.` : ".")), c;
8433
8438
  }
8434
- _requireElementChoice(e, t, n, r = Ss) {
8435
- if (n < r) return;
8436
- let { root: i, elements: a } = lt(t);
8437
- if (a.length < 2) return;
8438
- let o = /* @__PURE__ */ Error(`"${e}" holds ${(n / 1e9).toFixed(1)} GB across ${a.length} parts. Choose which to load — loading all of them at once may exhaust memory.`);
8439
- throw o.code = "ARCHIVE_NEEDS_ELEMENT", o.root = i, o.elements = a, o.totalBytes = n, this.loader._issues?.record(u.ASSET_ARCHIVE_TOO_LARGE, `archive holds ${(n / 1e9).toFixed(1)} GB across ${a.length} parts; choose which to load`, {
8440
- root: i,
8441
- elements: a.map((e) => e.prefix),
8442
- totalBytes: n
8443
- }, d.WARNING), o;
8444
- }
8445
- async _readStreamedArchive(e, t, n, r, i) {
8446
- let a = Array.isArray(r) ? r.filter(Boolean) : r ? [r] : [], { entries: o, listing: c, retainedBytes: l, truncated: f } = await nt(e, {
8447
- filter: a.length ? ct(a) : null,
8448
- ...i === void 0 ? {} : { byteBudget: i },
8449
- onProgress: (e) => s({
8439
+ _requireElementChoice(e, r, i, a = Ss) {
8440
+ if (i < a) return;
8441
+ let { root: o, elements: s } = lt(r);
8442
+ if (s.length < 2) return;
8443
+ let c = /* @__PURE__ */ Error(`"${e}" holds ${(i / 1e9).toFixed(1)} GB across ${s.length} parts. Choose which to load — loading all of them at once may exhaust memory.`);
8444
+ throw c.code = "ARCHIVE_NEEDS_ELEMENT", c.root = o, c.elements = s, c.totalBytes = i, this.loader._issues?.record(t.ASSET_ARCHIVE_TOO_LARGE, `archive holds ${(i / 1e9).toFixed(1)} GB across ${s.length} parts; choose which to load`, {
8445
+ root: o,
8446
+ elements: s.map((e) => e.prefix),
8447
+ totalBytes: i
8448
+ }, n.WARNING), c;
8449
+ }
8450
+ async _readStreamedArchive(e, r, i, a, o) {
8451
+ let s = Array.isArray(a) ? a.filter(Boolean) : a ? [a] : [], { entries: c, listing: l, retainedBytes: u, truncated: d } = await nt(e, {
8452
+ filter: s.length ? ct(s) : null,
8453
+ ...o === void 0 ? {} : { byteBudget: o },
8454
+ onProgress: (e) => y({
8450
8455
  isLoading: !0,
8451
8456
  status: `Reading archive… ${(e.bytes / 1e9).toFixed(1)} GB`,
8452
8457
  progress: 4
8453
8458
  })
8454
8459
  });
8455
- if (f && a.length === 0) {
8456
- let { root: e, elements: n } = lt(c), r = c.reduce((e, t) => e + t.size, 0), i = /* @__PURE__ */ Error(`"${t}" unpacks to ${(r / 1e9).toFixed(1)} GB, past the load budget. Load one of its ${n.length} parts instead.`);
8457
- throw i.code = "ARCHIVE_NEEDS_ELEMENT", i.root = e, i.elements = n, i.totalBytes = r, this.loader._issues?.record(u.ASSET_ARCHIVE_TOO_LARGE, `archive unpacks to ${(r / 1e9).toFixed(1)} GB; choose one of ${n.length} parts`, {
8460
+ if (d && s.length === 0) {
8461
+ let { root: e, elements: i } = lt(l), a = l.reduce((e, t) => e + t.size, 0), o = /* @__PURE__ */ Error(`"${r}" unpacks to ${(a / 1e9).toFixed(1)} GB, past the load budget. Load one of its ${i.length} parts instead.`);
8462
+ throw o.code = "ARCHIVE_NEEDS_ELEMENT", o.root = e, o.elements = i, o.totalBytes = a, this.loader._issues?.record(t.ASSET_ARCHIVE_TOO_LARGE, `archive unpacks to ${(a / 1e9).toFixed(1)} GB; choose one of ${i.length} parts`, {
8458
8463
  root: e,
8459
- elements: n.map((e) => e.prefix),
8460
- totalBytes: r
8461
- }, d.WARNING), i;
8462
- }
8463
- if (f) {
8464
- let e = ct(a), t = c.filter((t) => e(t.path, t.size) && !o[t.path]).length;
8465
- this.loader._issues?.record(u.ASSET_ARCHIVE_TOO_LARGE, `${t} files of the chosen parts were left out: they did not fit the ${((i ?? 15e8) / 1e9).toFixed(1)} GB in-memory read budget`, {
8466
- elements: a,
8467
- missing: t,
8468
- retainedBytes: l
8469
- }, d.WARNING);
8470
- }
8471
- return a.length && console.info(`Archive "${t}": loaded ${a.map((e) => `"${e}"`).join(", ")} — ${Object.keys(o).length} of ${c.length} files, ${(l / 1048576).toFixed(1)} MB.`), o;
8472
- }
8473
- async loadPBRTFromZip(e, t, n = null, r = {}, a = null) {
8474
- if (s({
8464
+ elements: i.map((e) => e.prefix),
8465
+ totalBytes: a
8466
+ }, n.WARNING), o;
8467
+ }
8468
+ if (d) {
8469
+ let e = ct(s), r = l.filter((t) => e(t.path, t.size) && !c[t.path]).length;
8470
+ this.loader._issues?.record(t.ASSET_ARCHIVE_TOO_LARGE, `${r} files of the chosen parts were left out: they did not fit the ${((o ?? 15e8) / 1e9).toFixed(1)} GB in-memory read budget`, {
8471
+ elements: s,
8472
+ missing: r,
8473
+ retainedBytes: u
8474
+ }, n.WARNING);
8475
+ }
8476
+ return s.length && console.info(`Archive "${r}": loaded ${s.map((e) => `"${e}"`).join(", ")} — ${Object.keys(c).length} of ${l.length} files, ${(u / 1048576).toFixed(1)} MB.`), c;
8477
+ }
8478
+ async loadPBRTFromZip(e, r, i = null, a = {}, o = null) {
8479
+ if (y({
8475
8480
  isLoading: !0,
8476
8481
  status: "Parsing PBRT scene...",
8477
8482
  progress: 5
@@ -8479,34 +8484,34 @@ var ms = /* @__PURE__ */ e({
8479
8484
  let { PLYLoader: e } = await import("three/examples/jsm/loaders/PLYLoader.js");
8480
8485
  this.loader.loaderCache.ply = new e();
8481
8486
  }
8482
- let c = (e) => this.loader.loaderCache.ply.parse(e), l = (e, t) => this._archiveImage(e, t), f = (e, t) => this._archiveEnvironment(e, t), p = performance.now(), m = {
8483
- animation: r.animation,
8484
- maxTriangles: r.maxTriangles,
8485
- maxPlacements: r.maxPlacements,
8486
- mergeShapesAbove: r.mergeShapesAbove,
8487
- curveSteps: r.curveSteps,
8488
- curveSides: r.curveSides,
8489
- curveTolerance: r.curveTolerance,
8490
- instanceIncludes: r.instanceIncludes
8491
- }, h = a?.archiveId ? this.loader._keyed(`pbrt:2.14:${o}`, `${a.archiveId}|${n ?? ""}|${[...a.elements ?? []].sort().join(",")}|${JSON.stringify(m)}`) : null, g = h ? await this._loadStoredGraph(h, a, {
8492
- imageFromBytes: l,
8493
- envFromBytes: f
8494
- }) : null, _ = g ?? await va({
8487
+ let s = (e) => this.loader.loaderCache.ply.parse(e), c = (e, t) => this._archiveImage(e, t), l = (e, t) => this._archiveEnvironment(e, t), f = performance.now(), p = {
8488
+ animation: a.animation,
8489
+ maxTriangles: a.maxTriangles,
8490
+ maxPlacements: a.maxPlacements,
8491
+ mergeShapesAbove: a.mergeShapesAbove,
8492
+ curveSteps: a.curveSteps,
8493
+ curveSides: a.curveSides,
8494
+ curveTolerance: a.curveTolerance,
8495
+ instanceIncludes: a.instanceIncludes
8496
+ }, m = o?.archiveId ? this.loader._keyed(`pbrt:2.14:${d}`, `${o.archiveId}|${i ?? ""}|${[...o.elements ?? []].sort().join(",")}|${JSON.stringify(p)}`) : null, h = m ? await this._loadStoredGraph(m, o, {
8497
+ imageFromBytes: c,
8498
+ envFromBytes: l
8499
+ }) : null, g = h ?? await va({
8495
8500
  vfs: e,
8496
- source: a,
8497
- entryPath: n,
8498
- plyParser: c,
8499
- imageFromBytes: l,
8500
- envFromBytes: f,
8501
- ...m,
8502
- pause: this._buildPause(i())
8501
+ source: o,
8502
+ entryPath: i,
8503
+ plyParser: s,
8504
+ imageFromBytes: c,
8505
+ envFromBytes: l,
8506
+ ...p,
8507
+ pause: this._buildPause(u())
8503
8508
  });
8504
8509
  this.loader._throwDeferred();
8505
- let { group: v, environment: y, animations: b, report: x, warnings: S, meshCount: C, entryPath: w, candidates: T, frames: E, parseMs: D, buildMs: ee, triangleCount: te, placementCount: O, mergedShapes: ne, skippedForBudget: re, droppedNoTemplate: k, parameters: ie } = _;
8506
- g && console.info(`PBRT scene "${w}" opened from storage in ${(ee / 1e3).toFixed(1)} s, skipping the parse`), this.lastPBRTStats = {
8510
+ let { group: _, environment: v, animations: b, report: x, warnings: S, meshCount: C, entryPath: w, candidates: T, frames: E, parseMs: D, buildMs: ee, triangleCount: te, placementCount: O, mergedShapes: ne, skippedForBudget: re, droppedNoTemplate: k, parameters: ie } = g;
8511
+ h && console.info(`PBRT scene "${w}" opened from storage in ${(ee / 1e3).toFixed(1)} s, skipping the parse`), this.lastPBRTStats = {
8507
8512
  parseMs: D,
8508
8513
  buildMs: ee,
8509
- loaderMs: performance.now() - p,
8514
+ loaderMs: performance.now() - f,
8510
8515
  triangleCount: te,
8511
8516
  placementCount: O,
8512
8517
  mergedShapes: ne,
@@ -8516,37 +8521,37 @@ var ms = /* @__PURE__ */ e({
8516
8521
  frames: E?.length ?? 1
8517
8522
  };
8518
8523
  let A = new Set(E ?? [w]), ae = T.filter((e) => !A.has(e));
8519
- if (ae.length > 0 && (console.warn(`PBRT archive holds ${T.length} scenes; loaded "${w}". Others: ${ae.join(", ")}`), this.loader._issues?.record(u.ASSET_AMBIGUOUS_ENTRY, `archive holds ${T.length} pbrt scenes; loaded "${w}"`, {
8524
+ if (ae.length > 0 && (console.warn(`PBRT archive holds ${T.length} scenes; loaded "${w}". Others: ${ae.join(", ")}`), this.loader._issues?.record(t.ASSET_AMBIGUOUS_ENTRY, `archive holds ${T.length} pbrt scenes; loaded "${w}"`, {
8520
8525
  loaded: w,
8521
8526
  alternatives: ae
8522
- }, d.WARNING)), ie && this._reportParameters(ie, w), x && x.length && typeof console.table == "function") {
8527
+ }, n.WARNING)), ie && this._reportParameters(ie, w), x && x.length && typeof console.table == "function") {
8523
8528
  let e = x.length < C ? ` (first ${x.length} of ${C})` : "";
8524
8529
  console.groupCollapsed(`PBRT loader: ${C} mesh(es) from "${w}"${e}`), console.table(x), console.groupEnd();
8525
8530
  }
8526
- return S && S.length && (console.warn(`PBRT loader: ${S.length} warning(s) parsing "${w}"`), S.forEach((e) => console.warn(" •", e))), y?.texture && (y.texture.generateMipmaps = !0, this.loader.applyEnvironmentToScene(y.texture)), v.name = w || t, this.loader.releaseTargetModel(), this.loader._sourceKey = h, h && !g && this._storeGraph(h, _, t), this.loader.targetModel = v, this.loader.animations = b ?? [], this.loader.sceneMetadata = {
8527
- environment: y?.texture ? {
8531
+ return S && S.length && (console.warn(`PBRT loader: ${S.length} warning(s) parsing "${w}"`), S.forEach((e) => console.warn(" •", e))), v?.texture && (v.texture.generateMipmaps = !0, this.loader.applyEnvironmentToScene(v.texture)), _.name = w || r, this.loader.releaseTargetModel(), this.loader._sourceKey = m, m && !h && this._storeGraph(m, g, r), this.loader.targetModel = _, this.loader.animations = b ?? [], this.loader.sceneMetadata = {
8532
+ environment: v?.texture ? {
8528
8533
  rotation: 0,
8529
8534
  intensity: 1
8530
8535
  } : { enabled: !1 },
8531
- ..._.render ? { render: { ..._.render } } : {}
8532
- }, s({
8536
+ ...g.render ? { render: { ...g.render } } : {}
8537
+ }, y({
8533
8538
  isLoading: !0,
8534
8539
  status: "Processing PBRT geometry...",
8535
8540
  progress: 10
8536
8541
  }), await this.loader.onModelLoad(this.loader.targetModel), this.loader.dispatchEvent({
8537
8542
  type: "load",
8538
- model: v,
8539
- filename: `${w} (from ${t})`
8540
- }), v;
8541
- }
8542
- _reportParameters({ unused: e, approximated: t }, n) {
8543
- let r = Object.keys(e).length, i = Object.keys(t).length;
8544
- if (r + i === 0) return;
8545
- let a = `${r} pbrt parameter(s) ignored and ${i} approximated in "${n}"`, o = [...Object.entries(e).map(([e, t]) => ` ignored ${e} ×${t}`), ...Object.entries(t).map(([e, t]) => ` approximated ${e} ×${t}`)];
8546
- console.warn(`PBRT loader: ${a} (× directives that set it)\n${o.join("\n")}`), this.loader._issues?.warn(u.ASSET_PARAMETERS_IGNORED, a, {
8547
- entry: n,
8543
+ model: _,
8544
+ filename: `${w} (from ${r})`
8545
+ }), _;
8546
+ }
8547
+ _reportParameters({ unused: e, approximated: n }, r) {
8548
+ let i = Object.keys(e).length, a = Object.keys(n).length;
8549
+ if (i + a === 0) return;
8550
+ let o = `${i} pbrt parameter(s) ignored and ${a} approximated in "${r}"`, s = [...Object.entries(e).map(([e, t]) => ` ignored ${e} ×${t}`), ...Object.entries(n).map(([e, t]) => ` approximated ${e} ×${t}`)];
8551
+ console.warn(`PBRT loader: ${o} (× directives that set it)\n${s.join("\n")}`), this.loader._issues?.warn(t.ASSET_PARAMETERS_IGNORED, o, {
8552
+ entry: r,
8548
8553
  unused: e,
8549
- approximated: t
8554
+ approximated: n
8550
8555
  });
8551
8556
  }
8552
8557
  async _archiveImage(e, t) {
@@ -8554,7 +8559,7 @@ var ms = /* @__PURE__ */ e({
8554
8559
  try {
8555
8560
  n = await this._pbrtTextureFromBytes(e, t);
8556
8561
  } catch (e) {
8557
- if (e instanceof f) throw e;
8562
+ if (e instanceof r) throw e;
8558
8563
  return this.loader._reportImageFailure(t, e), null;
8559
8564
  }
8560
8565
  return n && (n.userData[_t] = t), n;
@@ -8566,103 +8571,103 @@ var ms = /* @__PURE__ */ e({
8566
8571
  loader: n === "exr" ? this._exrLoader() : null,
8567
8572
  quiet: !0
8568
8573
  }) : ps(e);
8569
- return a.mapping = ae, c(a, `bytes:${await g(r)}`), a.userData[_t] = t, a.userData[vt] = "environment", a;
8574
+ return a.mapping = ae, p(a, `bytes:${await _(r)}`), a.userData[_t] = t, a.userData[vt] = "environment", a;
8570
8575
  } finally {
8571
8576
  i && URL.revokeObjectURL(i);
8572
8577
  }
8573
8578
  }
8574
- async loadUSDScene(e, t, n = {}) {
8575
- s({
8579
+ async loadUSDScene(e, r, i = {}) {
8580
+ y({
8576
8581
  isLoading: !0,
8577
8582
  status: "Reading USD scene...",
8578
8583
  progress: 5
8579
8584
  });
8580
- let r = Object.keys(e), a = new vo(r, async (t) => e[t] ? vs(e[t]) : null, { omitted: (n.listing ?? []).filter((t) => !(t.path in e)).map((e) => e.path) }), o = ls(r);
8581
- if (o.length === 0) throw Error(`No USD layer found in ${t}`);
8582
- let c = o[0];
8583
- o.length > 1 && (console.warn(`${t} holds ${o.length} top-level USD layers; loaded "${c}". Others: ${o.slice(1).join(", ")}`), this.loader._issues?.record(u.ASSET_AMBIGUOUS_ENTRY, `${t} holds ${o.length} top-level USD layers; loaded "${c}"`, {
8585
+ let a = Object.keys(e), o = new vo(a, async (t) => e[t] ? vs(e[t]) : null, { omitted: (i.listing ?? []).filter((t) => !(t.path in e)).map((e) => e.path) }), s = ls(a);
8586
+ if (s.length === 0) throw Error(`No USD layer found in ${r}`);
8587
+ let c = s[0];
8588
+ s.length > 1 && (console.warn(`${r} holds ${s.length} top-level USD layers; loaded "${c}". Others: ${s.slice(1).join(", ")}`), this.loader._issues?.record(t.ASSET_AMBIGUOUS_ENTRY, `${r} holds ${s.length} top-level USD layers; loaded "${c}"`, {
8584
8589
  loaded: c,
8585
- alternatives: o.slice(1)
8586
- }, d.WARNING)), (Array.isArray(n.element) ? n.element : [n.element]).filter(Boolean).length === 0 && await this._requireUSDPartChoice(t, a, c, n.listing ?? r.map((t) => ({
8590
+ alternatives: s.slice(1)
8591
+ }, n.WARNING)), (Array.isArray(i.element) ? i.element : [i.element]).filter(Boolean).length === 0 && await this._requireUSDPartChoice(r, o, c, i.listing ?? a.map((t) => ({
8587
8592
  path: t,
8588
8593
  size: e[t]?.size ?? e[t]?.byteLength ?? 0
8589
- })), n.promptBytes);
8590
- let l = performance.now(), f = i(), p = await ds({
8591
- files: a,
8594
+ })), i.promptBytes);
8595
+ let l = performance.now(), d = u(), f = await ds({
8596
+ files: o,
8592
8597
  entryPath: c,
8593
8598
  pauseRead: (e, t) => {
8594
- let n = f();
8595
- return n && s({
8599
+ let n = d();
8600
+ return n && y({
8596
8601
  status: `${t ? "Counting" : "Reading"} USD scene... ${e.toLocaleString()} prims`,
8597
8602
  progress: t ? 5 : 6
8598
8603
  }), n;
8599
8604
  },
8600
- pauseBuild: this._buildPause(f),
8605
+ pauseBuild: this._buildPause(d),
8601
8606
  resolveImage: async (e) => {
8602
- let t = await a.read(e);
8607
+ let t = await o.read(e);
8603
8608
  return t ? this._archiveImage(t, e) : null;
8604
8609
  },
8605
8610
  resolveEnvironment: async (e) => {
8606
- let t = await a.read(e);
8611
+ let t = await o.read(e);
8607
8612
  return t ? this._archiveEnvironment(t, e) : null;
8608
8613
  },
8609
- maxTriangles: n.maxTriangles,
8610
- maxPlacements: n.maxPlacements,
8611
- mergeShapesAbove: n.mergeShapesAbove,
8612
- curveSteps: n.curveSteps,
8613
- curveSides: n.curveSides,
8614
- curveTolerance: n.curveTolerance
8614
+ maxTriangles: i.maxTriangles,
8615
+ maxPlacements: i.maxPlacements,
8616
+ mergeShapesAbove: i.mergeShapesAbove,
8617
+ curveSteps: i.curveSteps,
8618
+ curveSides: i.curveSides,
8619
+ curveTolerance: i.curveTolerance
8615
8620
  });
8616
8621
  this.loader._throwDeferred();
8617
- let { group: m, environment: h, warnings: g, triangleCount: _, placementCount: v, skippedForBudget: y, meshCount: b, parseMs: x, buildMs: S, fitNote: C } = p;
8622
+ let { group: p, environment: m, warnings: h, triangleCount: g, placementCount: _, skippedForBudget: v, meshCount: b, parseMs: x, buildMs: S, fitNote: C } = f;
8618
8623
  return this.lastUSDStats = {
8619
8624
  parseMs: x,
8620
8625
  buildMs: S,
8621
8626
  loaderMs: performance.now() - l,
8622
- triangleCount: _,
8623
- placementCount: v,
8624
- skippedForBudget: y,
8627
+ triangleCount: g,
8628
+ placementCount: _,
8629
+ skippedForBudget: v,
8625
8630
  meshCount: b,
8626
8631
  fitNote: C
8627
- }, (C || y > 0) && this.loader._issues?.record(u.SCENE_MEMORY_BUDGET, C ?? `${y.toLocaleString()} placements past the scene budgets left out`, {
8628
- triangleCount: _,
8629
- placementCount: v,
8630
- skippedForBudget: y
8631
- }, d.WARNING), g.length && (console.warn(`USD loader: ${g.length} warning(s) loading "${c}"`), g.forEach((e) => console.warn(" •", e))), h?.texture && (h.texture.generateMipmaps = !0, this.loader.applyEnvironmentToScene(h.texture)), m.name = c.split("/").pop(), this.loader.releaseTargetModel(), this.loader.targetModel = m, this.loader.animations = [], this.loader.sceneMetadata = h?.texture ? { environment: {
8632
- rotation: h.rotation,
8633
- intensity: h.intensity
8634
- } } : null, s({
8632
+ }, (C || v > 0) && this.loader._issues?.record(t.SCENE_MEMORY_BUDGET, C ?? `${v.toLocaleString()} placements past the scene budgets left out`, {
8633
+ triangleCount: g,
8634
+ placementCount: _,
8635
+ skippedForBudget: v
8636
+ }, n.WARNING), h.length && (console.warn(`USD loader: ${h.length} warning(s) loading "${c}"`), h.forEach((e) => console.warn(" •", e))), m?.texture && (m.texture.generateMipmaps = !0, this.loader.applyEnvironmentToScene(m.texture)), p.name = c.split("/").pop(), this.loader.releaseTargetModel(), this.loader.targetModel = p, this.loader.animations = [], this.loader.sceneMetadata = m?.texture ? { environment: {
8637
+ rotation: m.rotation,
8638
+ intensity: m.intensity
8639
+ } } : null, y({
8635
8640
  isLoading: !0,
8636
8641
  status: "Processing USD geometry...",
8637
8642
  progress: 10
8638
- }), await this.loader.onModelLoad(m), this.loader.dispatchEvent({
8643
+ }), await this.loader.onModelLoad(p), this.loader.dispatchEvent({
8639
8644
  type: "load",
8640
- model: m,
8641
- filename: `${c} (from ${t})`
8642
- }), m;
8645
+ model: p,
8646
+ filename: `${c} (from ${r})`
8647
+ }), p;
8643
8648
  }
8644
8649
  _buildPause(e) {
8645
8650
  return (t, n) => {
8646
8651
  let r = e();
8647
- return r && s({
8652
+ return r && y({
8648
8653
  status: `Building scene... ${t.toLocaleString()} of ${n.toLocaleString()} shapes`,
8649
8654
  progress: 8
8650
8655
  }), r;
8651
8656
  };
8652
8657
  }
8653
- async _requireUSDPartChoice(e, t, n, r, i = Cs) {
8654
- let a = r.reduce((e, t) => e + (cs.test(t.path) ? t.size : 0), 0);
8655
- if (a < i) return;
8656
- let o = new Eo(t);
8657
- await o.open(n);
8658
- let s = await us(o, r);
8659
- if (s.length < 2) return;
8660
- let c = r.reduce((e, t) => e + t.size, 0), l = /* @__PURE__ */ Error(`"${e}" holds ${(a / 1e9).toFixed(1)} GB of USD across ${s.length} parts. Choose which to load — loading all of them at once may exhaust memory.`);
8661
- throw l.code = "ARCHIVE_NEEDS_ELEMENT", l.root = n.includes("/") ? n.slice(0, n.lastIndexOf("/")) : "", l.elements = s, l.totalBytes = c, this.loader._issues?.record(u.ASSET_ARCHIVE_TOO_LARGE, `USD scene holds ${(a / 1e9).toFixed(1)} GB of layers across ${s.length} parts; choose which to load`, {
8662
- root: l.root,
8663
- elements: s.map((e) => e.prefix),
8664
- totalBytes: c
8665
- }, d.WARNING), l;
8658
+ async _requireUSDPartChoice(e, r, i, a, o = Cs) {
8659
+ let s = a.reduce((e, t) => e + (cs.test(t.path) ? t.size : 0), 0);
8660
+ if (s < o) return;
8661
+ let c = new Eo(r);
8662
+ await c.open(i);
8663
+ let l = await us(c, a);
8664
+ if (l.length < 2) return;
8665
+ let u = a.reduce((e, t) => e + t.size, 0), d = /* @__PURE__ */ Error(`"${e}" holds ${(s / 1e9).toFixed(1)} GB of USD across ${l.length} parts. Choose which to load — loading all of them at once may exhaust memory.`);
8666
+ throw d.code = "ARCHIVE_NEEDS_ELEMENT", d.root = i.includes("/") ? i.slice(0, i.lastIndexOf("/")) : "", d.elements = l, d.totalBytes = u, this.loader._issues?.record(t.ASSET_ARCHIVE_TOO_LARGE, `USD scene holds ${(s / 1e9).toFixed(1)} GB of layers across ${l.length} parts; choose which to load`, {
8667
+ root: d.root,
8668
+ elements: l.map((e) => e.prefix),
8669
+ totalBytes: u
8670
+ }, n.WARNING), d;
8666
8671
  }
8667
8672
  _exrLoader() {
8668
8673
  return this.loader.loaderCache.exr ??= new Ie().setDataType(se);
@@ -8680,7 +8685,7 @@ var ms = /* @__PURE__ */ e({
8680
8685
  }
8681
8686
  r = await this._loadViaObjectURL(this.loader.loaderCache.tga, e), r.colorSpace = P;
8682
8687
  } else {
8683
- if (l().decodeImage) r = await v(e, t);
8688
+ if (i().decodeImage) r = await c(e, t);
8684
8689
  else if (typeof createImageBitmap == "function") r = new je(await createImageBitmap(new Blob([e])));
8685
8690
  else throw Error("no image decoder in this runtime: configurePlatform( nodePlatform( { decodeImage } ) ) — see \"Running in Node\"");
8686
8691
  r.colorSpace = P;
@@ -8743,19 +8748,19 @@ var ms = /* @__PURE__ */ e({
8743
8748
  usd: !o && cs.test(s)
8744
8749
  };
8745
8750
  }
8746
- async findAndLoadModelFromZip(e, t = "the ZIP archive") {
8747
- let n = this._mainModelPath(Object.keys(e));
8748
- if (!n) throw Error(`No supported model files found in ${t}`);
8749
- if (n.usd) return await this.loadUSDScene(e, t);
8750
- let { path: r, models: i } = n, a = i.filter((e) => e !== r && !cs.test(e));
8751
- return a.length > 0 && (console.warn(`${t} holds ${a.length + 1} models; loaded "${r}". Others: ${a.join(", ")}`), this.loader._issues?.record(u.ASSET_AMBIGUOUS_ENTRY, `${t} holds ${a.length + 1} models; loaded "${r}"`, {
8752
- loaded: r,
8753
- alternatives: a.slice(0, 50)
8754
- }, d.WARNING)), console.log(`Loading model file from ${t}: ${r}`), await this.loadModelFromZipEntry(e[r], r, r.split(".").pop().toLowerCase(), e, t);
8751
+ async findAndLoadModelFromZip(e, r = "the ZIP archive") {
8752
+ let i = this._mainModelPath(Object.keys(e));
8753
+ if (!i) throw Error(`No supported model files found in ${r}`);
8754
+ if (i.usd) return await this.loadUSDScene(e, r);
8755
+ let { path: a, models: o } = i, s = o.filter((e) => e !== a && !cs.test(e));
8756
+ return s.length > 0 && (console.warn(`${r} holds ${s.length + 1} models; loaded "${a}". Others: ${s.join(", ")}`), this.loader._issues?.record(t.ASSET_AMBIGUOUS_ENTRY, `${r} holds ${s.length + 1} models; loaded "${a}"`, {
8757
+ loaded: a,
8758
+ alternatives: s.slice(0, 50)
8759
+ }, n.WARNING)), console.log(`Loading model file from ${r}: ${a}`), await this.loadModelFromZipEntry(e[a], a, a.split(".").pop().toLowerCase(), e, r);
8755
8760
  }
8756
8761
  async loadModelFromZipEntry(e, t, n, r, i = "ZIP") {
8757
8762
  try {
8758
- s({
8763
+ y({
8759
8764
  isLoading: !0,
8760
8765
  status: `Processing ${n.toUpperCase()} from ${i}...`,
8761
8766
  progress: 5
@@ -8784,19 +8789,19 @@ var ms = /* @__PURE__ */ e({
8784
8789
  }), e;
8785
8790
  }
8786
8791
  }
8787
- async handleGltfFromZip(e, t, r, i) {
8792
+ async handleGltfFromZip(e, t, n, r) {
8788
8793
  if (e === "gltf") {
8789
- let e = await ys(t), a = new pe(), o = r.split("/").slice(0, -1).join("/");
8790
- a.setURLModifier((e) => this.resolveZipResource(e, o, i));
8794
+ let e = await ys(t), i = new pe(), a = n.split("/").slice(0, -1).join("/");
8795
+ i.setURLModifier((e) => this.resolveZipResource(e, a, r));
8791
8796
  let s = await this.loader.createGLTFLoader();
8792
- s.manager = a;
8797
+ s.manager = i;
8793
8798
  try {
8794
- let t = await n(() => new Promise((t, n) => s.parse(e, "", t, n)));
8795
- return this.loader._throwDeferred(), this.loader.releaseTargetModel(), this.loader.targetModel = t.scene, this.loader.sceneMetadata = b(t), await this.loader.onModelLoad(this.loader.targetModel), t;
8799
+ let t = await o(() => new Promise((t, n) => s.parse(e, "", t, n)));
8800
+ return this.loader._throwDeferred(), this.loader.releaseTargetModel(), this.loader.targetModel = t.scene, this.loader.sceneMetadata = f(t), await this.loader.onModelLoad(this.loader.targetModel), t;
8796
8801
  } finally {
8797
8802
  this.loader._disposeGLTFLoader(s);
8798
8803
  }
8799
- } else return await this.loader.loadGLBFromArrayBuffer(await xs(t), r);
8804
+ } else return await this.loader.loadGLBFromArrayBuffer(await xs(t), n);
8800
8805
  }
8801
8806
  async handleObjFromZip(e, t, n) {
8802
8807
  let r = await ys(e), i = r.match(/mtllib\s+([^\s]+)/), a = null;
@@ -8807,17 +8812,17 @@ var ms = /* @__PURE__ */ e({
8807
8812
  return c.name = t, this.loader.releaseTargetModel(), this.loader.targetModel = c, await this.loader.onModelLoad(this.loader.targetModel), c;
8808
8813
  }
8809
8814
  async preloadMtlTextures(e) {
8810
- let t = [], n = e.loadTexture.bind(e);
8811
- if (e.loadTexture = (e, r, i, a, o) => {
8815
+ let n = [], r = e.loadTexture.bind(e);
8816
+ if (e.loadTexture = (e, t, i, a, o) => {
8812
8817
  let s;
8813
- return t.push(new Promise((e) => s = e)), n(e, r, (e) => {
8818
+ return n.push(new Promise((e) => s = e)), r(e, t, (e) => {
8814
8819
  s(), i?.(e);
8815
8820
  }, a, (e) => {
8816
8821
  s(), o?.(e);
8817
8822
  });
8818
- }, e.preload(), t.length === 0) return e;
8819
- let r, i = await Promise.race([Promise.all(t).then(() => !0), new Promise((e) => r = setTimeout(() => e(!1), hs))]);
8820
- return clearTimeout(r), i || this.loader._issues?.record(u.TEXTURE_BUILD_FAILED, `MTL textures did not decode within ${hs}ms; affected materials render untextured`, { pending: t.length }), e;
8823
+ }, e.preload(), n.length === 0) return e;
8824
+ let i, a = await Promise.race([Promise.all(n).then(() => !0), new Promise((e) => i = setTimeout(() => e(!1), hs))]);
8825
+ return clearTimeout(i), a || this.loader._issues?.record(t.TEXTURE_BUILD_FAILED, `MTL textures did not decode within ${hs}ms; affected materials render untextured`, { pending: n.length }), e;
8821
8826
  }
8822
8827
  async loadMtlFromZip(e, t, n) {
8823
8828
  let r = t.split("/").slice(0, -1).join("/"), i = [