s3m-three 0.3.12 → 0.3.14

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 (53) hide show
  1. package/dist/browser/assets/s3mWorker-BjPOUgjg.js +1 -0
  2. package/dist/browser/s3m-three.iife.ext-three.js +21 -21
  3. package/dist/browser/s3m-three.iife.js +21 -21
  4. package/dist/core/TextureDecode.d.ts +9 -0
  5. package/dist/core/TextureDecode.d.ts.map +1 -1
  6. package/dist/core/TextureDecode.js +66 -0
  7. package/dist/core/TextureDecode.js.map +1 -1
  8. package/dist/index.d.ts +2 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/render/DatasetManager.d.ts +3 -1
  13. package/dist/render/DatasetManager.d.ts.map +1 -1
  14. package/dist/render/DatasetManager.js +2 -1
  15. package/dist/render/DatasetManager.js.map +1 -1
  16. package/dist/render/OrthoProjection.d.ts +22 -0
  17. package/dist/render/OrthoProjection.d.ts.map +1 -1
  18. package/dist/render/OrthoProjection.js +60 -0
  19. package/dist/render/OrthoProjection.js.map +1 -1
  20. package/dist/render/S3MViewer.d.ts +70 -0
  21. package/dist/render/S3MViewer.d.ts.map +1 -1
  22. package/dist/render/S3MViewer.js +100 -5
  23. package/dist/render/S3MViewer.js.map +1 -1
  24. package/dist/render/TextureFactory.d.ts +3 -2
  25. package/dist/render/TextureFactory.d.ts.map +1 -1
  26. package/dist/render/TextureFactory.js +26 -6
  27. package/dist/render/TextureFactory.js.map +1 -1
  28. package/dist/tileset/S3MTileset.d.ts +26 -1
  29. package/dist/tileset/S3MTileset.d.ts.map +1 -1
  30. package/dist/tileset/S3MTileset.js +29 -2
  31. package/dist/tileset/S3MTileset.js.map +1 -1
  32. package/dist/vendor/crunch_decoder.module.js +451 -450
  33. package/dist/vendor/draco_decoder.module.js +3032 -3031
  34. package/dist/worker/S3MWorkerClient.d.ts +6 -3
  35. package/dist/worker/S3MWorkerClient.d.ts.map +1 -1
  36. package/dist/worker/S3MWorkerClient.js +8 -5
  37. package/dist/worker/S3MWorkerClient.js.map +1 -1
  38. package/dist/worker/s3mWorker.js +3639 -54
  39. package/dist/worker/s3mWorker.js.map +1 -1
  40. package/docs/API.md +61 -0
  41. package/package.json +2 -2
  42. package/src/core/TextureDecode.ts +87 -0
  43. package/src/index.ts +2 -1
  44. package/src/render/DatasetManager.ts +5 -1
  45. package/src/render/OrthoProjection.ts +58 -0
  46. package/src/render/S3MViewer.ts +134 -7
  47. package/src/render/TextureFactory.ts +35 -8
  48. package/src/tileset/S3MTileset.ts +41 -2
  49. package/src/vendor/crunch_decoder.module.js +451 -450
  50. package/src/vendor/draco_decoder.module.js +3032 -3031
  51. package/src/worker/S3MWorkerClient.ts +9 -5
  52. package/src/worker/s3mWorker.ts +2 -2
  53. package/dist/browser/assets/s3mWorker-D7AV6O30.js +0 -1
@@ -32,8 +32,11 @@ export declare class S3MWorkerClient {
32
32
  tile: ParsedTile;
33
33
  geometry?: TileGeometryData;
34
34
  }>;
35
- /** 解码一张纹理(DXT / CRN / WEBP / RGB 系)。tex.data 走 structured clone,主线程保留原数据 */
36
- decodeTexture(tex: S3MTexture, compressed?: boolean): Promise<DecodedTextureData>;
35
+ /**
36
+ * 解码一张纹理(DXT / CRN / WEBP / RGB 系)。tex.data 走 structured clone,主线程保留原数据。
37
+ * `maxSize` 交给 Worker 侧收口——缩放本身也是 CPU 活,放在 Worker 里主线程零成本。
38
+ */
39
+ decodeTexture(tex: S3MTexture, compressed?: boolean, maxSize?: number): Promise<DecodedTextureData>;
37
40
  dispose(): void;
38
41
  private _die;
39
42
  }
@@ -44,5 +47,5 @@ export declare function getSharedS3MWorker(): S3MWorkerClient | null;
44
47
  * (解码失败本身在 decodeTextureData 里也不抛错,走 crn(failed) 之类的标记)。
45
48
  * compressed 由 TextureFactory 按宿主 GL 能力传入,Worker 端据此跳过 DXT 解码。
46
49
  */
47
- export declare function decodeTextureWithWorker(tex: S3MTexture, compressed: boolean): Promise<DecodedTextureData | null>;
50
+ export declare function decodeTextureWithWorker(tex: S3MTexture, compressed: boolean, maxSize?: number): Promise<DecodedTextureData | null>;
48
51
  //# sourceMappingURL=S3MWorkerClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"S3MWorkerClient.d.ts","sourceRoot":"","sources":["../../src/worker/S3MWorkerClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,uDAAuD;AACvD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAwBD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwF;IACjH,gCAAgC;IAChC,IAAI,UAAS;IAEb,kCAAkC;IAClC,MAAM,CAAC,MAAM,IAAI,eAAe,GAAG,IAAI;IAYvC,OAAO;IAsBP;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,UAAQ,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAS7H,4EAA4E;IAC5E,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS/E,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI;CAYb;AAUD,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAI3D;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAQpC"}
1
+ {"version":3,"file":"S3MWorkerClient.d.ts","sourceRoot":"","sources":["../../src/worker/S3MWorkerClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,uDAAuD;AACvD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAwBD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwF;IACjH,gCAAgC;IAChC,IAAI,UAAS;IAEb,kCAAkC;IAClC,MAAM,CAAC,MAAM,IAAI,eAAe,GAAG,IAAI;IAYvC,OAAO;IAsBP;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,UAAQ,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAS7H;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,UAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IASjG,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI;CAYb;AAUD,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAI3D;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,OAAO,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAQpC"}
@@ -62,14 +62,17 @@ export class S3MWorkerClient {
62
62
  this._worker.postMessage({ type: 'parse', id, buffer, assemble, batching });
63
63
  });
64
64
  }
65
- /** 解码一张纹理(DXT / CRN / WEBP / RGB 系)。tex.data 走 structured clone,主线程保留原数据 */
66
- decodeTexture(tex, compressed = false) {
65
+ /**
66
+ * 解码一张纹理(DXT / CRN / WEBP / RGB 系)。tex.data 走 structured clone,主线程保留原数据。
67
+ * `maxSize` 交给 Worker 侧收口——缩放本身也是 CPU 活,放在 Worker 里主线程零成本。
68
+ */
69
+ decodeTexture(tex, compressed = false, maxSize) {
67
70
  if (this.dead)
68
71
  return Promise.reject(new WorkerDeadError('s3m 解析 Worker 已终止'));
69
72
  const id = ++this._seq;
70
73
  return new Promise((resolve, reject) => {
71
74
  this._pending.set(id, { resolve: resolve, reject });
72
- this._worker.postMessage({ type: 'tex', id, tex, compressed });
75
+ this._worker.postMessage({ type: 'tex', id, tex, compressed, maxSize });
73
76
  });
74
77
  }
75
78
  dispose() {
@@ -110,12 +113,12 @@ export function getSharedS3MWorker() {
110
113
  * (解码失败本身在 decodeTextureData 里也不抛错,走 crn(failed) 之类的标记)。
111
114
  * compressed 由 TextureFactory 按宿主 GL 能力传入,Worker 端据此跳过 DXT 解码。
112
115
  */
113
- export async function decodeTextureWithWorker(tex, compressed) {
116
+ export async function decodeTextureWithWorker(tex, compressed, maxSize) {
114
117
  const client = getSharedS3MWorker();
115
118
  if (!client)
116
119
  return null;
117
120
  try {
118
- return await client.decodeTexture(tex, compressed);
121
+ return await client.decodeTexture(tex, compressed, maxSize);
119
122
  }
120
123
  catch {
121
124
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"S3MWorkerClient.js","sourceRoot":"","sources":["../../src/worker/S3MWorkerClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"S3MWorkerClient.js","sourceRoot":"","sources":["../../src/worker/S3MWorkerClient.ts"],"names":[],"mappings":"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"}