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.
- package/dist/browser/assets/s3mWorker-BjPOUgjg.js +1 -0
- package/dist/browser/s3m-three.iife.ext-three.js +21 -21
- package/dist/browser/s3m-three.iife.js +21 -21
- package/dist/core/TextureDecode.d.ts +9 -0
- package/dist/core/TextureDecode.d.ts.map +1 -1
- package/dist/core/TextureDecode.js +66 -0
- package/dist/core/TextureDecode.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/render/DatasetManager.d.ts +3 -1
- package/dist/render/DatasetManager.d.ts.map +1 -1
- package/dist/render/DatasetManager.js +2 -1
- package/dist/render/DatasetManager.js.map +1 -1
- package/dist/render/OrthoProjection.d.ts +22 -0
- package/dist/render/OrthoProjection.d.ts.map +1 -1
- package/dist/render/OrthoProjection.js +60 -0
- package/dist/render/OrthoProjection.js.map +1 -1
- package/dist/render/S3MViewer.d.ts +70 -0
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +100 -5
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/TextureFactory.d.ts +3 -2
- package/dist/render/TextureFactory.d.ts.map +1 -1
- package/dist/render/TextureFactory.js +26 -6
- package/dist/render/TextureFactory.js.map +1 -1
- package/dist/tileset/S3MTileset.d.ts +26 -1
- package/dist/tileset/S3MTileset.d.ts.map +1 -1
- package/dist/tileset/S3MTileset.js +29 -2
- package/dist/tileset/S3MTileset.js.map +1 -1
- package/dist/vendor/crunch_decoder.module.js +451 -450
- package/dist/vendor/draco_decoder.module.js +3032 -3031
- package/dist/worker/S3MWorkerClient.d.ts +6 -3
- package/dist/worker/S3MWorkerClient.d.ts.map +1 -1
- package/dist/worker/S3MWorkerClient.js +8 -5
- package/dist/worker/S3MWorkerClient.js.map +1 -1
- package/dist/worker/s3mWorker.js +3639 -54
- package/dist/worker/s3mWorker.js.map +1 -1
- package/docs/API.md +61 -0
- package/package.json +2 -2
- package/src/core/TextureDecode.ts +87 -0
- package/src/index.ts +2 -1
- package/src/render/DatasetManager.ts +5 -1
- package/src/render/OrthoProjection.ts +58 -0
- package/src/render/S3MViewer.ts +134 -7
- package/src/render/TextureFactory.ts +35 -8
- package/src/tileset/S3MTileset.ts +41 -2
- package/src/vendor/crunch_decoder.module.js +451 -450
- package/src/vendor/draco_decoder.module.js +3032 -3031
- package/src/worker/S3MWorkerClient.ts +9 -5
- package/src/worker/s3mWorker.ts +2 -2
- 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
|
-
/**
|
|
36
|
-
|
|
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
|
|
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
|
-
/**
|
|
66
|
-
|
|
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":"AAcA,uDAAuD;AACvD,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAwBD,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IACzB,IAAI,GAAG,CAAC,CAAC;IACA,QAAQ,GAAG,IAAI,GAAG,EAA6E,CAAC;IACjH,gCAAgC;IAChC,IAAI,GAAG,KAAK,CAAC;IAEb,kCAAkC;IAClC,MAAM,CAAC,MAAM;QACX,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAC/C,IAAI,CAAC;YACH,0CAA0C;YAC1C,uDAAuD;YACvD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1F,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,YAAoB,MAAc;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,MAAM,CAAC,SAAS,GAAG,CAAC,CAAyB,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,mDAAmD;gBACnD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClC,GAA+B,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1D,MAAM,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACpE,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,MAAmB,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI;QAC9D,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/E,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO,IAAI,OAAO,CAAoD,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAA+B,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,GAAe,EAAE,UAAU,GAAG,KAAK,EAAE,OAAgB;QACjE,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/E,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAA+B,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAEO,IAAI,CAAC,MAAc;QACzB,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;QACrD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AAED,6EAA6E;AAE7E;;;GAGG;AACH,IAAI,YAAgD,CAAC;AAErD,MAAM,UAAU,kBAAkB;IAChC,IAAI,YAAY,KAAK,SAAS;QAAE,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;IACxE,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAe,EACf,UAAmB,EACnB,OAAgB;IAEhB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|