rayzee 11.15.0 → 11.16.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 (176) hide show
  1. package/README.md +8 -1970
  2. package/dist/{SceneMetadata-BUfzHMSj.js → ArchiveFormats-CWi6IbSp.js} +147 -117
  3. package/dist/{ArchiveImporter-DuWqpbXf.js → ArchiveImporter-CEv5EDgg.js} +96 -98
  4. package/dist/BidirectionalIntegrator-KWRQrMXX.js +960 -0
  5. package/dist/CameraRay-CdVb2LnS.js +181 -0
  6. package/dist/{ColorManagement-CKN2pTRS.js → ColorManagement-B6SgefNi.js} +107 -107
  7. package/dist/CompactKernel-C6TCBB6i.js +19759 -0
  8. package/dist/DepthPass-BMnBuepB.js +69 -0
  9. package/dist/{EngineIssues-t5p7TEjb.js → EngineIssues-DHAU18xh.js} +2 -1
  10. package/dist/{identity-x_UfobDa.js → FileIdentity-BXmPNvJP.js} +27 -23
  11. package/dist/{LocalExposure-Cw1g8rdU.js → LocalExposure-CMO6fd8G.js} +77 -77
  12. package/dist/{NeuralRetouch-CLtoW6Vt.js → NeuralRetouch-CYRGwe9E.js} +2 -2
  13. package/dist/{NeuralSuperRes-PlLjWpMF.js → NeuralSuperRes-p0A3_wjO.js} +2 -2
  14. package/dist/{openStorage-CxLMw2_a.js → OpenStorage-CjlOYQyW.js} +106 -108
  15. package/dist/{PackedRayBuffer-DwhV931f.js → PackedRayBuffer-BhqeNEaL.js} +53 -68
  16. package/dist/PhysicalSky-qHATDBbB.js +1220 -0
  17. package/dist/{PictureView-DpHE_jDr.js → PictureView-6y4XsUf0.js} +3 -3
  18. package/dist/{PathTracer-BMtUFjdP.js → RayzeeRenderer-ClGfovbz.js} +7191 -23218
  19. package/dist/{TextureBuckets-D09iX9_y.js → TextureBuckets-CcOI4Bdg.js} +4 -0
  20. package/dist/TextureSampling-CQMmzhCp.js +732 -0
  21. package/dist/{ZipReader-KPFbIuOs.js → ZipReader-D6LbMsfZ.js} +1 -1
  22. package/dist/addons/archives.es.js +2 -2
  23. package/dist/addons/bidirectional.es.js +1 -1
  24. package/dist/addons/color.es.js +1 -1
  25. package/dist/addons/formats.es.js +102 -2
  26. package/dist/addons/physical-sky.es.js +1 -1
  27. package/dist/addons/storage.es.js +3 -3
  28. package/dist/rayzee-core.es.js +10 -12
  29. package/dist/rayzee.es.js +667 -671
  30. package/dist/rayzee.umd.js +114 -153
  31. package/package.json +1 -1
  32. package/src/EngineDefaults.js +6 -0
  33. package/src/EngineIssues.js +1 -0
  34. package/src/RayzeeRenderer.js +40 -4
  35. package/src/RenderSettings.js +31 -3
  36. package/src/{loaders → addons}/archives/ArchiveCache.js +3 -3
  37. package/src/{loaders → addons}/archives/ArchiveImporter.js +12 -13
  38. package/src/addons/{archives.js → archives/index.js} +2 -2
  39. package/src/{loaders → addons/archives}/pbrt/PBRTCurves.js +1 -1
  40. package/src/{loaders → addons/archives}/pbrt/PBRTMaterials.js +1 -1
  41. package/src/{loaders → addons/archives}/pbrt/PBRTParser.js +1 -1
  42. package/src/{loaders → addons/archives}/pbrt/PBRTSceneBuilder.js +3 -3
  43. package/src/{loaders → addons/archives}/pbrt/PBRTTextureBake.js +1 -1
  44. package/src/{loaders → addons/archives}/pbrt/index.js +2 -2
  45. package/src/{loaders → addons/archives}/usd/USDLayer.js +3 -3
  46. package/src/{loaders → addons/archives}/usd/USDStage.js +2 -2
  47. package/src/{shaders → addons/bidirectional}/Bidirectional.js +4 -4
  48. package/src/{pathtracer → addons/bidirectional}/BidirectionalIntegrator.js +25 -44
  49. package/src/{shaders → addons/bidirectional}/BidirectionalLamps.js +6 -6
  50. package/src/{shaders/kernels → addons/bidirectional}/ConnectKernel.js +8 -8
  51. package/src/{shaders/kernels → addons/bidirectional}/LightGenerateKernel.js +12 -12
  52. package/src/{shaders → addons/bidirectional}/LightGuide.js +2 -2
  53. package/src/{shaders/kernels → addons/bidirectional}/LightSplatKernel.js +8 -8
  54. package/src/{shaders/kernels → addons/bidirectional}/MergeKernel.js +7 -7
  55. package/src/addons/{bidirectional.js → bidirectional/index.js} +1 -1
  56. package/src/{color → addons/color}/BakedViews.js +1 -1
  57. package/src/{color → addons/color}/ColorManagement.js +4 -4
  58. package/src/{color → addons/color}/ColorSpaces.js +1 -1
  59. package/src/{color → addons/color}/LutBake.js +1 -1
  60. package/src/{color → addons/color}/OcioRuntime.js +2 -9
  61. package/src/{color → addons/color}/OcioViews.js +2 -2
  62. package/src/addons/{color.js → color/index.js} +6 -6
  63. package/src/addons/formats.js +112 -3
  64. package/src/{shaders → addons/physical-sky}/Atmosphere.js +1 -1
  65. package/src/{environment → addons/physical-sky}/AtmosphereModel.js +1 -1
  66. package/src/{shaders → addons/physical-sky}/EnvironmentCDF.js +1 -1
  67. package/src/{environment → addons/physical-sky}/PhysicalSky.js +5 -5
  68. package/src/addons/{physicalSky.js → physical-sky/index.js} +1 -1
  69. package/src/{storage/openStorage.js → addons/storage/OpenStorage.js} +63 -2
  70. package/src/{storage → addons/storage}/StorageManager.js +58 -6
  71. package/src/addons/{storage.js → storage/index.js} +3 -3
  72. package/src/core.js +4 -4
  73. package/src/index.js +17 -15
  74. package/src/lights/LightManager.js +2 -2
  75. package/src/lights/LightSerializer.js +75 -1
  76. package/src/loaders/AssetLoader.js +6 -6
  77. package/src/loaders/SceneLoading.js +2 -2
  78. package/src/materials/MaterialDataManager.js +2 -2
  79. package/src/materials/TextureCreator.js +377 -1
  80. package/src/node/index.js +1 -1
  81. package/src/output/Pictures.js +1 -1
  82. package/src/output/ToneMapCPU.js +0 -10
  83. package/src/pathtracer/PackedRayBuffer.js +1 -1
  84. package/src/pathtracer/PathTracer.js +90 -272
  85. package/src/pathtracer/PathTracerStage.js +1 -1
  86. package/src/pathtracer/QueueManager.js +3 -3
  87. package/src/pathtracer/UniformManager.js +7 -0
  88. package/src/pipeline/BindingAudit.js +0 -6
  89. package/src/scene/GeometryExtractor.js +1 -1
  90. package/src/scene/InstanceTable.js +2 -2
  91. package/src/scene/SceneProcessor.js +307 -900
  92. package/src/scene/SceneRefit.js +171 -0
  93. package/src/shaders/CameraRay.js +2 -2
  94. package/src/shaders/Clearcoat.js +1 -5
  95. package/src/shaders/Common.js +2 -54
  96. package/src/shaders/DFGTable.js +22 -0
  97. package/src/shaders/Displacement.js +1 -1
  98. package/src/shaders/EmissiveSampling.js +3 -4
  99. package/src/shaders/Environment.js +2 -2
  100. package/src/shaders/Fog.js +395 -0
  101. package/src/shaders/LightBVHSampling.js +1 -1
  102. package/src/shaders/LightsCore.js +1 -1
  103. package/src/shaders/LightsDirect.js +6 -2
  104. package/src/shaders/LightsSampling.js +1 -1
  105. package/src/shaders/MaterialProperties.js +7 -27
  106. package/src/shaders/MaterialTransmission.js +5 -26
  107. package/src/shaders/Random.js +17 -8
  108. package/src/shaders/SceneResources.js +2 -0
  109. package/src/shaders/Struct.js +81 -12
  110. package/src/shaders/Subsurface.js +1 -1
  111. package/src/shaders/TextureSampling.js +5 -22
  112. package/src/shaders/{patches.js → ThreePatches.js} +3 -158
  113. package/src/shaders/kernels/CompactKernel.js +141 -3
  114. package/src/shaders/kernels/DepthPass.js +1 -1
  115. package/src/shaders/kernels/FinalWriteKernel.js +158 -6
  116. package/src/shaders/kernels/ShadeKernel.js +98 -0
  117. package/src/shaders/kernels/SortGlobalKernels.js +1 -1
  118. package/src/storage/BLASCache.js +146 -7
  119. package/src/storage/CDFCache.js +1 -2
  120. package/src/storage/DownloadCache.js +2 -3
  121. package/src/storage/{identity.js → FileIdentity.js} +1 -1
  122. package/src/storage/SpillStore.js +2 -2
  123. package/src/storage/StorageAreas.js +27 -0
  124. package/src/viewer/PathTracerApp.js +9 -18
  125. package/src/viewer/SceneState.js +2 -2
  126. package/src/viewer/camera/CameraManager.js +1 -1
  127. package/src/viewer/denoise/NRD.js +1 -1
  128. package/src/viewer/denoise/OIDNTemporalHistory.js +1 -1
  129. package/src/viewer/overlays/OverlayManager.js +1 -2
  130. package/src/viewer/overlays/ViewOverlayRenderer.js +54 -1
  131. package/src/viewer/picture/AIUpscalerWorker.js +1 -1
  132. package/src/viewer/picture/AutoExposure.js +1 -1
  133. package/src/viewer/picture/LocalExposure.js +1 -1
  134. package/src/viewer/picture/PictureView.js +1 -1
  135. package/dist/BidirectionalIntegrator-BEXXxmZH.js +0 -956
  136. package/dist/DepthPass-u5g7hr7J.js +0 -68
  137. package/dist/FileFormats-C91JE5DM.js +0 -102
  138. package/dist/PhysicalSky-DqanSS2m.js +0 -1220
  139. package/dist/RayzeeRenderer-C9zGAMJo.js +0 -3281
  140. package/dist/TextureSampling-CvMi8LNc.js +0 -904
  141. package/dist/archiveFormats-j39rQeKs.js +0 -37
  142. package/src/lights/blackbody.js +0 -74
  143. package/src/loaders/FileFormats.js +0 -116
  144. package/src/storage/areas.js +0 -4
  145. package/src/storage/events.js +0 -29
  146. package/src/storage/index.js +0 -9
  147. package/src/storage/inlineTransport.js +0 -24
  148. package/src/storage/sceneCachePolicy.js +0 -12
  149. package/src/storage/shared.js +0 -9
  150. package/src/storage/transport.js +0 -62
  151. package/src/viewer/overlays/overlaySurface.js +0 -53
  152. /package/dist/{Logger-CH-TZ1co.js → Logger-D7hic8LA.js} +0 -0
  153. /package/dist/{SolarLimb-BiVdxxmL.js → SolarLimb-IayvafJP.js} +0 -0
  154. /package/src/{portable.js → Portable.js} +0 -0
  155. /package/src/{version.js → Version.js} +0 -0
  156. /package/src/{loaders → addons}/archives/ArchiveReader.js +0 -0
  157. /package/src/{storage → addons/archives}/SceneGraphCodec.js +0 -0
  158. /package/src/{loaders → addons}/archives/ZipReader.js +0 -0
  159. /package/src/{loaders/pbrt/buffers.js → addons/archives/pbrt/ArrayMemory.js} +0 -0
  160. /package/src/{loaders → addons/archives}/pbrt/EqualAreaOctahedral.js +0 -0
  161. /package/src/{loaders → addons/archives}/pbrt/LoopSubdivision.js +0 -0
  162. /package/src/{loaders → addons/archives}/pbrt/PBRTAnimation.js +0 -0
  163. /package/src/{loaders → addons/archives}/pbrt/PBRTMath.js +0 -0
  164. /package/src/{loaders → addons/archives}/pbrt/PBRTScattering.js +0 -0
  165. /package/src/{loaders → addons/archives}/pbrt/PBRTTokenizer.js +0 -0
  166. /package/src/{loaders → addons/archives}/pbrt/PFM.js +0 -0
  167. /package/src/{loaders → addons/archives}/usd/USDScene.js +0 -0
  168. /package/src/{loaders → addons/archives}/usd/USDText.js +0 -0
  169. /package/src/{loaders → addons/archives}/usd/index.js +0 -0
  170. /package/src/{color → addons/color}/Displays.js +0 -0
  171. /package/src/{color → addons/color}/InputColorSpaces.js +0 -0
  172. /package/src/{storage/locks.js → addons/storage/Locks.js} +0 -0
  173. /package/src/{storage → addons/storage}/StorageOps.js +0 -0
  174. /package/src/{storage → addons/storage}/StorageWorker.js +0 -0
  175. /package/src/loaders/{archives/archiveFormats.js → ArchiveFormats.js} +0 -0
  176. /package/src/node/{nodePlatform.js → NodePlatform.js} +0 -0
@@ -1,8 +1,8 @@
1
- import { a as e, i as t, r as n } from "./Logger-CH-TZ1co.js";
2
- import { l as r, t as i } from "./TextureBuckets-D09iX9_y.js";
1
+ import { a as e, i as t, r as n } from "./Logger-D7hic8LA.js";
2
+ import { l as r, t as i } from "./TextureBuckets-CcOI4Bdg.js";
3
3
  import { f as a, v as o, y as s } from "./BufferLayout-ny3WneEc.js";
4
- import { n as c } from "./EngineIssues-t5p7TEjb.js";
5
- import { c as l, l as u } from "./identity-x_UfobDa.js";
4
+ import { n as c } from "./EngineIssues-DHAU18xh.js";
5
+ import { d as l, s as u } from "./FileIdentity-BXmPNvJP.js";
6
6
  import { n as d } from "./AssetConfig-C8BsprCp.js";
7
7
  import { BackSide as f, Box3 as p, BufferAttribute as m, Color as h, DataTexture as g, DoubleSide as _, FrontSide as v, LoaderUtils as y, Matrix3 as b, Matrix4 as x, RGBAFormat as S, UnsignedByteType as C, Vector2 as w, Vector3 as T } from "three";
8
8
  //#region src/memory/ChunkedRecords.js
@@ -178,7 +178,7 @@ var j = class e {
178
178
  let n = (e) => new t(e.buffer, e.byteOffset, e.byteLength / t.BYTES_PER_ELEMENT), r = e.adopt(this.chunks.map((e) => e ? n(e) : void 0), this.recordCount, this.lanesPerRecord, this.recordsPerChunk);
179
179
  return r.LaneType = t, r._owner = this, this._views ? this._views.push(r) : (this._weakViews ??= []).push(new WeakRef(r)), r._spilled = this._spilled ??= /* @__PURE__ */ new Set(), r;
180
180
  }
181
- }, M = 32 * 1024 * 1024, N = "chunks.bin", P = class e {
181
+ }, M = 32 * 1024 * 1024, N = "chunks.bin", ee = class e {
182
182
  static async create(t, n, r, { label: i = "", expectedBytes: a = 0 } = {}) {
183
183
  let o = t?.area(u.SPILL), s = await o?.create(n, {
184
184
  label: i,
@@ -216,17 +216,17 @@ var j = class e {
216
216
  async dispose() {
217
217
  this._writer && await this._writer.abort(), this._writer = null, this._entry?.release(), this._entry = this._file = null, await this._area.remove(this._key);
218
218
  }
219
- }, F = 32 * 1024 * 1024, ee = F / 4, te = 64 * 1024 * 1024, ne = /* @__PURE__ */ new Map(), I = /* @__PURE__ */ new WeakSet();
220
- function L(e) {
221
- I.delete(e), e.transfer?.(0);
219
+ }, P = 32 * 1024 * 1024, te = P / 4, ne = 64 * 1024 * 1024, re = /* @__PURE__ */ new Map(), F = /* @__PURE__ */ new WeakSet();
220
+ function I(e) {
221
+ F.delete(e), e.transfer?.(0);
222
222
  }
223
- function re(e) {
224
- let t = ne.get(e);
225
- return t || ne.set(e, t = new e(0)), t;
223
+ function ie(e) {
224
+ let t = re.get(e);
225
+ return t || re.set(e, t = new e(0)), t;
226
226
  }
227
- var ie = class e {
227
+ var ae = class e {
228
228
  static async create(t, n, r = 0) {
229
- let i = await P.create(t, n, 0, {
229
+ let i = await ee.create(t, n, 0, {
230
230
  label: "Scene geometry (while building)",
231
231
  expectedBytes: r
232
232
  });
@@ -258,7 +258,7 @@ var ie = class e {
258
258
  let e = n.array;
259
259
  if (!e?.byteLength) continue;
260
260
  let r = t.get(e);
261
- r || t.set(e, r = this._write(e)), r.attributes.push(n), n.array = re(e.constructor);
261
+ r || t.set(e, r = this._write(e)), r.attributes.push(n), n.array = ie(e.constructor);
262
262
  }
263
263
  }
264
264
  _write(e) {
@@ -271,7 +271,7 @@ var ie = class e {
271
271
  pack: null,
272
272
  offset: 0
273
273
  };
274
- return this._records.push(n), this.bytes += t.byteLength, t.byteLength >= ee ? (n.at = this._end, n.array = e, this._end += t.byteLength, this._queue(n.at, t, [n]), n) : (this._pack && this._packUsed + t.byteLength > F && this._flushPack(), this._pack || (this._pack = new Uint8Array(F), this._packAt = this._end, this._packUsed = 0, this._end += F), this._pack.set(t, this._packUsed), n.at = this._packAt + this._packUsed, n.pack = this._pack, n.offset = this._packUsed, this._packUsed += n.byteLength, this._packRecords.push(n), I.has(e.buffer) && L(e.buffer), n);
274
+ return this._records.push(n), this.bytes += t.byteLength, t.byteLength >= te ? (n.at = this._end, n.array = e, this._end += t.byteLength, this._queue(n.at, t, [n]), n) : (this._pack && this._packUsed + t.byteLength > P && this._flushPack(), this._pack || (this._pack = new Uint8Array(P), this._packAt = this._end, this._packUsed = 0, this._end += P), this._pack.set(t, this._packUsed), n.at = this._packAt + this._packUsed, n.pack = this._pack, n.offset = this._packUsed, this._packUsed += n.byteLength, this._packRecords.push(n), F.has(e.buffer) && I(e.buffer), n);
275
275
  }
276
276
  _flushPack() {
277
277
  this._pack && (this._queue(this._packAt, this._pack.subarray(0, this._packUsed), this._packRecords, !0), this._pack = null, this._packRecords = []);
@@ -283,7 +283,7 @@ var ie = class e {
283
283
  await this._store.writeAt(e, t);
284
284
  for (let e of n) {
285
285
  let t = e.array?.buffer;
286
- e.array = e.pack = null, I.has(t) && L(t);
286
+ e.array = e.pack = null, F.has(t) && I(t);
287
287
  }
288
288
  r && t.buffer.transfer?.(0);
289
289
  }
@@ -299,19 +299,19 @@ var ie = class e {
299
299
  let t = null, n = 0;
300
300
  for (let r of e) {
301
301
  let e;
302
- if (r.array ? e = r.array : r.pack ? e = new r.Type(r.pack.slice(r.offset, r.offset + r.byteLength).buffer) : r.byteLength > te ? e = new r.Type(await this._store.readAt(r.at, r.byteLength)) : ((!t || r.at + r.byteLength > n + t.byteLength) && (t && L(t), n = r.at, t = await this._store.readAt(r.at, te)), e = new r.Type(t.slice(r.at - n, r.at - n + r.byteLength))), e.byteLength !== r.byteLength) throw Error("geometry spill: an array came back short");
303
- e !== r.array && I.add(e.buffer);
302
+ if (r.array ? e = r.array : r.pack ? e = new r.Type(r.pack.slice(r.offset, r.offset + r.byteLength).buffer) : r.byteLength > ne ? e = new r.Type(await this._store.readAt(r.at, r.byteLength)) : ((!t || r.at + r.byteLength > n + t.byteLength) && (t && I(t), n = r.at, t = await this._store.readAt(r.at, ne)), e = new r.Type(t.slice(r.at - n, r.at - n + r.byteLength))), e.byteLength !== r.byteLength) throw Error("geometry spill: an array came back short");
303
+ e !== r.array && F.add(e.buffer);
304
304
  for (let t of r.attributes) t.array = e;
305
305
  }
306
- t && L(t);
306
+ t && I(t);
307
307
  for (let { geometry: e, box: t, sphere: n } of this._geometries) e.boundingBox = t, e.boundingSphere = n;
308
308
  this._records = [], this._geometries = [], this.bytes = 0;
309
309
  }
310
310
  async dispose() {
311
311
  await this._chain, this._records = [], this._geometries = [], this._pack = null, this._packRecords = [], await this._store.dispose();
312
312
  }
313
- }, ae = n("geometry");
314
- function oe(e) {
313
+ }, oe = n("geometry");
314
+ function se(e) {
315
315
  e.traverse((e) => {
316
316
  if (!e.isInstancedMesh || e.boundingBox !== null) return;
317
317
  let t = e.geometry;
@@ -329,7 +329,7 @@ function oe(e) {
329
329
  n.min.set(c, l, u), n.max.set(d, f, m);
330
330
  });
331
331
  }
332
- var R = i.MAX_TEXTURES_LIMIT, se = new Set([
332
+ var L = i.MAX_TEXTURES_LIMIT, ce = new Set([
333
333
  "color",
334
334
  "emissive",
335
335
  "attenuationColor",
@@ -337,12 +337,12 @@ var R = i.MAX_TEXTURES_LIMIT, se = new Set([
337
337
  "specularColor",
338
338
  "subsurfaceColor",
339
339
  "diffuseTransmissionColor"
340
- ]), z = Object.freeze({
340
+ ]), R = Object.freeze({
341
341
  MATERIAL: "material",
342
342
  MAPPED: "mapped",
343
343
  DEFAULT: "default",
344
344
  HOST: "host"
345
- }), ce = [
345
+ }), le = [
346
346
  1,
347
347
  0,
348
348
  0,
@@ -360,11 +360,11 @@ var R = i.MAX_TEXTURES_LIMIT, se = new Set([
360
360
  0,
361
361
  1
362
362
  ];
363
- function le(e) {
364
- for (let t = 0; t < 16; t++) if (e[t] !== ce[t]) return !1;
363
+ function ue(e) {
364
+ for (let t = 0; t < 16; t++) if (e[t] !== le[t]) return !1;
365
365
  return !0;
366
366
  }
367
- function ue(e) {
367
+ function de(e) {
368
368
  return {
369
369
  map: e.map,
370
370
  normalMap: e.normalMap,
@@ -388,14 +388,14 @@ function ue(e) {
388
388
  iridescenceThicknessMap: e.iridescenceThicknessMap
389
389
  };
390
390
  }
391
- function de(e) {
391
+ function fe(e) {
392
392
  if (e.userData?.gltfExtensions?.KHR_materials_unlit?.alphaMode) {
393
393
  let t = e.userData.gltfExtensions.KHR_materials_unlit.alphaMode;
394
394
  return t === "BLEND" ? 2 : +(t === "MASK");
395
395
  }
396
396
  return e.alphaTest > 0 ? 1 : e.transparent && e.opacity < 1 || e.map && e.map.format === S && e.transparent ? 2 : 0;
397
397
  }
398
- function fe(e) {
398
+ function pe(e) {
399
399
  let t = 0, n = /* @__PURE__ */ new Set(), r = (e) => {
400
400
  let i = e.isMesh && e.material ? e.geometry : null;
401
401
  if (i && !n.has(i.uuid)) {
@@ -407,29 +407,29 @@ function fe(e) {
407
407
  };
408
408
  return r(e), t;
409
409
  }
410
- function pe(e) {
410
+ function me(e) {
411
411
  let t = 0, n = /* @__PURE__ */ new Set();
412
412
  return e.traverse?.((e) => {
413
413
  let r = e.isInstancedMesh ? e.instanceMatrix?.array : null;
414
414
  r && !n.has(r) && (n.add(r), t += r.byteLength);
415
415
  }), t;
416
416
  }
417
- function B(e, t) {
417
+ function z(e, t) {
418
418
  let n = e.x, r = e.y, i = e.z;
419
419
  e.x = t[0] * n + t[4] * r + t[8] * i + t[12], e.y = t[1] * n + t[5] * r + t[9] * i + t[13], e.z = t[2] * n + t[6] * r + t[10] * i + t[14];
420
420
  }
421
- function V(e, t) {
421
+ function B(e, t) {
422
422
  let n = e.x, r = e.y, i = e.z;
423
423
  e.x = t[0] * n + t[3] * r + t[6] * i, e.y = t[1] * n + t[4] * r + t[7] * i, e.z = t[2] * n + t[5] * r + t[8] * i;
424
424
  }
425
- var H = 1 << 21;
426
- function U(e) {
425
+ var V = 1 << 21;
426
+ function H(e) {
427
427
  return !!(e.isSkinnedMesh || Object.keys(e.geometry?.morphAttributes ?? {}).length);
428
428
  }
429
- function me(e) {
429
+ function he(e) {
430
430
  return e[0] * (e[5] * e[10] - e[9] * e[6]) - e[4] * (e[1] * e[10] - e[9] * e[2]) + e[8] * (e[1] * e[6] - e[5] * e[2]);
431
431
  }
432
- function he(e) {
432
+ function ge(e) {
433
433
  let t = !1, n = /* @__PURE__ */ new Set();
434
434
  return e.traverse((e) => {
435
435
  if (!(t || !e.isMesh || !e.material)) {
@@ -440,7 +440,7 @@ function he(e) {
440
440
  }
441
441
  }), t;
442
442
  }
443
- function ge(e, t) {
443
+ function _e(e, t) {
444
444
  let n = e.getAttribute(t);
445
445
  if (!n || n.normalized || !(n.array instanceof Float32Array) || e.morphAttributes?.[t]?.length) return;
446
446
  let r = n.array;
@@ -452,7 +452,7 @@ function ge(e, t) {
452
452
  for (let e = 0; e < r.length; e++) i[e] = Math.round(Math.max(-1, Math.min(1, r[e])) * 32767);
453
453
  e.setAttribute(t, new m(i, n.itemSize, !0));
454
454
  }
455
- var _e = class {
455
+ var ve = class {
456
456
  constructor({ issues: e = null } = {}) {
457
457
  this._issues = e, this._droppedTextures = 0, this._vectorPool = {
458
458
  vec3: Array(9).fill().map(() => new T()),
@@ -498,8 +498,8 @@ var _e = class {
498
498
  let t = /* @__PURE__ */ new Set(), n = 0, r = (e) => {
499
499
  if (e.isMesh && e.geometry && e.material) {
500
500
  let r = e.geometry, i = Math.ceil((r.index ? r.index.count : r.attributes.position?.count ?? 0) / 3), a = Array.isArray(e.material) ? e.material[0] : e.material, o = a?.emissive, s = a?.emissiveIntensity > 0 && !!o && (o.r > 0 || o.g > 0 || o.b > 0), c = e.isInstancedMesh ? e.count ?? 0 : 1;
501
- if (s && e.isInstancedMesh && !U(e) && i * c <= H) n += i * c;
502
- else if (s || U(e)) n += i;
501
+ if (s && e.isInstancedMesh && !H(e) && i * c <= V) n += i * c;
502
+ else if (s || H(e)) n += i;
503
503
  else {
504
504
  let e = `${r.uuid}|${a?.uuid}`;
505
505
  t.has(e) || (t.add(e), n += i);
@@ -515,7 +515,7 @@ var _e = class {
515
515
  let o = e.isMesh && e.material ? e.geometry : null;
516
516
  if (o) {
517
517
  if (!n.has(o)) {
518
- ie.canTake(o) || i.add(o);
518
+ ae.canTake(o) || i.add(o);
519
519
  for (let e of [...Object.values(o.attributes), o.index]) {
520
520
  let t = e?.array;
521
521
  if (!t) continue;
@@ -523,7 +523,7 @@ var _e = class {
523
523
  n && n !== o ? i.add(o).add(n) : r.set(t, o);
524
524
  }
525
525
  }
526
- n.set(o, (n.get(o) ?? 0) + 1), (t || U(e)) && i.add(o);
526
+ n.set(o, (n.get(o) ?? 0) + 1), (t || H(e)) && i.add(o);
527
527
  }
528
528
  if (e.children) for (let n of e.children) a(n, t);
529
529
  };
@@ -543,8 +543,8 @@ var _e = class {
543
543
  triangles: this._countTriangles(e),
544
544
  placements: this._countPlacements(e),
545
545
  meshes: t,
546
- geometryBytes: fe(e),
547
- instanceBytes: pe(e)
546
+ geometryBytes: pe(e),
547
+ instanceBytes: me(e)
548
548
  };
549
549
  }
550
550
  _countGeometryUses(e) {
@@ -611,7 +611,7 @@ var _e = class {
611
611
  "normal",
612
612
  "tangent",
613
613
  "color"
614
- ]) ge(e, t);
614
+ ]) _e(e, t);
615
615
  }
616
616
  }
617
617
  _countTriangles(e) {
@@ -652,7 +652,7 @@ var _e = class {
652
652
  e.userData.materialIndex = t;
653
653
  let n = this.meshes.length;
654
654
  this.meshes.push(e), e.userData.meshIndex = n;
655
- let r = `${e.geometry.uuid}|${t}`, i = U(e), a = !this._emissiveMaterial(t) && !i, o = a ? this._geometryRanges.get(r) : null;
655
+ let r = `${e.geometry.uuid}|${t}`, i = H(e), a = !this._emissiveMaterial(t) && !i, o = a ? this._geometryRanges.get(r) : null;
656
656
  if (o) {
657
657
  let t = {
658
658
  start: o.start,
@@ -696,7 +696,7 @@ var _e = class {
696
696
  });
697
697
  }
698
698
  if (c <= 0) return;
699
- let l = le(a) && s.length >= c * 16, u = l ? s : new Float32Array(c * 16);
699
+ let l = ue(a) && s.length >= c * 16, u = l ? s : new Float32Array(c * 16);
700
700
  this._beginRun(l ? e.instanceMatrix : u, 0, +!l);
701
701
  for (let e = 0; e < c; e++) {
702
702
  let n = e * 16, r = this._nextPlacement(), i = e * 16;
@@ -733,10 +733,10 @@ var _e = class {
733
733
  }
734
734
  _canExpand(e) {
735
735
  let t = e.geometry, n = (t.index ? t.index.count : t.attributes.position.count) / 3, r = e.count ?? (e.instanceMatrix?.array.length ?? 0) / 16;
736
- return n * r <= H ? !0 : (this._issues?.record(c.EMISSIVE_INSTANCES_COLLAPSED, `"${e.name || "instanced mesh"}" would need ${Math.round(n * r).toLocaleString()} triangles to light every instance; lighting the first one only`, {
736
+ return n * r <= V ? !0 : (this._issues?.record(c.EMISSIVE_INSTANCES_COLLAPSED, `"${e.name || "instanced mesh"}" would need ${Math.round(n * r).toLocaleString()} triangles to light every instance; lighting the first one only`, {
737
737
  instances: r,
738
738
  trianglesPerInstance: n,
739
- limit: H
739
+ limit: V
740
740
  }), !1);
741
741
  }
742
742
  _emissiveMaterial(e) {
@@ -748,7 +748,7 @@ var _e = class {
748
748
  processMaterial(t) {
749
749
  let n = this._materialUuidMap.get(t.uuid) ?? -1;
750
750
  if (n === -1) {
751
- t.depthWrite === !1 && (t.depthWrite = !0, e(ae, "depthWrite", "material had depthWrite disabled — enabled for rastered rendering"));
751
+ t.depthWrite === !1 && (t.depthWrite = !0, e(oe, "depthWrite", "material had depthWrite disabled — enabled for rastered rendering"));
752
752
  let r = this.createMaterialObject(t);
753
753
  this.materials.push(r), n = this.materials.length - 1, this._materialUuidMap.set(t.uuid, n);
754
754
  }
@@ -759,7 +759,7 @@ var _e = class {
759
759
  }
760
760
  getPhysicalDefaults() {
761
761
  let e = {};
762
- for (let [t, n] of Object.entries(r)) e[t] = se.has(t) ? new h().fromArray(n) : Array.isArray(n) ? [...n] : n;
762
+ for (let [t, n] of Object.entries(r)) e[t] = ce.has(t) ? new h().fromArray(n) : Array.isArray(n) ? [...n] : n;
763
763
  return e.normalScale = {
764
764
  x: r.normalScale[0],
765
765
  y: r.normalScale[1]
@@ -793,13 +793,13 @@ var _e = class {
793
793
  return n;
794
794
  }
795
795
  createMaterialObject(e) {
796
- let t = this.getPhysicalDefaults(), n = this.getMaterialType(e), r = this.mapLegacyMaterialToPhysical(e, n), i = ue(e), a = {}, o = (n) => r[n] === void 0 ? e[n] !== void 0 && e[n] !== null ? (a[n] = z.MATERIAL, e[n]) : (a[n] = z.DEFAULT, t[n]) : (a[n] = z.MAPPED, r[n]);
796
+ let t = this.getPhysicalDefaults(), n = this.getMaterialType(e), r = this.mapLegacyMaterialToPhysical(e, n), i = de(e), a = {}, o = (n) => r[n] === void 0 ? e[n] !== void 0 && e[n] !== null ? (a[n] = R.MATERIAL, e[n]) : (a[n] = R.DEFAULT, t[n]) : (a[n] = R.MAPPED, r[n]);
797
797
  for (let e of [
798
798
  "transparent",
799
799
  "alphaMode",
800
800
  "side",
801
801
  "depthWrite"
802
- ]) a[e] = z.MATERIAL;
802
+ ]) a[e] = R.MATERIAL;
803
803
  return {
804
804
  uuid: e.uuid,
805
805
  color: o("color"),
@@ -841,7 +841,7 @@ var _e = class {
841
841
  displacementBias: o("displacementBias"),
842
842
  transparent: +!!e.transparent,
843
843
  alphaTest: o("alphaTest"),
844
- alphaMode: de(e),
844
+ alphaMode: fe(e),
845
845
  side: this.getMaterialSide(e),
846
846
  depthWrite: e.depthWrite ?? !0 ? 1 : 0,
847
847
  map: this.processTexture(i.map, this.maps),
@@ -894,13 +894,13 @@ var _e = class {
894
894
  n || (n = /* @__PURE__ */ new Map(), this._textureIndexCache.set(t, n));
895
895
  let r = e.source.uuid, i = n.get(r);
896
896
  if (i !== void 0) return i;
897
- if (t.length < R) {
897
+ if (t.length < L) {
898
898
  t.push(e);
899
899
  let i = t.length - 1;
900
900
  return n.set(r, i), i;
901
901
  }
902
- return this._droppedTextures++, this._droppedTextures === 1 && this._issues?.record(c.TEXTURE_LIMIT_EXCEEDED, `scene needs more than ${R} distinct textures for one map type; the rest render untextured`, {
903
- limit: R,
902
+ return this._droppedTextures++, this._droppedTextures === 1 && this._issues?.record(c.TEXTURE_LIMIT_EXCEEDED, `scene needs more than ${L} distinct textures for one map type; the rest render untextured`, {
903
+ limit: L,
904
904
  firstDropped: e.name || e.source?.uuid
905
905
  }), -1;
906
906
  }
@@ -915,11 +915,11 @@ var _e = class {
915
915
  for (let d = 0; d < r; d++) {
916
916
  i.fromArray(e.instanceMatrix.array, d * 16), a.multiplyMatrices(e.matrixWorld, i);
917
917
  let r = new b().getNormalMatrix(a);
918
- this.extractTrianglesInBatch(o, s, c, l, u, t, n, a, r, me(a.elements) < 0);
918
+ this.extractTrianglesInBatch(o, s, c, l, u, t, n, a, r, he(a.elements) < 0);
919
919
  }
920
920
  return;
921
921
  }
922
- let d = r ? this._matrixPool.mat4.copy(e.matrixWorld) : null, f = r ? this._matrixPool.mat3.getNormalMatrix(e.matrixWorld) : null, p = r && me(d.elements) < 0;
922
+ let d = r ? this._matrixPool.mat4.copy(e.matrixWorld) : null, f = r ? this._matrixPool.mat3.getNormalMatrix(e.matrixWorld) : null, p = r && he(d.elements) < 0;
923
923
  this.extractTrianglesInBatch(o, s, c, l, u, t, n, d, f, p);
924
924
  }
925
925
  extractTrianglesInBatch(e, t, n, r, i, a, o, s = null, c = null, l = !1) {
@@ -930,7 +930,7 @@ var _e = class {
930
930
  let y = s?.elements, b = c?.elements;
931
931
  for (let c = 0; c < i; c++) {
932
932
  let i = c * 3, x = r ? r[i + 0] : i + 0, S = l ? 2 : 1, C = l ? 1 : 2, w = r ? r[i + S] : i + S, T = r ? r[i + C] : i + C;
933
- this.getVertex(e, x, u), this.getVertex(e, w, d), this.getVertex(e, T, f), this.getVertex(t, x, p), this.getVertex(t, w, m), this.getVertex(t, T, h), n ? (this.getVertex(n, x, g), this.getVertex(n, w, _), this.getVertex(n, T, v)) : (g.set(0, 0), _.set(0, 0), v.set(0, 0)), s && (B(u, y), B(d, y), B(f, y), V(p, b), V(m, b), V(h, b)), p.normalize(), m.normalize(), h.normalize(), this.packTriangleDataTextureFormat(this.currentTriangleIndex, u, d, f, p, m, h, g, _, v, a, o), this.currentTriangleIndex++;
933
+ this.getVertex(e, x, u), this.getVertex(e, w, d), this.getVertex(e, T, f), this.getVertex(t, x, p), this.getVertex(t, w, m), this.getVertex(t, T, h), n ? (this.getVertex(n, x, g), this.getVertex(n, w, _), this.getVertex(n, T, v)) : (g.set(0, 0), _.set(0, 0), v.set(0, 0)), s && (z(u, y), z(d, y), z(f, y), B(p, b), B(m, b), B(h, b)), p.normalize(), m.normalize(), h.normalize(), this.packTriangleDataTextureFormat(this.currentTriangleIndex, u, d, f, p, m, h, g, _, v, a, o), this.currentTriangleIndex++;
934
934
  }
935
935
  }
936
936
  packTriangleDataTextureFormat(e, t, n, r, i, c, l, u, d, f, p, m) {
@@ -951,7 +951,7 @@ var _e = class {
951
951
  }
952
952
  logStats() {
953
953
  let e = this.currentTriangleIndex * a.FLOATS_PER_TRIANGLE * 4;
954
- ae.debug(t.list([
954
+ oe.debug(t.list([
955
955
  `${t.count(this.currentTriangleIndex, "tri")} (${t.mb(e)})`,
956
956
  t.count(this.materials.length, "material"),
957
957
  t.count(this.maps.length, "map")
@@ -1010,38 +1010,38 @@ var _e = class {
1010
1010
  cameras: this.cameras
1011
1011
  };
1012
1012
  }
1013
- }, W = {
1013
+ }, U = {
1014
1014
  Worker: null,
1015
1015
  decodeImage: null,
1016
1016
  readFile: null
1017
1017
  };
1018
- function ve(e) {
1019
- e && Object.assign(W, e);
1018
+ function ye(e) {
1019
+ e && Object.assign(U, e);
1020
1020
  }
1021
- function ye() {
1022
- return W;
1021
+ function W() {
1022
+ return U;
1023
1023
  }
1024
1024
  function be() {
1025
1025
  return typeof navigator < "u" && navigator.hardwareConcurrency || 4;
1026
1026
  }
1027
1027
  function xe() {
1028
- return !!W.decodeImage || typeof self < "u" && (typeof createImageBitmap < "u" || typeof document < "u");
1028
+ return !!U.decodeImage || typeof self < "u" && (typeof createImageBitmap < "u" || typeof document < "u");
1029
1029
  }
1030
1030
  function Se() {
1031
- return !!W.Worker || typeof Worker < "u";
1031
+ return !!U.Worker || typeof Worker < "u";
1032
1032
  }
1033
1033
  var G = 0;
1034
1034
  async function Ce(e) {
1035
- if (!W.Worker || G === 0 && globalThis.Worker !== void 0) return e();
1036
- G++ === 0 && (globalThis.Worker = W.Worker);
1035
+ if (!U.Worker || G === 0 && globalThis.Worker !== void 0) return e();
1036
+ G++ === 0 && (globalThis.Worker = U.Worker);
1037
1037
  try {
1038
1038
  return await e();
1039
1039
  } finally {
1040
- --G === 0 && globalThis.Worker === W.Worker && delete globalThis.Worker;
1040
+ --G === 0 && globalThis.Worker === U.Worker && delete globalThis.Worker;
1041
1041
  }
1042
1042
  }
1043
1043
  function we(e, t) {
1044
- let n = W.Worker;
1044
+ let n = U.Worker;
1045
1045
  if (!n) return new e(t);
1046
1046
  let r = Object.prototype.hasOwnProperty.call(globalThis, "Worker"), i = globalThis.Worker;
1047
1047
  globalThis.Worker = n;
@@ -1219,21 +1219,15 @@ var Ze = class {
1219
1219
  samples: this.samples.slice()
1220
1220
  };
1221
1221
  }
1222
- }, Qe = "11.15.0", $e = 1e4, et = 15e5;
1223
- function tt(e, t, n = $e) {
1224
- return e >= n && t / et < e / 3;
1225
- }
1226
- //#endregion
1227
- //#region src/loaders/PlatformImageLoader.js
1228
- var nt = [
1222
+ }, Qe = "11.16.0", $e = [
1229
1223
  [/\.jpe?g(\?|#|$)/i, "image/jpeg"],
1230
1224
  [/\.webp(\?|#|$)/i, "image/webp"],
1231
1225
  [/\.avif(\?|#|$)/i, "image/avif"]
1232
1226
  ];
1233
1227
  function J(e) {
1234
- return e.mimeType ? e.mimeType : e.uri?.startsWith("data:") ? e.uri.slice(5, e.uri.indexOf(";")) : nt.find(([t]) => t.test(e.uri ?? ""))?.[1] ?? "image/png";
1228
+ return e.mimeType ? e.mimeType : e.uri?.startsWith("data:") ? e.uri.slice(5, e.uri.indexOf(";")) : $e.find(([t]) => t.test(e.uri ?? ""))?.[1] ?? "image/png";
1235
1229
  }
1236
- function rt(e) {
1230
+ function et(e) {
1237
1231
  for (let t = 8; t + 12 <= e.length;) {
1238
1232
  let n = (e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3]) >>> 0, r = t + 12 + n;
1239
1233
  if (e[t + 4] === 73 && e[t + 5] === 69 && e[t + 6] === 78 && e[t + 7] === 68) return e.subarray(0, r);
@@ -1248,44 +1242,44 @@ function Y({ data: e, width: t, height: n }, { shared: r = !1 } = {}) {
1248
1242
  return o.needsUpdate = !0, o;
1249
1243
  }
1250
1244
  function X(e, t) {
1251
- return ye().decodeImage(t === "image/png" ? rt(e) : e, t);
1245
+ return W().decodeImage(t === "image/png" ? et(e) : e, t);
1252
1246
  }
1253
- async function it(e) {
1247
+ async function tt(e) {
1254
1248
  let t = await fetch(e);
1255
1249
  if (!t.ok) throw Error(`HTTP ${t.status}`);
1256
1250
  return new Uint8Array(await t.arrayBuffer());
1257
1251
  }
1258
- function at(e, t) {
1259
- return t.bufferView === void 0 ? it(e.options.manager.resolveURL(y.resolveURL(t.uri, e.options.path))) : e.getDependency("bufferView", t.bufferView).then((e) => new Uint8Array(e));
1252
+ function nt(e, t) {
1253
+ return t.bufferView === void 0 ? tt(e.options.manager.resolveURL(y.resolveURL(t.uri, e.options.path))) : e.getDependency("bufferView", t.bufferView).then((e) => new Uint8Array(e));
1260
1254
  }
1261
- var ot = (e, t) => !!t && t !== e.textureLoader && typeof t.parse == "function";
1262
- function Z(e, t, n) {
1255
+ var rt = (e, t) => !!t && t !== e.textureLoader && typeof t.parse == "function";
1256
+ function it(e, t, n) {
1263
1257
  if (e.sourceCache[t] !== void 0) return e.sourceCache[t].then((e) => e.clone());
1264
- let r = at(e, e.json.images[t]).then((e) => new Promise((t, r) => {
1258
+ let r = nt(e, e.json.images[t]).then((e) => new Promise((t, r) => {
1265
1259
  n.parse(e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength), t, r);
1266
1260
  }));
1267
1261
  return e.sourceCache[t] = r, r;
1268
1262
  }
1269
- async function st(e, t = J({ uri: e })) {
1270
- let n = Y(await X(await it(e), t));
1263
+ async function at(e, t = J({ uri: e })) {
1264
+ let n = Y(await X(await tt(e), t));
1271
1265
  return n.flipY = !0, n;
1272
1266
  }
1273
- async function ct(e, t) {
1267
+ async function ot(e, t) {
1274
1268
  let n = Y(await X(e, J({ uri: t })), { shared: !0 });
1275
1269
  return n.flipY = !0, n;
1276
1270
  }
1277
- function lt(e, t = null) {
1271
+ function st(e, t = null) {
1278
1272
  return e.loadImageSource = function(e, n) {
1279
- if (ot(this, n)) return Z(this, e, n);
1273
+ if (rt(this, n)) return it(this, e, n);
1280
1274
  let r = this.json.images[e], i = /* @__PURE__ */ Error("no image decoder in this runtime: configurePlatform( nodePlatform( { decodeImage } ) ) — see \"Running in Node\"");
1281
1275
  return t?.(r.uri ?? `bufferView ${r.bufferView}`, i), Promise.reject(i);
1282
1276
  }, { name: "RAYZEE_missing_image_decoder" };
1283
1277
  }
1284
- function ut(e, t = null) {
1278
+ function ct(e, t = null) {
1285
1279
  return e.loadImageSource = function(e, n) {
1286
- if (ot(this, n)) return Z(this, e, n);
1280
+ if (rt(this, n)) return it(this, e, n);
1287
1281
  if (this.sourceCache[e] !== void 0) return this.sourceCache[e].then((e) => e.clone());
1288
- let r = this.json.images[e], i = J(r), a = r.uri ?? `bufferView ${r.bufferView}`, o = at(this, r).then((e) => X(e, i)).then((e) => {
1282
+ let r = this.json.images[e], i = J(r), a = r.uri ?? `bufferView ${r.bufferView}`, o = nt(this, r).then((e) => X(e, i)).then((e) => {
1289
1283
  let t = Y(e, { shared: !0 });
1290
1284
  return r.extras && typeof r.extras == "object" && Object.assign(t.userData, r.extras), t.userData.mimeType = i, t;
1291
1285
  }).catch((e) => {
@@ -1296,12 +1290,12 @@ function ut(e, t = null) {
1296
1290
  }
1297
1291
  //#endregion
1298
1292
  //#region src/loaders/SceneMetadata.js
1299
- var dt = [
1293
+ var lt = [
1300
1294
  "sourceFile",
1301
1295
  "url",
1302
1296
  "file"
1303
1297
  ];
1304
- function Q(e) {
1298
+ function Z(e) {
1305
1299
  if (typeof e == "string") try {
1306
1300
  let t = JSON.parse(e);
1307
1301
  return t && typeof t == "object" ? t : null;
@@ -1310,50 +1304,50 @@ function Q(e) {
1310
1304
  }
1311
1305
  return e && typeof e == "object" ? e : null;
1312
1306
  }
1313
- function $(e) {
1307
+ function Q(e) {
1314
1308
  let t = typeof e == "string" ? parseFloat(e) : e;
1315
1309
  return Number.isFinite(t) ? t : void 0;
1316
1310
  }
1317
- function ft(e) {
1318
- let t = Q(e);
1311
+ function ut(e) {
1312
+ let t = Z(e);
1319
1313
  if (!t) return null;
1320
- let n = (e) => e && (e.environment !== void 0 || e.render !== void 0), r = Q(t.rayzee);
1314
+ let n = (e) => e && (e.environment !== void 0 || e.render !== void 0), r = Z(t.rayzee);
1321
1315
  return n(r) ? r : n(t) ? t : null;
1322
1316
  }
1323
- function pt(e) {
1324
- let t = Q(e);
1317
+ function dt(e) {
1318
+ let t = Z(e);
1325
1319
  if (!t) return null;
1326
- let n = dt.map((e) => t[e]).find((e) => typeof e == "string" && e.trim());
1320
+ let n = lt.map((e) => t[e]).find((e) => typeof e == "string" && e.trim());
1327
1321
  if (!n) return null;
1328
- let r = $(t.rotation), i = $(t.intensity), a = { sourceFile: n.trim() };
1322
+ let r = Q(t.rotation), i = Q(t.intensity), a = { sourceFile: n.trim() };
1329
1323
  return r !== void 0 && (a.rotation = r), i !== void 0 && (a.intensity = Math.max(0, i)), a;
1330
1324
  }
1331
- var mt = [
1325
+ var ft = [
1332
1326
  "maxBounces",
1333
1327
  "samples",
1334
1328
  "width",
1335
1329
  "height"
1336
1330
  ];
1337
- function ht(e) {
1338
- let t = Q(e);
1331
+ function pt(e) {
1332
+ let t = Z(e);
1339
1333
  if (!t) return null;
1340
1334
  let n = {};
1341
- for (let e of mt) {
1342
- let r = $(t[e]);
1335
+ for (let e of ft) {
1336
+ let r = Q(t[e]);
1343
1337
  r !== void 0 && r > 0 && (n[e] = Math.round(r));
1344
1338
  }
1345
1339
  return Object.keys(n).length ? n : null;
1346
1340
  }
1347
- function gt(e) {
1348
- let t = ft(e);
1341
+ function mt(e) {
1342
+ let t = ut(e);
1349
1343
  if (!t) return null;
1350
- let n = pt(t.environment), r = ht(t.render);
1344
+ let n = dt(t.environment), r = pt(t.render);
1351
1345
  return !n && !r ? null : {
1352
1346
  ...n ? { environment: n } : {},
1353
1347
  ...r ? { render: r } : {}
1354
1348
  };
1355
1349
  }
1356
- function _t(e) {
1350
+ function ht(e) {
1357
1351
  if (!e) return null;
1358
1352
  let t = [
1359
1353
  e.userData,
@@ -1362,10 +1356,46 @@ function _t(e) {
1362
1356
  ];
1363
1357
  Array.isArray(e.scenes) && t.push(...e.scenes.map((e) => e?.userData));
1364
1358
  for (let e of t) {
1365
- let t = gt(e);
1359
+ let t = mt(e);
1366
1360
  if (t) return t;
1367
1361
  }
1368
1362
  return null;
1369
1363
  }
1370
1364
  //#endregion
1371
- export { Se as A, he as B, Me as C, ye as D, we as E, oe as F, D as G, P as H, de as I, k as K, fe as L, Ce as M, _e as N, be as O, z as P, ge as R, je as S, ve as T, j as U, ie as V, E as W, He as _, ct as a, Xe as b, tt as c, Ze as d, ze as f, Ue as g, We as h, lt as i, Ee as j, xe as k, Qe as l, Be as m, gt as n, ut as o, Ke as p, st as r, $e as s, _t as t, Ve as u, Ge as v, Oe as w, Ye as x, Je as y, ue as z };
1365
+ //#region src/loaders/ArchiveFormats.js
1366
+ var gt = Object.freeze({
1367
+ zip: {
1368
+ type: "archive",
1369
+ name: "ZIP Archive"
1370
+ },
1371
+ gz: {
1372
+ type: "archive",
1373
+ name: "Gzipped TAR Archive"
1374
+ },
1375
+ tgz: {
1376
+ type: "archive",
1377
+ name: "Gzipped TAR Archive"
1378
+ },
1379
+ tar: {
1380
+ type: "archive",
1381
+ name: "TAR Archive"
1382
+ }
1383
+ }), $ = (e) => typeof Blob < "u" && e instanceof Blob, _t = (e) => !!e && typeof e == "object" && !$(e) && e.files != null, vt = (e) => e.startsWith(".") || e === "__MACOSX";
1384
+ function yt({ name: e = null, files: t }, { isModel: n = () => !1 } = {}) {
1385
+ let r = /* @__PURE__ */ new Map();
1386
+ for (let e of t) {
1387
+ let t = $(e) ? e : e.file, n = $(e) ? e.webkitRelativePath || e.name : e.path, i = String(n ?? "").replace(/\\/g, "/").split("/").filter((e) => e && e !== ".").join("/");
1388
+ !i || !t || i.split("/").some(vt) || r.set(i, {
1389
+ path: i,
1390
+ file: t
1391
+ });
1392
+ }
1393
+ let i = [...r.values()].sort((e, t) => e.path < t.path ? -1 : +(e.path > t.path)), a = i[0]?.path.split("/")[0], o = i.length > 0 && i.every((e) => e.path.startsWith(a + "/")) ? a : null;
1394
+ return {
1395
+ name: e ?? o ?? (i.find((e) => n(e.path)) ?? i[0])?.path.split("/").pop() ?? "Folder",
1396
+ files: i,
1397
+ flat: o === null && i.every((e) => !e.path.includes("/"))
1398
+ };
1399
+ }
1400
+ //#endregion
1401
+ export { xe as A, de as B, je as C, we as D, ye as E, R as F, E as G, ae as H, se as I, D as K, fe as L, Ee as M, Ce as N, W as O, ve as P, pe as R, Ye as S, Oe as T, ee as U, ge as V, j as W, Ue as _, mt as a, Je as b, ot as c, Ve as d, Ze as f, We as g, Be as h, ht as i, Se as j, be as k, ct as l, Ke as m, _t as n, at as o, ze as p, k as q, yt as r, st as s, gt as t, Qe as u, He as v, Me as w, Xe as x, Ge as y, _e as z };