s3m-three 0.3.4 → 0.3.6
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-hZY5KqWF.js +1 -0
- package/dist/browser/s3m-three.iife.ext-three.js +26 -20
- package/dist/browser/s3m-three.iife.js +26 -20
- package/dist/core/TextureDecode.d.ts +18 -0
- package/dist/core/TextureDecode.d.ts.map +1 -0
- package/dist/core/TextureDecode.js +130 -0
- package/dist/core/TextureDecode.js.map +1 -0
- package/dist/core/TextureFormat.d.ts +22 -2
- package/dist/core/TextureFormat.d.ts.map +1 -1
- package/dist/core/TextureFormat.js +22 -2
- package/dist/core/TextureFormat.js.map +1 -1
- package/dist/render/DatasetManager.d.ts +2 -0
- package/dist/render/DatasetManager.d.ts.map +1 -1
- package/dist/render/DatasetManager.js +1 -0
- package/dist/render/DatasetManager.js.map +1 -1
- package/dist/render/FeatureStyleManager.d.ts +4 -2
- package/dist/render/FeatureStyleManager.d.ts.map +1 -1
- package/dist/render/FeatureStyleManager.js +33 -1
- package/dist/render/FeatureStyleManager.js.map +1 -1
- package/dist/render/MergeVertices.d.ts +17 -0
- package/dist/render/MergeVertices.d.ts.map +1 -0
- package/dist/render/MergeVertices.js +50 -0
- package/dist/render/MergeVertices.js.map +1 -0
- package/dist/render/S3MViewer.d.ts +2 -0
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +9 -4
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/StyleMaterial.d.ts.map +1 -1
- package/dist/render/StyleMaterial.js +6 -0
- package/dist/render/StyleMaterial.js.map +1 -1
- package/dist/render/TextureFactory.d.ts +8 -19
- package/dist/render/TextureFactory.d.ts.map +1 -1
- package/dist/render/TextureFactory.js +39 -116
- package/dist/render/TextureFactory.js.map +1 -1
- package/dist/tileset/S3MTileset.d.ts +17 -0
- package/dist/tileset/S3MTileset.d.ts.map +1 -1
- package/dist/tileset/S3MTileset.js +32 -1
- package/dist/tileset/S3MTileset.js.map +1 -1
- package/dist/worker/S3MWorkerClient.d.ts +40 -0
- package/dist/worker/S3MWorkerClient.d.ts.map +1 -0
- package/dist/worker/S3MWorkerClient.js +120 -0
- package/dist/worker/S3MWorkerClient.js.map +1 -0
- package/dist/worker/s3mWorker.d.ts +2 -0
- package/dist/worker/s3mWorker.d.ts.map +1 -0
- package/dist/worker/s3mWorker.js +48 -0
- package/dist/worker/s3mWorker.js.map +1 -0
- package/dist/worker/transferables.d.ts +14 -0
- package/dist/worker/transferables.d.ts.map +1 -0
- package/dist/worker/transferables.js +61 -0
- package/dist/worker/transferables.js.map +1 -0
- package/docs/API.md +4 -0
- package/package.json +1 -1
- package/src/core/TextureDecode.ts +158 -0
- package/src/core/TextureFormat.ts +23 -2
- package/src/render/DatasetManager.ts +3 -0
- package/src/render/FeatureStyleManager.ts +31 -2
- package/src/render/MergeVertices.ts +56 -0
- package/src/render/S3MViewer.ts +12 -4
- package/src/render/StyleMaterial.ts +6 -0
- package/src/render/TextureFactory.ts +43 -122
- package/src/tileset/S3MTileset.ts +39 -1
- package/src/worker/S3MWorkerClient.ts +150 -0
- package/src/worker/s3mWorker.ts +58 -0
- package/src/worker/transferables.ts +58 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StyleMaterial.js","sourceRoot":"","sources":["../../src/render/StyleMaterial.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"StyleMaterial.js","sourceRoot":"","sources":["../../src/render/StyleMaterial.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* S3M 纹理 → three.js Texture
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* 解码本体已下沉到 core/TextureDecode.ts(three 无关,主线程 / Worker 共用),
|
|
5
|
+
* 本文件只负责两件事:
|
|
6
|
+
* 1. 优先把解码派给 Worker(setTextureOffThreadDecode 注入,S3MViewer 装配),
|
|
7
|
+
* Worker 不可用时用同一份 decodeTextureData 在主线程兜底;
|
|
8
|
+
* 2. 把纯数据解码产物包成 three Texture 并按 atlas / 普通 分别配置采样参数。
|
|
8
9
|
*/
|
|
9
10
|
import * as THREE from 'three';
|
|
10
11
|
import type { S3MTexture } from '../core/types.js';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
readonly BGR: 11;
|
|
14
|
-
readonly ARGB: 12;
|
|
15
|
-
readonly ABGR: 13;
|
|
16
|
-
readonly BGRA: 14;
|
|
17
|
-
readonly RGBA: 28;
|
|
18
|
-
readonly WEBP: 25;
|
|
19
|
-
readonly DXT1: 17;
|
|
20
|
-
readonly DXT3: 19;
|
|
21
|
-
readonly DXT4: 20;
|
|
22
|
-
readonly DXT5: 21;
|
|
23
|
-
readonly CRN_DXT5: 26;
|
|
24
|
-
readonly STANDARD_CRN: 27;
|
|
25
|
-
};
|
|
12
|
+
import type { DecodedTextureData } from '../core/TextureDecode.js';
|
|
13
|
+
export { PixelFormat } from '../core/TextureFormat.js';
|
|
26
14
|
export declare function setMaxAnisotropy(n: number): void;
|
|
27
15
|
export interface DecodedTexture {
|
|
28
16
|
texture: THREE.Texture | null;
|
|
29
17
|
/** 实际走的解码路径,`unsupported(26)` 这类值会进 stats.skipped */
|
|
30
18
|
decoded: string;
|
|
31
19
|
}
|
|
20
|
+
export declare function setTextureOffThreadDecode(fn: ((tex: S3MTexture) => Promise<DecodedTextureData | null>) | null): void;
|
|
32
21
|
export declare function createTexture(tex: S3MTexture | null | undefined): Promise<DecodedTexture>;
|
|
33
22
|
//# sourceMappingURL=TextureFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureFactory.d.ts","sourceRoot":"","sources":["../../src/render/TextureFactory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"TextureFactory.d.ts","sourceRoot":"","sources":["../../src/render/TextureFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GACnE,IAAI,CAEN;AA2CD,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CA4B/F"}
|
|
@@ -1,35 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* S3M 纹理 → three.js Texture
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* 解码本体已下沉到 core/TextureDecode.ts(three 无关,主线程 / Worker 共用),
|
|
5
|
+
* 本文件只负责两件事:
|
|
6
|
+
* 1. 优先把解码派给 Worker(setTextureOffThreadDecode 注入,S3MViewer 装配),
|
|
7
|
+
* Worker 不可用时用同一份 decodeTextureData 在主线程兜底;
|
|
8
|
+
* 2. 把纯数据解码产物包成 three Texture 并按 atlas / 普通 分别配置采样参数。
|
|
8
9
|
*/
|
|
9
10
|
import * as THREE from 'three';
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
import { dxtPixelFormatOf, resolveTextureKind } from '../core/TextureFormat.js';
|
|
13
|
-
export const PixelFormat = {
|
|
14
|
-
RGB: 10,
|
|
15
|
-
BGR: 11,
|
|
16
|
-
ARGB: 12,
|
|
17
|
-
ABGR: 13,
|
|
18
|
-
BGRA: 14,
|
|
19
|
-
RGBA: 28,
|
|
20
|
-
WEBP: 25,
|
|
21
|
-
DXT1: 17,
|
|
22
|
-
DXT3: 19,
|
|
23
|
-
DXT4: 20,
|
|
24
|
-
DXT5: 21,
|
|
25
|
-
CRN_DXT5: 26,
|
|
26
|
-
STANDARD_CRN: 27,
|
|
27
|
-
};
|
|
11
|
+
import { decodeTextureData } from '../core/TextureDecode.js';
|
|
12
|
+
export { PixelFormat } from '../core/TextureFormat.js';
|
|
28
13
|
/** 由 S3MLayer 在拿到 GL 上下文后注入,用于斜视角下保持纹理清晰 */
|
|
29
14
|
let maxAnisotropy = 1;
|
|
30
15
|
export function setMaxAnisotropy(n) {
|
|
31
16
|
maxAnisotropy = Math.max(1, n | 0);
|
|
32
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* 注入「离线解码」实现(S3MViewer 装配:走共享解析 Worker)。
|
|
20
|
+
* 返回 null = Worker 不可用 / 崩溃,createTexture 自动退回主线程 decodeTextureData。
|
|
21
|
+
*/
|
|
22
|
+
let offThreadDecode = null;
|
|
23
|
+
export function setTextureOffThreadDecode(fn) {
|
|
24
|
+
offThreadDecode = fn;
|
|
25
|
+
}
|
|
26
|
+
async function decodeTexture(tex) {
|
|
27
|
+
if (offThreadDecode) {
|
|
28
|
+
const viaWorker = await offThreadDecode(tex);
|
|
29
|
+
if (viaWorker)
|
|
30
|
+
return viaWorker;
|
|
31
|
+
}
|
|
32
|
+
return decodeTextureData(tex);
|
|
33
|
+
}
|
|
33
34
|
function configure(tex, srgb = true) {
|
|
34
35
|
tex.wrapS = THREE.RepeatWrapping;
|
|
35
36
|
tex.wrapT = THREE.RepeatWrapping;
|
|
@@ -62,110 +63,32 @@ function configureAtlas(tex) {
|
|
|
62
63
|
tex.needsUpdate = true;
|
|
63
64
|
return tex;
|
|
64
65
|
}
|
|
65
|
-
/** 行序翻转(原地)。S3MBLOCK 图集按 GL 方向存储(v=0 在最后一行),解码后要翻一次行 */
|
|
66
|
-
function flipRows(rgba, width, height) {
|
|
67
|
-
const row = width * 4;
|
|
68
|
-
const tmp = new Uint8Array(row);
|
|
69
|
-
for (let y = 0; y < height >> 1; y++) {
|
|
70
|
-
const a = y * row;
|
|
71
|
-
const b = (height - 1 - y) * row;
|
|
72
|
-
tmp.set(rgba.subarray(a, a + row));
|
|
73
|
-
rgba.copyWithin(a, b, b + row);
|
|
74
|
-
rgba.set(tmp, b);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/** 该像素格式自带 alpha 通道(DXT1 的 1bit alpha 不算,历史上没开过 alphaTest) */
|
|
78
|
-
function hasAlphaChannel(pixelFormat) {
|
|
79
|
-
return (pixelFormat === PixelFormat.DXT3 ||
|
|
80
|
-
pixelFormat === PixelFormat.DXT4 ||
|
|
81
|
-
pixelFormat === PixelFormat.DXT5 ||
|
|
82
|
-
pixelFormat === PixelFormat.ARGB ||
|
|
83
|
-
pixelFormat === PixelFormat.ABGR ||
|
|
84
|
-
pixelFormat === PixelFormat.BGRA ||
|
|
85
|
-
pixelFormat === PixelFormat.RGBA);
|
|
86
|
-
}
|
|
87
|
-
/** 解 DXT 到 RGBA8。DXT5 是 1 字节/像素,DXT1 是 0.5 字节/像素。 */
|
|
88
|
-
/** DXT 解码只需要尺寸 / 格式 / 字节,CRN 转码出来的结果也走这条路 */
|
|
89
|
-
function decodeDXT(tex) {
|
|
90
|
-
const { width, height, pixelFormat, data } = tex;
|
|
91
|
-
const out = new Uint8Array(width * height * 4);
|
|
92
|
-
DXTTextureDecode.decode(out, width, height, data, pixelFormat);
|
|
93
|
-
if (tex.flipY)
|
|
94
|
-
flipRows(out, width, height);
|
|
95
|
-
const dt = new THREE.DataTexture(out, width, height, THREE.RGBAFormat, THREE.UnsignedByteType);
|
|
96
|
-
if (hasAlphaChannel(pixelFormat))
|
|
97
|
-
dt.userData.s3mHasAlpha = true;
|
|
98
|
-
return dt;
|
|
99
|
-
}
|
|
100
|
-
function fromRawRGB(tex) {
|
|
101
|
-
const { width, height, pixelFormat, data } = tex;
|
|
102
|
-
const out = new Uint8Array(width * height * 4);
|
|
103
|
-
// RGBA / BGRA / ARGB / ABGR 都是 4 字节,前两个是「尾字节是 alpha」,后两个是「首字节是 alpha」
|
|
104
|
-
const hasAlpha = pixelFormat === PixelFormat.RGBA ||
|
|
105
|
-
pixelFormat === PixelFormat.BGRA ||
|
|
106
|
-
pixelFormat === PixelFormat.ARGB ||
|
|
107
|
-
pixelFormat === PixelFormat.ABGR;
|
|
108
|
-
const swapRB = pixelFormat === PixelFormat.BGR || pixelFormat === PixelFormat.BGRA;
|
|
109
|
-
const alphaFirst = pixelFormat === PixelFormat.ARGB || pixelFormat === PixelFormat.ABGR;
|
|
110
|
-
const src = hasAlpha ? 4 : 3;
|
|
111
|
-
for (let i = 0, s = 0, d = 0; i < width * height; i++, s += src, d += 4) {
|
|
112
|
-
const p = alphaFirst ? s + 1 : s;
|
|
113
|
-
out[d] = swapRB ? data[p + 2] : data[p];
|
|
114
|
-
out[d + 1] = data[p + 1];
|
|
115
|
-
out[d + 2] = swapRB ? data[p] : data[p + 2];
|
|
116
|
-
out[d + 3] = hasAlpha ? data[alphaFirst ? s : s + 3] : 255;
|
|
117
|
-
}
|
|
118
|
-
if (tex.flipY)
|
|
119
|
-
flipRows(out, width, height);
|
|
120
|
-
const dt = new THREE.DataTexture(out, width, height, THREE.RGBAFormat, THREE.UnsignedByteType);
|
|
121
|
-
if (hasAlphaChannel(pixelFormat))
|
|
122
|
-
dt.userData.s3mHasAlpha = true;
|
|
123
|
-
return dt;
|
|
124
|
-
}
|
|
125
66
|
export async function createTexture(tex) {
|
|
126
67
|
if (!tex || !tex.width || !tex.height)
|
|
127
68
|
return { texture: null, decoded: 'empty' };
|
|
128
69
|
// 图集纹理(flipY 的原始 DXT 图集 / AtlasPack 拼出来的 RGBA 大图 / leaf 组合画布)都必须
|
|
129
70
|
// 关 GPU mip,层级由 StyleMaterial.s3mAtlasUnit 的内联金字塔自己算。
|
|
130
71
|
const isAtlas = tex.packed === true || tex.flipY === true || tex.composed === true;
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const kind = resolveTextureKind(tex.compressType ?? 0, tex.pixelFormat);
|
|
135
|
-
if (kind === 'crn') {
|
|
136
|
-
try {
|
|
137
|
-
const crn = await transcodeCRN(tex.data);
|
|
138
|
-
const decoded = decodeDXT({
|
|
139
|
-
width: crn.width,
|
|
140
|
-
height: crn.height,
|
|
141
|
-
pixelFormat: crn.dxtFormat === 1 ? 17 : 21,
|
|
142
|
-
data: crn.data,
|
|
143
|
-
});
|
|
144
|
-
return { texture: asAtlas(decoded), decoded: `crn->dxt${crn.dxtFormat}` };
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
72
|
+
const data = await decodeTexture(tex);
|
|
73
|
+
if (!data.rgba && !data.bitmap) {
|
|
74
|
+
if (data.error) {
|
|
147
75
|
// 一张纹理坏了不该带崩整个瓦片,如实上报并降级成无贴图
|
|
148
|
-
console.warn('[s3m] CRN 转码失败:',
|
|
149
|
-
return { texture: null, decoded: 'crn(failed)' };
|
|
76
|
+
console.warn('[s3m] CRN 转码失败:', data.error);
|
|
150
77
|
}
|
|
78
|
+
return { texture: null, decoded: data.kind };
|
|
151
79
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
return { texture: asAtlas(decoded), decoded: kind };
|
|
156
|
-
}
|
|
157
|
-
if (kind === 'webp') {
|
|
158
|
-
const blob = new Blob([tex.data], { type: 'image/webp' });
|
|
159
|
-
const bmp = await createImageBitmap(blob);
|
|
160
|
-
const t = new THREE.Texture(bmp);
|
|
161
|
-
t.needsUpdate = true;
|
|
162
|
-
return { texture: asAtlas(t), decoded: 'webp' };
|
|
80
|
+
let texture;
|
|
81
|
+
if (data.bitmap) {
|
|
82
|
+
texture = new THREE.Texture(data.bitmap);
|
|
163
83
|
}
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
|
|
84
|
+
else {
|
|
85
|
+
const dt = new THREE.DataTexture(data.rgba, data.width, data.height, THREE.RGBAFormat, THREE.UnsignedByteType);
|
|
86
|
+
if (data.hasAlpha)
|
|
87
|
+
dt.userData.s3mHasAlpha = true;
|
|
88
|
+
texture = dt;
|
|
167
89
|
}
|
|
168
|
-
|
|
169
|
-
|
|
90
|
+
texture.needsUpdate = true;
|
|
91
|
+
// flipY 为真即 S3MBLOCK 图集(见 core/types.ts),必须无 mip
|
|
92
|
+
return { texture: isAtlas ? configureAtlas(texture) : configure(texture), decoded: data.kind };
|
|
170
93
|
}
|
|
171
94
|
//# sourceMappingURL=TextureFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureFactory.js","sourceRoot":"","sources":["../../src/render/TextureFactory.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"TextureFactory.js","sourceRoot":"","sources":["../../src/render/TextureFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,15 @@ export interface S3MTilesetOptions {
|
|
|
87
87
|
/** 原始图像/子图集缓存上限(LRU),默认 128 */
|
|
88
88
|
maxImageCache?: number;
|
|
89
89
|
buildTile?: BuildTileFn | null;
|
|
90
|
+
/**
|
|
91
|
+
* 是否用 Web Worker 解析经典 `.s3mb` 瓦片(默认开)。
|
|
92
|
+
*
|
|
93
|
+
* Worker 里跑 parseS3MB 全链路(inflate / Draco / MeshOpt 内联 wasm 解码),
|
|
94
|
+
* 主线程只做 fetch 与几何组装,消除加载阶段的解析卡顿。
|
|
95
|
+
* Worker 创建失败或崩溃时自动**永久**降级回主线程解析,行为与关闭时完全一致。
|
|
96
|
+
* S3MBLOCK 路径(图集补齐与主线程缓存强耦合)暂不进 Worker,仍主线程解析。
|
|
97
|
+
*/
|
|
98
|
+
useWorker?: boolean;
|
|
90
99
|
uniforms?: StyleUniforms | null;
|
|
91
100
|
onTile?: (node: TileNode) => void;
|
|
92
101
|
/** 超过 maxTiles 被淘汰时回调,调用方要自己把场景里的对象和拾取表清掉 */
|
|
@@ -174,6 +183,9 @@ export declare class S3MTileset {
|
|
|
174
183
|
private isS3MV1;
|
|
175
184
|
private _buildTile;
|
|
176
185
|
private readonly _uniforms;
|
|
186
|
+
/** 经典 .s3mb 的 Worker 解析客户端;undefined = 尚未尝试创建,null = 不可用/已降级 */
|
|
187
|
+
private _workerClient;
|
|
188
|
+
private readonly _useWorker;
|
|
177
189
|
private _queue;
|
|
178
190
|
private _active;
|
|
179
191
|
constructor(options: S3MTilesetOptions);
|
|
@@ -234,6 +246,11 @@ export declare class S3MTileset {
|
|
|
234
246
|
private _resolveAnchor;
|
|
235
247
|
private _pickLod;
|
|
236
248
|
private _builder;
|
|
249
|
+
/**
|
|
250
|
+
* 经典 `.s3mb` 瓦片解析:优先走 Worker(把 inflate / Draco / MeshOpt 的 CPU 密集
|
|
251
|
+
* 解码搬离主线程),Worker 不可用或已崩溃时主线程兜底,两条路径输出完全一致。
|
|
252
|
+
*/
|
|
253
|
+
private _parseClassicTile;
|
|
237
254
|
/**
|
|
238
255
|
* 记住一个块文件里解析出来的全部 LOD 组。
|
|
239
256
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3MTileset.d.ts","sourceRoot":"","sources":["../../src/tileset/S3MTileset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"S3MTileset.d.ts","sourceRoot":"","sources":["../../src/tileset/S3MTileset.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* 命中阈值就请求 childTile,实现渐进式细化。
|
|
8
8
|
*/
|
|
9
9
|
import { parseS3MB } from '../core/S3MBParser.js';
|
|
10
|
+
import { getSharedS3MWorker, WorkerDeadError } from '../worker/S3MWorkerClient.js';
|
|
10
11
|
import { composeLeafAtlas, expandTexblockRequestNames, parseS3MBlockGroups, parseTexblockSegments, rebuildBlockTextureState, unpackBlockTextures, } from '../core/S3MBlockParser.js';
|
|
11
12
|
import { evaluateAtlasUpgrade } from '../core/AtlasUpgrade.js';
|
|
12
13
|
function dirOf(url) {
|
|
@@ -237,6 +238,9 @@ export class S3MTileset {
|
|
|
237
238
|
isS3MV1 = false;
|
|
238
239
|
_buildTile;
|
|
239
240
|
_uniforms;
|
|
241
|
+
/** 经典 .s3mb 的 Worker 解析客户端;undefined = 尚未尝试创建,null = 不可用/已降级 */
|
|
242
|
+
_workerClient;
|
|
243
|
+
_useWorker;
|
|
240
244
|
_queue = [];
|
|
241
245
|
_active = 0;
|
|
242
246
|
constructor(options) {
|
|
@@ -251,6 +255,7 @@ export class S3MTileset {
|
|
|
251
255
|
this._buildTile = options.buildTile ?? null;
|
|
252
256
|
// 着色器共享 uniform,由 S3MLayer 持有并传进来
|
|
253
257
|
this._uniforms = options.uniforms ?? null;
|
|
258
|
+
this._useWorker = options.useWorker !== false;
|
|
254
259
|
// 并发与总量限制:iServer 公开服务上别把人家打爆
|
|
255
260
|
this.maxConcurrent = options.maxConcurrent ?? 4;
|
|
256
261
|
this.maxTiles = options.maxTiles ?? 64;
|
|
@@ -566,6 +571,31 @@ export class S3MTileset {
|
|
|
566
571
|
}
|
|
567
572
|
return this._buildTile;
|
|
568
573
|
}
|
|
574
|
+
/**
|
|
575
|
+
* 经典 `.s3mb` 瓦片解析:优先走 Worker(把 inflate / Draco / MeshOpt 的 CPU 密集
|
|
576
|
+
* 解码搬离主线程),Worker 不可用或已崩溃时主线程兜底,两条路径输出完全一致。
|
|
577
|
+
*/
|
|
578
|
+
async _parseClassicTile(buffer) {
|
|
579
|
+
if (this._useWorker && this._workerClient === undefined) {
|
|
580
|
+
// 与纹理解码共用进程级单例,避免每个数据集各起一个 Worker
|
|
581
|
+
this._workerClient = getSharedS3MWorker();
|
|
582
|
+
}
|
|
583
|
+
if (this._workerClient) {
|
|
584
|
+
try {
|
|
585
|
+
return await this._workerClient.parseTile(buffer);
|
|
586
|
+
}
|
|
587
|
+
catch (e) {
|
|
588
|
+
if (e instanceof WorkerDeadError) {
|
|
589
|
+
// 脚本加载失败 / 崩溃属于环境问题,永久退回主线程;瓦片本身的问题照常抛
|
|
590
|
+
this._workerClient = null;
|
|
591
|
+
}
|
|
592
|
+
else {
|
|
593
|
+
throw e;
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
return parseS3MB(buffer);
|
|
598
|
+
}
|
|
569
599
|
/**
|
|
570
600
|
* 记住一个块文件里解析出来的全部 LOD 组。
|
|
571
601
|
*
|
|
@@ -870,7 +900,7 @@ export class S3MTileset {
|
|
|
870
900
|
tile = set.tiles[groupIndex] ?? set.tiles[0];
|
|
871
901
|
}
|
|
872
902
|
else {
|
|
873
|
-
tile = await
|
|
903
|
+
tile = await this._parseClassicTile(buffer);
|
|
874
904
|
}
|
|
875
905
|
}
|
|
876
906
|
if (isBlock) {
|
|
@@ -1156,6 +1186,7 @@ export class S3MTileset {
|
|
|
1156
1186
|
return changed;
|
|
1157
1187
|
}
|
|
1158
1188
|
dispose() {
|
|
1189
|
+
this._workerClient?.dispose();
|
|
1159
1190
|
for (const node of this.nodes.values()) {
|
|
1160
1191
|
node.group.traverse((o) => {
|
|
1161
1192
|
const mesh = o;
|