s3m-three 0.4.18 → 0.4.20

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 (169) hide show
  1. package/dist/browser/assets/s3mWorker-DvAUA8NJ.js +1 -0
  2. package/dist/browser/s3m-three.iife.ext-three.js +619 -304
  3. package/dist/browser/s3m-three.iife.js +647 -332
  4. package/dist/core/Draco.d.ts.map +1 -1
  5. package/dist/core/Draco.js +0 -1
  6. package/dist/core/Draco.js.map +1 -1
  7. package/dist/core/GaussianSplat.d.ts +64 -0
  8. package/dist/core/GaussianSplat.d.ts.map +1 -0
  9. package/dist/core/GaussianSplat.js +139 -0
  10. package/dist/core/GaussianSplat.js.map +1 -0
  11. package/dist/core/S3M1Parser.d.ts +1 -1
  12. package/dist/core/S3M1Parser.d.ts.map +1 -1
  13. package/dist/core/S3M1Parser.js +320 -25
  14. package/dist/core/S3M1Parser.js.map +1 -1
  15. package/dist/core/S3MBParser.d.ts.map +1 -1
  16. package/dist/core/S3MBParser.js +13 -0
  17. package/dist/core/S3MBParser.js.map +1 -1
  18. package/dist/core/S3MBlockParser.d.ts.map +1 -1
  19. package/dist/core/S3MBlockParser.js +83 -28
  20. package/dist/core/S3MBlockParser.js.map +1 -1
  21. package/dist/core/SplatLod.d.ts +36 -0
  22. package/dist/core/SplatLod.d.ts.map +1 -0
  23. package/dist/core/SplatLod.js +54 -0
  24. package/dist/core/SplatLod.js.map +1 -0
  25. package/dist/core/SplatProjection.d.ts +75 -0
  26. package/dist/core/SplatProjection.d.ts.map +1 -0
  27. package/dist/core/SplatProjection.js +162 -0
  28. package/dist/core/SplatProjection.js.map +1 -0
  29. package/dist/core/SplatSort.d.ts +26 -0
  30. package/dist/core/SplatSort.d.ts.map +1 -0
  31. package/dist/core/SplatSort.js +61 -0
  32. package/dist/core/SplatSort.js.map +1 -0
  33. package/dist/core/TexCoordZ.d.ts +94 -0
  34. package/dist/core/TexCoordZ.d.ts.map +1 -0
  35. package/dist/core/TexCoordZ.js +125 -0
  36. package/dist/core/TexCoordZ.js.map +1 -0
  37. package/dist/core/TextureDecode.d.ts +19 -0
  38. package/dist/core/TextureDecode.d.ts.map +1 -1
  39. package/dist/core/TextureDecode.js +53 -11
  40. package/dist/core/TextureDecode.js.map +1 -1
  41. package/dist/core/TileGeometry.d.ts +39 -0
  42. package/dist/core/TileGeometry.d.ts.map +1 -1
  43. package/dist/core/TileGeometry.js +133 -14
  44. package/dist/core/TileGeometry.js.map +1 -1
  45. package/dist/core/degradations.d.ts +37 -0
  46. package/dist/core/degradations.d.ts.map +1 -0
  47. package/dist/core/degradations.js +32 -0
  48. package/dist/core/degradations.js.map +1 -0
  49. package/dist/core/types.d.ts +36 -0
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/index.d.ts +7 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +4 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/render/DatasetManager.d.ts +11 -0
  56. package/dist/render/DatasetManager.d.ts.map +1 -1
  57. package/dist/render/DatasetManager.js +2 -0
  58. package/dist/render/DatasetManager.js.map +1 -1
  59. package/dist/render/FeatureStyleManager.d.ts.map +1 -1
  60. package/dist/render/FeatureStyleManager.js +7 -5
  61. package/dist/render/FeatureStyleManager.js.map +1 -1
  62. package/dist/render/GeometryBuilder.d.ts +31 -0
  63. package/dist/render/GeometryBuilder.d.ts.map +1 -1
  64. package/dist/render/GeometryBuilder.js +229 -6
  65. package/dist/render/GeometryBuilder.js.map +1 -1
  66. package/dist/render/Picker.d.ts.map +1 -1
  67. package/dist/render/Picker.js +19 -5
  68. package/dist/render/Picker.js.map +1 -1
  69. package/dist/render/S3MViewer.d.ts +106 -379
  70. package/dist/render/S3MViewer.d.ts.map +1 -1
  71. package/dist/render/S3MViewer.js +324 -1494
  72. package/dist/render/S3MViewer.js.map +1 -1
  73. package/dist/render/SplatMaterial.d.ts +103 -0
  74. package/dist/render/SplatMaterial.d.ts.map +1 -0
  75. package/dist/render/SplatMaterial.js +388 -0
  76. package/dist/render/SplatMaterial.js.map +1 -0
  77. package/dist/render/SplatSorter.d.ts +14 -0
  78. package/dist/render/SplatSorter.d.ts.map +1 -0
  79. package/dist/render/SplatSorter.js +66 -0
  80. package/dist/render/SplatSorter.js.map +1 -0
  81. package/dist/render/StyleMaterial.d.ts +48 -0
  82. package/dist/render/StyleMaterial.d.ts.map +1 -1
  83. package/dist/render/StyleMaterial.js +292 -69
  84. package/dist/render/StyleMaterial.js.map +1 -1
  85. package/dist/render/TextureFactory.d.ts +10 -0
  86. package/dist/render/TextureFactory.d.ts.map +1 -1
  87. package/dist/render/TextureFactory.js +35 -5
  88. package/dist/render/TextureFactory.js.map +1 -1
  89. package/dist/render/lightingPreset.d.ts +53 -0
  90. package/dist/render/lightingPreset.d.ts.map +1 -0
  91. package/dist/render/lightingPreset.js +36 -0
  92. package/dist/render/lightingPreset.js.map +1 -0
  93. package/dist/render/materialAlpha.d.ts +51 -0
  94. package/dist/render/materialAlpha.d.ts.map +1 -0
  95. package/dist/render/materialAlpha.js +68 -0
  96. package/dist/render/materialAlpha.js.map +1 -0
  97. package/dist/render/viewer/EdgeDecorator.d.ts +206 -0
  98. package/dist/render/viewer/EdgeDecorator.d.ts.map +1 -0
  99. package/dist/render/viewer/EdgeDecorator.js +628 -0
  100. package/dist/render/viewer/EdgeDecorator.js.map +1 -0
  101. package/dist/render/viewer/HeightIndex.d.ts +36 -0
  102. package/dist/render/viewer/HeightIndex.d.ts.map +1 -0
  103. package/dist/render/viewer/HeightIndex.js +98 -0
  104. package/dist/render/viewer/HeightIndex.js.map +1 -0
  105. package/dist/render/viewer/LightRig.d.ts +88 -0
  106. package/dist/render/viewer/LightRig.d.ts.map +1 -0
  107. package/dist/render/viewer/LightRig.js +229 -0
  108. package/dist/render/viewer/LightRig.js.map +1 -0
  109. package/dist/render/viewer/PickService.d.ts +109 -0
  110. package/dist/render/viewer/PickService.d.ts.map +1 -0
  111. package/dist/render/viewer/PickService.js +591 -0
  112. package/dist/render/viewer/PickService.js.map +1 -0
  113. package/dist/render/viewer/SelectionDecorator.d.ts +84 -0
  114. package/dist/render/viewer/SelectionDecorator.d.ts.map +1 -0
  115. package/dist/render/viewer/SelectionDecorator.js +339 -0
  116. package/dist/render/viewer/SelectionDecorator.js.map +1 -0
  117. package/dist/render/viewer/SplatLayer.d.ts +26 -0
  118. package/dist/render/viewer/SplatLayer.d.ts.map +1 -0
  119. package/dist/render/viewer/SplatLayer.js +44 -0
  120. package/dist/render/viewer/SplatLayer.js.map +1 -0
  121. package/dist/render/viewer/types.d.ts +250 -0
  122. package/dist/render/viewer/types.d.ts.map +1 -0
  123. package/dist/render/viewer/types.js +3 -0
  124. package/dist/render/viewer/types.js.map +1 -0
  125. package/dist/tileset/S3MTileset.d.ts +42 -1
  126. package/dist/tileset/S3MTileset.d.ts.map +1 -1
  127. package/dist/tileset/S3MTileset.js +52 -2
  128. package/dist/tileset/S3MTileset.js.map +1 -1
  129. package/dist/vendor/browser-node-stub.js +10 -0
  130. package/dist/worker/s3mWorker.js +1166 -979
  131. package/dist/worker/s3mWorker.js.map +1 -1
  132. package/docs/API.md +55 -1
  133. package/docs/FORMAT-NOTES.md +362 -0
  134. package/package.json +1 -1
  135. package/src/core/Draco.ts +1 -2
  136. package/src/core/GaussianSplat.ts +175 -0
  137. package/src/core/S3M1Parser.ts +330 -24
  138. package/src/core/S3MBParser.ts +18 -0
  139. package/src/core/S3MBlockParser.ts +83 -27
  140. package/src/core/SplatLod.ts +83 -0
  141. package/src/core/SplatProjection.ts +231 -0
  142. package/src/core/SplatSort.ts +92 -0
  143. package/src/core/TexCoordZ.ts +160 -0
  144. package/src/core/TextureDecode.ts +63 -11
  145. package/src/core/TileGeometry.ts +151 -14
  146. package/src/core/degradations.ts +74 -0
  147. package/src/core/types.ts +32 -0
  148. package/src/index.ts +8 -1
  149. package/src/render/DatasetManager.ts +10 -0
  150. package/src/render/FeatureStyleManager.ts +8 -6
  151. package/src/render/GeometryBuilder.ts +271 -7
  152. package/src/render/Picker.ts +21 -5
  153. package/src/render/S3MViewer.ts +358 -1727
  154. package/src/render/SplatMaterial.ts +433 -0
  155. package/src/render/SplatSorter.ts +66 -0
  156. package/src/render/StyleMaterial.ts +339 -69
  157. package/src/render/TextureFactory.ts +39 -5
  158. package/src/render/lightingPreset.ts +76 -0
  159. package/src/render/materialAlpha.ts +75 -0
  160. package/src/render/viewer/EdgeDecorator.ts +722 -0
  161. package/src/render/viewer/HeightIndex.ts +94 -0
  162. package/src/render/viewer/LightRig.ts +267 -0
  163. package/src/render/viewer/PickService.ts +651 -0
  164. package/src/render/viewer/SelectionDecorator.ts +377 -0
  165. package/src/render/viewer/SplatLayer.ts +44 -0
  166. package/src/render/viewer/types.ts +258 -0
  167. package/src/tileset/S3MTileset.ts +78 -2
  168. package/src/vendor/browser-node-stub.js +10 -0
  169. package/dist/browser/assets/s3mWorker-BjPOUgjg.js +0 -1
@@ -139,6 +139,13 @@ export function setMaterialQuality(q) {
139
139
  export function getMaterialQuality() {
140
140
  return materialQuality;
141
141
  }
142
+ let colorPipeline = 'linear';
143
+ export function setColorPipeline(p) {
144
+ colorPipeline = p === 'direct' ? 'direct' : 'linear';
145
+ }
146
+ export function getColorPipeline() {
147
+ return colorPipeline;
148
+ }
142
149
  const DUMMY_DATA = new Float32Array([
143
150
  -1, -1, -1, 0, // Row 0: color rgb, elevation/hidden
144
151
  0, 0, 0, 0, // Row 1: translation xyz, opacity
@@ -155,6 +162,8 @@ DUMMY_BATCH_TEX.needsUpdate = true;
155
162
  export function createSharedUniforms() {
156
163
  return {
157
164
  uMode: { value: STYLE.TEXTURE },
165
+ /** 主光世界方向(direct 管线的官方 Lambert 用;headlamp/fixed 都随 _updateLights 更新) */
166
+ uSunDirection: { value: new THREE.Vector3(0.5, 0.5, 0.7071).normalize() },
158
167
  uColorA: { value: new THREE.Color('#dfe6ee') },
159
168
  uColorB: { value: new THREE.Color('#1d4ed8') },
160
169
  uColorC: { value: new THREE.Color('#fbbf24') },
@@ -190,6 +199,10 @@ export function createSharedUniforms() {
190
199
  uTexMix: { value: 0 },
191
200
  /** 基础底色增益 / 暗部补偿(0~1,默认 0.0) */
192
201
  uAmbientGain: { value: 0 },
202
+ /** 金属度覆盖(<0 = 不覆盖,用材质自身的值) */
203
+ uMetalness: { value: -1 },
204
+ /** 粗糙度覆盖(<0 = 不覆盖,用材质自身的值) */
205
+ uRoughness: { value: -1 },
193
206
  /** 双纹理交叉淡化插值系数(0 = 纯 uBatchTex, 1 = 纯 uBatchTex2) */
194
207
  uBatchMix: { value: 0 },
195
208
  /** GPU 路径数据采样纹理 */
@@ -225,7 +238,8 @@ export function createSharedUniforms() {
225
238
  }
226
239
  const VERT_PARS = /* glsl */ `
227
240
  attribute float aBatchId;
228
- attribute vec3 aColor;
241
+ // vec4:alpha 是「材质不透明、顶点半透明」这类数据的唯一透明度来源(官方 baseColorWithAlpha = vColor)
242
+ attribute vec4 aColor;
229
243
  #ifdef S3M_ATLAS
230
244
  attribute vec4 aAtlasRect;
231
245
  #ifdef S3M_ATLAS_SEC
@@ -240,6 +254,15 @@ const VERT_PARS = /* glsl */ `
240
254
  #ifdef USE_INSTANCING
241
255
  attribute float aInstanceBatchId;
242
256
  #endif
257
+ // uv 第三分量:官方 aTextureCoordMatrix,决定该顶点采不采样纹理 / 用图集哪一块。
258
+ // 解码必须在**顶点着色器**做:z 的量级是 65536~327680,片元里若落到 mediump(fp16
259
+ // 上限 65504)会直接溢出成 inf,官方也是在 VS 解完再用 varying 传。
260
+ #ifdef S3M_TEXCOORD_Z
261
+ attribute float aTexCoordZ;
262
+ varying vec4 vTexMatrix; // x=xTran y=yTran z=scale w=log2(scale*texWidth)
263
+ varying float vTexCoordTransform; // 原始 z,-90000 以下表示不采样
264
+ uniform vec2 uAtlasDim; // 与片元共用:纹理像素尺寸
265
+ #endif
243
266
  uniform float uSelBatch;
244
267
  uniform float uSelWhole;
245
268
  uniform float uSelElevation;
@@ -253,7 +276,7 @@ const VERT_PARS = /* glsl */ `
253
276
  uniform float uPathTime;
254
277
  uniform int uPathTexActive;
255
278
  varying float vBatchId;
256
- varying vec3 vVertColor;
279
+ varying vec4 vVertColor;
257
280
  varying float vWorldZ;
258
281
  varying vec3 vWorldNormal;
259
282
  varying vec3 vWorldPos;
@@ -283,29 +306,37 @@ const VERT_PARS = /* glsl */ `
283
306
 
284
307
  vec4 s3mSampleBatchRow0( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
285
308
  vec4 vA = texture2D( texA, uv );
286
- if ( mixVal <= 0.0001 ) return vA;
287
- vec4 vB = texture2D( texB, uv );
288
- vec4 res = mix( vA, vB, mixVal );
289
- if ( vA.r < 0.0 && vB.r >= 0.0 ) {
290
- res.rgb = vB.rgb;
291
- } else if ( vA.r >= 0.0 && vB.r < 0.0 ) {
292
- res.rgb = vA.rgb;
293
- }
294
- if ( vA.a < -0.5 || vB.a < -0.5 ) {
295
- res.a = ( mixVal >= 0.5 ) ? vB.a : vA.a;
309
+ vec4 res;
310
+ if ( mixVal <= 0.0001 ) {
311
+ res = vA;
312
+ } else {
313
+ vec4 vB = texture2D( texB, uv );
314
+ res = mix( vA, vB, mixVal );
315
+ if ( vA.r < 0.0 && vB.r >= 0.0 ) {
316
+ res.rgb = vB.rgb;
317
+ } else if ( vA.r >= 0.0 && vB.r < 0.0 ) {
318
+ res.rgb = vA.rgb;
319
+ }
320
+ if ( vA.a < -0.5 || vB.a < -0.5 ) {
321
+ res.a = ( mixVal >= 0.5 ) ? vB.a : vA.a;
322
+ }
296
323
  }
297
324
  return res;
298
325
  }
299
326
 
300
327
  vec4 s3mSampleBatchRow1( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
301
328
  vec4 vA = texture2D( texA, uv );
302
- if ( mixVal <= 0.0001 ) return vA;
303
- vec4 vB = texture2D( texB, uv );
304
- vec4 res = mix( vA, vB, mixVal );
305
- if ( vA.a == 0.0 && vB.a > 0.0 ) {
306
- res.a = mix( 1.0, vB.a, mixVal );
307
- } else if ( vA.a > 0.0 && vB.a == 0.0 ) {
308
- res.a = mix( vA.a, 1.0, mixVal );
329
+ vec4 res;
330
+ if ( mixVal <= 0.0001 ) {
331
+ res = vA;
332
+ } else {
333
+ vec4 vB = texture2D( texB, uv );
334
+ res = mix( vA, vB, mixVal );
335
+ if ( vA.a == 0.0 && vB.a > 0.0 ) {
336
+ res.a = mix( 1.0, vB.a, mixVal );
337
+ } else if ( vA.a > 0.0 && vB.a == 0.0 ) {
338
+ res.a = mix( vA.a, 1.0, mixVal );
339
+ }
309
340
  }
310
341
  return res;
311
342
  }
@@ -406,6 +437,31 @@ const VERT_WORLD = /* glsl */ `
406
437
  vWorldPos = s3mWorld.xyz;
407
438
  vBatchId = s3mBatchRaw();
408
439
  vVertColor = aColor;
440
+ #ifdef S3M_TEXCOORD_Z
441
+ // 官方 S3MTilesVS.js:192-198(getTextureMatrixFromZValue)+ bundle getTextureColor
442
+ // 的三档哨兵,档位编码在 vTexMatrix.z 的符号上:
443
+ // -2 → 白(z < -99900 档:官方 texCoordZ < -99900 返回 vec4(1.0),平涂顶点色面)
444
+ // -1 → 平铺(-99900 ≤ z < -9000:uv 原样采样)
445
+ // >0 → 图集子区域公式
446
+ vTexCoordTransform = aTexCoordZ;
447
+ vTexMatrix = vec4( 0.0, 0.0, 1.0, 0.0 );
448
+ if ( vTexCoordTransform < -99900.0 ) {
449
+ vTexMatrix.z = -2.0;
450
+ } else if ( vTexCoordTransform < -9000.0 ) {
451
+ vTexMatrix.z = -1.0;
452
+ } else {
453
+ float s3mNz = floor( vTexCoordTransform );
454
+ if ( s3mNz > 0.0 ) {
455
+ float nDel8 = floor( s3mNz / 256.0 );
456
+ float nDel16 = floor( nDel8 / 256.0 );
457
+ float nDel20 = floor( nDel16 / 16.0 );
458
+ vTexMatrix.x = nDel8 - nDel16 * 256.0;
459
+ vTexMatrix.y = s3mNz - nDel8 * 256.0;
460
+ vTexMatrix.z = 1.0 / pow( 2.0, nDel16 - nDel20 * 16.0 );
461
+ }
462
+ }
463
+ vTexMatrix.w = vTexMatrix.z > 0.0 ? log2( uAtlasDim.x * vTexMatrix.z ) : 0.0;
464
+ #endif
409
465
 
410
466
  #ifdef S3M_ATLAS
411
467
  vAtlasRect = aAtlasRect;
@@ -426,31 +482,85 @@ const VERT_WORLD = /* glsl */ `
426
482
  vS3MViewPos = vViewPosition;
427
483
  `;
428
484
  const FRAG_PARS = /* glsl */ `
485
+ // 纹理像素尺寸:图集分支用它把 rect 换算成像素宽,uv-z 分支用它算 uv 周期。
486
+ // 两个分支都需要,所以无条件声明(值恒为 map 的实际像素尺寸)。
487
+ uniform vec2 uAtlasDim;
488
+
489
+ /**
490
+ * 官方 CalculateMipLevel(vec2 版),逐字照抄 iClient3D 12.1.1。
491
+ * 用**未 fract** 的 uv 求屏幕空间导数 —— 先 fract 再求导会在平铺接缝处炸出
492
+ * 一个巨大导数,GPU 直接把整块砖采成最糊的 mip,表现为每块砖边缘一条暗线。
493
+ */
494
+ void s3mMipLevel( vec2 uv, vec2 texSize, float maxMip, out float mip ) {
495
+ vec2 dx = dFdx( uv * texSize.x );
496
+ vec2 dy = dFdy( uv * texSize.y );
497
+ float dotX = dot( dx, dx );
498
+ float dotY = dot( dy, dy );
499
+ float dMax = max( dotX, dotY );
500
+ float dMin = min( dotX, dotY );
501
+ float off = clamp( ( dMax - dMin ) / max( dMax + dMin, 1e-8 ), 0.0, 1.0 );
502
+ float d = dMax * ( 1.0 - off ) + dMin * off;
503
+ mip = clamp( 0.5 * log2( max( d, 1e-8 ) ), 0.0, maxMip - 1.62 );
504
+ }
505
+
506
+ #ifdef S3M_TEXCOORD_Z
507
+ // 矩阵在顶点着色器解好(vTexMatrix),这里只做 mip 收缩 + 采样。
508
+ varying vec4 vTexMatrix;
509
+
510
+ /**
511
+ * 官方 S3MTilesFS.js 的 getTextureColor → getTexColorForS3M → calculateTexCoord
512
+ * 逐行移植,数学等价物见 core/TexCoordZ.ts(单测钉住两边一致):
513
+ *
514
+ * vTexMatrix.z < 0 → 不采样,返回白(官方 if ( vTexMatrix.z < 0.0 ))
515
+ * fTile = scale * texWidth
516
+ * inner = 2^mip / fTile; f = clamp( fract(uv), inner, 1 - inner )
517
+ * out = ( f + T ) * scale
518
+ *
519
+ * ★ 采样必须用**显式 LOD**(官方 textureLod / texture2DLodEXT)。
520
+ * 交给硬件自动求导时,导数从 (fract(uv)+T)*scale 上取,而 fract 每个周期
521
+ * 都有一次跳变,接缝像素的导数会炸掉 → GPU 采到最糊的 mip,画面上每隔一个
522
+ * 周期就出现一条暗带 / 摩尔纹。近处周期密,这些带子最明显。
523
+ */
524
+ vec4 s3mTexCoordZUnit( vec2 uv, vec4 m, sampler2D tex, float texWidth ) {
525
+ // 官方 bundle getTextureColor 三档语义(逐行核对 SuperMap3D.js):
526
+ // texCoordZ < -99900 → vec4(1.0) 纯白,不采样(平涂顶点色面,如 SMID 3464)
527
+ // texCoordZ < -9000 → uv 原样平铺(自动 mip 平均成贴图色)
528
+ // 其余 → 图集子区域公式
529
+ // 之前误读成「-99999 也平铺」,3464 的米制 uv 就把整张纹理平铺上百次 = 「uv 整图」。
530
+ // 单出口结构:ANGLE 把返回值翻译成 out 参数,函数内提前 return
531
+ // 会让 D3D 编译器报 X4000「use of potentially uninitialized variable」。
532
+ vec4 s3mResult;
533
+ if ( m.z < -1.5 ) {
534
+ s3mResult = vec4( 1.0 );
535
+ } else if ( m.z < 0.0 ) {
536
+ s3mResult = texture2D( tex, uv );
537
+ } else {
538
+ float fTile = max( m.z * texWidth, 1.0 );
539
+ float mip = 0.0;
540
+ s3mMipLevel( uv, vec2( fTile ), m.w, mip );
541
+
542
+ vec2 f = fract( uv );
543
+ float inner = pow( 2.0, mip ) / fTile;
544
+ f = clamp( f, vec2( inner ), vec2( 1.0 - inner ) );
545
+ vec2 c = ( f + m.xy ) * m.z;
546
+
547
+ #if __VERSION__ >= 300
548
+ s3mResult = textureLod( tex, c, mip );
549
+ #else
550
+ s3mResult = texture2D( tex, c );
551
+ #endif
552
+ }
553
+ return s3mResult;
554
+ }
555
+ #endif
429
556
  #ifdef S3M_ATLAS
430
557
  varying vec4 vAtlasRect;
431
- uniform vec2 uAtlasDim;
432
558
  #ifdef S3M_ATLAS_SEC
433
559
  uniform sampler2D uSecMap;
434
560
  uniform vec2 uAtlasDim1;
435
561
  varying vec2 vSecUv;
436
562
  varying vec4 vSecRect;
437
563
  #endif
438
- /**
439
- * 官方 CalculateMipLevel(vec2 版),逐字照抄 iClient3D 12.1.1。
440
- * 用**未 fract** 的 uv 求屏幕空间导数 —— 先 fract 再求导会在平铺接缝处炸出
441
- * 一个巨大导数,GPU 直接把整块砖采成最糊的 mip,表现为每块砖边缘一条暗线。
442
- */
443
- void s3mMipLevel( vec2 uv, vec2 texSize, float maxMip, out float mip ) {
444
- vec2 dx = dFdx( uv * texSize.x );
445
- vec2 dy = dFdy( uv * texSize.y );
446
- float dotX = dot( dx, dx );
447
- float dotY = dot( dy, dy );
448
- float dMax = max( dotX, dotY );
449
- float dMin = min( dotX, dotY );
450
- float off = clamp( ( dMax - dMin ) / max( dMax + dMin, 1e-8 ), 0.0, 1.0 );
451
- float d = dMax * ( 1.0 - off ) + dMin * off;
452
- mip = clamp( 0.5 * log2( max( d, 1e-8 ) ), 0.0, maxMip - 1.62 );
453
- }
454
564
 
455
565
  /**
456
566
  * 按指定 mip 档采样子区域(官方 czm_getTexColorForS3M 的内层循环体)。
@@ -482,17 +592,22 @@ const FRAG_PARS = /* glsl */ `
482
592
  * 因为内联金字塔只有 2 的整数次幂,中间档必须靠混合。
483
593
  */
484
594
  vec4 s3mAtlasUnit( vec2 uv, vec4 rect, vec2 atlasDim, sampler2D tex ) {
485
- // 退化矩形 = 官方 batchId < 0:该纹理单元不参与合成
486
- if ( rect.z <= 0.0 || rect.w <= 0.0 ) return vec4( 1.0 );
487
- vec2 dimPx = vec2( rect.z * atlasDim.x, rect.w * atlasDim.y );
488
- vec2 texSize = vec2( dimPx.x * ( 2.0 / 3.0 ), dimPx.y );
489
- float maxMip = log2( max( min( texSize.x, texSize.y ), 1.0 ) );
490
- vec2 scale = texSize / atlasDim;
491
- float mip = 0.0;
492
- s3mMipLevel( uv, texSize, maxMip, mip );
493
- vec4 hi = s3mAtlasLod( uv, rect.xy, scale, texSize, tex, ceil( mip ) );
494
- vec4 lo = s3mAtlasLod( uv, rect.xy, scale, texSize, tex, floor( mip ) );
495
- return hi * 0.5 + lo * 0.5;
595
+ // 退化矩形 = 官方 batchId < 0:该纹理单元不参与合成(单出口,同 X4000 规避)
596
+ vec4 s3mResult;
597
+ if ( rect.z <= 0.0 || rect.w <= 0.0 ) {
598
+ s3mResult = vec4( 1.0 );
599
+ } else {
600
+ vec2 dimPx = vec2( rect.z * atlasDim.x, rect.w * atlasDim.y );
601
+ vec2 texSize = vec2( dimPx.x * ( 2.0 / 3.0 ), dimPx.y );
602
+ float maxMip = log2( max( min( texSize.x, texSize.y ), 1.0 ) );
603
+ vec2 scale = texSize / atlasDim;
604
+ float mip = 0.0;
605
+ s3mMipLevel( uv, texSize, maxMip, mip );
606
+ vec4 hi = s3mAtlasLod( uv, rect.xy, scale, texSize, tex, ceil( mip ) );
607
+ vec4 lo = s3mAtlasLod( uv, rect.xy, scale, texSize, tex, floor( mip ) );
608
+ s3mResult = hi * 0.5 + lo * 0.5;
609
+ }
610
+ return s3mResult;
496
611
  }
497
612
  #endif
498
613
  uniform int uMode;
@@ -523,11 +638,13 @@ const FRAG_PARS = /* glsl */ `
523
638
  uniform float uRoofThreshold;
524
639
  uniform float uTexMix;
525
640
  uniform float uAmbientGain;
641
+ uniform float uMetalness;
642
+ uniform float uRoughness;
526
643
  uniform float uOpacity;
527
644
  uniform float uTileFade;
528
645
  uniform float uFade;
529
646
  varying float vBatchId;
530
- varying vec3 vVertColor;
647
+ varying vec4 vVertColor;
531
648
  varying float vWorldZ;
532
649
  varying vec3 vWorldNormal;
533
650
  varying vec3 vWorldPos;
@@ -536,29 +653,37 @@ const FRAG_PARS = /* glsl */ `
536
653
 
537
654
  vec4 s3mSampleBatchRow0( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
538
655
  vec4 vA = texture2D( texA, uv );
539
- if ( mixVal <= 0.0001 ) return vA;
540
- vec4 vB = texture2D( texB, uv );
541
- vec4 res = mix( vA, vB, mixVal );
542
- if ( vA.r < 0.0 && vB.r >= 0.0 ) {
543
- res.rgb = vB.rgb;
544
- } else if ( vA.r >= 0.0 && vB.r < 0.0 ) {
545
- res.rgb = vA.rgb;
546
- }
547
- if ( vA.a < -0.5 || vB.a < -0.5 ) {
548
- res.a = ( mixVal >= 0.5 ) ? vB.a : vA.a;
656
+ vec4 res;
657
+ if ( mixVal <= 0.0001 ) {
658
+ res = vA;
659
+ } else {
660
+ vec4 vB = texture2D( texB, uv );
661
+ res = mix( vA, vB, mixVal );
662
+ if ( vA.r < 0.0 && vB.r >= 0.0 ) {
663
+ res.rgb = vB.rgb;
664
+ } else if ( vA.r >= 0.0 && vB.r < 0.0 ) {
665
+ res.rgb = vA.rgb;
666
+ }
667
+ if ( vA.a < -0.5 || vB.a < -0.5 ) {
668
+ res.a = ( mixVal >= 0.5 ) ? vB.a : vA.a;
669
+ }
549
670
  }
550
671
  return res;
551
672
  }
552
673
 
553
674
  vec4 s3mSampleBatchRow1( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
554
675
  vec4 vA = texture2D( texA, uv );
555
- if ( mixVal <= 0.0001 ) return vA;
556
- vec4 vB = texture2D( texB, uv );
557
- vec4 res = mix( vA, vB, mixVal );
558
- if ( vA.a == 0.0 && vB.a > 0.0 ) {
559
- res.a = mix( 1.0, vB.a, mixVal );
560
- } else if ( vA.a > 0.0 && vB.a == 0.0 ) {
561
- res.a = mix( vA.a, 1.0, mixVal );
676
+ vec4 res;
677
+ if ( mixVal <= 0.0001 ) {
678
+ res = vA;
679
+ } else {
680
+ vec4 vB = texture2D( texB, uv );
681
+ res = mix( vA, vB, mixVal );
682
+ if ( vA.a == 0.0 && vB.a > 0.0 ) {
683
+ res.a = mix( 1.0, vB.a, mixVal );
684
+ } else if ( vA.a > 0.0 && vB.a == 0.0 ) {
685
+ res.a = mix( vA.a, 1.0, mixVal );
686
+ }
562
687
  }
563
688
  return res;
564
689
  }
@@ -597,6 +722,10 @@ const FRAG_COLOR = /* glsl */ `
597
722
  vec3 s3mBase = diffuseColor.rgb; // 已含 diffuse × map
598
723
  // 图层整体透明度(共享 uniform)+ 单瓦片淡入系数(逐材质),逐帧改都不产生重编译
599
724
  diffuseColor.a *= uOpacity * uTileFade;
725
+ // 顶点色 alpha:官方 outColor = baseColorWithAlpha * uDiffuseColor,alpha 走的就是这条路。
726
+ // 实测 3D-BIMbuilding-2 / SMID 4421 的材质无纹理、diffuse.a = 1,透明度只存在于
727
+ // 顶点色 alpha(u8 63/255 ≈ 0.247)。不乘进来,这一片就是实心色。
728
+ diffuseColor.a *= vVertColor.a;
600
729
  // 所有按单体取值(配色 / 状态纹理 / 选中判定)都走取整后的 id,避免插值噪声
601
730
  float s3mBid = s3mBatchId();
602
731
 
@@ -608,7 +737,7 @@ const FRAG_COLOR = /* glsl */ `
608
737
  diffuseColor.rgb = uColorA;
609
738
  } else if ( uMode == 1 ) {
610
739
  // 原色:贴图 × 顶点色
611
- diffuseColor.rgb = s3mBase * vVertColor;
740
+ diffuseColor.rgb = s3mBase * vVertColor.rgb;
612
741
  } else if ( uMode == 2 ) {
613
742
  diffuseColor.rgb = uColorA;
614
743
  } else if ( uMode == 3 ) {
@@ -643,7 +772,7 @@ const FRAG_COLOR = /* glsl */ `
643
772
 
644
773
  // 叠加在原色贴图上:保留窗框、玻璃幕墙、材质纹理与顶点色
645
774
  if ( uMode != 1 && uTexMix > 0.001 ) {
646
- vec3 origTex = s3mBase * vVertColor;
775
+ vec3 origTex = s3mBase * vVertColor.rgb;
647
776
  vec3 overlay = origTex * diffuseColor.rgb * 1.35;
648
777
  diffuseColor.rgb = mix( diffuseColor.rgb, overlay, uTexMix );
649
778
  }
@@ -704,6 +833,34 @@ const FRAG_COLOR = /* glsl */ `
704
833
  // 放在前面会被覆盖掉。setMode 的 fade-through 就靠它。
705
834
  diffuseColor.rgb *= uFade;
706
835
  `;
836
+ /**
837
+ * direct 管线(lightingPreset: 'supermap' 完整版)的着色器片段。
838
+ *
839
+ * 官方整条管线(S3MTilesFS.js):贴图字节值不解码 → sRGB 数值空间直乘
840
+ * Lambert(Sun 0.8 / Ambient 0.7,无高光无 tonemap)→ 直出。
841
+ * 我们保留 three 的 sRGB 输出 OETF(不动共享 renderer,底图不受影响),
842
+ * 在片元末尾把颜色先压回 linear,OETF 再把它还原成官方直乘的原始数值。
843
+ */
844
+ const FRAG_DIRECT_PARS = /* glsl */ `
845
+ #ifdef S3M_DIRECT_COLOR
846
+ uniform vec3 uSunDirection;
847
+
848
+ // 精确 sRGB EOTF 逆(与 renderer 输出端的 OETF 互逆),不是 pow 2.2 近似
849
+ vec3 s3mSRGBToLinear( vec3 c ) {
850
+ return mix( c / 12.92, pow( ( c + 0.055 ) / 1.055, vec3( 2.4 ) ), step( vec3( 0.04045 ), c ) );
851
+ }
852
+ #endif
853
+ `;
854
+ const FRAG_DIRECT_MAIN = /* glsl */ `
855
+ #ifdef S3M_DIRECT_COLOR
856
+ // 官方 S3MTilesFS.js:255-263:uDiffuseColor.rgb * (SunLightColor * NdotL + AmbientLightColor)
857
+ // Sun=0.8、Ambient=0.7;uAmbientColor 数据里恒为 (1,1,1),并入常数
858
+ float s3mNL = max( dot( s3mNorm, normalize( uSunDirection ) ), 0.0 );
859
+ vec3 s3mDirectOut = diffuseColor.rgb * ( 0.8 * s3mNL + vec3( 0.7 ) );
860
+ s3mDirectOut = s3mSRGBToLinear( max( s3mDirectOut, vec3( 0.0 ) ) );
861
+ outgoingLight = s3mDirectOut;
862
+ #endif
863
+ `;
707
864
  const FRAG_EMISSIVE = /* glsl */ `
708
865
  float s3mSelE = max( step( 0.0, uSelBatch ) * step( abs( s3mBatchId() - uSelBatch ), 0.5 ), uSelWhole );
709
866
  // glowOnly 模式下表面不自发光,只保留描边边框;其他模式下适度发光
@@ -746,6 +903,23 @@ const FRAG_NORMAL = /* glsl */ `
746
903
  normal = s3mFlatN;
747
904
  }
748
905
  `;
906
+ /**
907
+ * 金属度 / 粗糙度覆盖。
908
+ *
909
+ * 注入点必须是 `#include <metalnessmap_fragment>` 之后 —— 两个 chunk 各自
910
+ * `float roughnessFactor = roughness;` / `float metalnessFactor = metalness;`,
911
+ * 之前引用会「变量未声明」,之后就落在 `lights_physical_fragment` 之前,
912
+ * 改完立刻参与 GGX 计算。
913
+ *
914
+ * 用共享 uniform 而不是改 `material.metalness`:材质是一 mesh 一份,逐 mesh 改是
915
+ * O(meshes);uniform 改一次全场景生效,也能走样式动画插值。
916
+ *
917
+ * 注意:`lambert` 光照模型里没有这两个 include,注入是 no-op,金属度自然无效。
918
+ */
919
+ const FRAG_SURFACE = /* glsl */ `
920
+ if ( uMetalness >= 0.0 ) metalnessFactor = clamp( uMetalness, 0.0, 1.0 );
921
+ if ( uRoughness >= 0.0 ) roughnessFactor = clamp( uRoughness, 0.04, 1.0 );
922
+ `;
749
923
  export function createStyledMaterial(opts) {
750
924
  const uniforms = opts.uniforms;
751
925
  // 两种光照模型共用的参数。注入的 chunk 只动 diffuseColor / normal / transformed,
@@ -788,11 +962,20 @@ export function createStyledMaterial(opts) {
788
962
  const uTileFade = { value: 1 };
789
963
  // 图集材质:只有几何确实带了 aAtlasRect 才开这个宏,否则缺属性会采到 (0,0) 的默认值
790
964
  const atlas = !!opts.atlas && !!opts.map;
965
+ // uv 第三分量:同样要求几何真的带 aTexCoordZ,且没有贴图时没有意义。
966
+ // atlas 优先——S3MBLOCK 图集的 aAtlasRect 已经表达了子区域,两者不会同时出现。
967
+ const texCoordZ = !atlas && !!opts.texCoordZ && !!opts.map;
791
968
  const secMap = atlas ? (opts.secMap ?? null) : null;
792
969
  if (atlas)
793
970
  mat.defines = { ...mat.defines, S3M_ATLAS: '' };
971
+ if (texCoordZ)
972
+ mat.defines = { ...mat.defines, S3M_TEXCOORD_Z: '' };
794
973
  if (secMap)
795
974
  mat.defines = { ...mat.defines, S3M_ATLAS_SEC: '' };
975
+ // supermap 完整版:官方 sRGB 直乘管线(配合 setSrgbTextureDecode(false))
976
+ const direct = colorPipeline === 'direct';
977
+ if (direct)
978
+ mat.defines = { ...mat.defines, S3M_DIRECT_COLOR: '' };
796
979
  // 官方 uTextureDim = (base宽, base高, bake宽, bake高),取实际绑定纹理的像素尺寸
797
980
  const uAtlasDim = { value: new THREE.Vector2(opts.map?.image?.width || 1, opts.map?.image?.height || 1) };
798
981
  const uAtlasDim1 = { value: new THREE.Vector2(secMap?.image?.width || 1, secMap?.image?.height || 1) };
@@ -807,6 +990,8 @@ export function createStyledMaterial(opts) {
807
990
  uBatchTexActive,
808
991
  uTileFade,
809
992
  uSecMap: { value: secMap },
993
+ // direct 管线需要主光方向;没接共享 uniforms 时(单测/独立构建)给个默认值保证能编译
994
+ ...(direct ? { uSunDirection: uniforms?.uSunDirection ?? { value: new THREE.Vector3(0.5, 0.5, 0.7071).normalize() } } : {}),
810
995
  uAtlasDim,
811
996
  uAtlasDim1,
812
997
  });
@@ -816,9 +1001,14 @@ export function createStyledMaterial(opts) {
816
1001
  .replace('#include <begin_vertex>', `#include <begin_vertex>\n${VERT_ELEVATION}`)
817
1002
  .replace('#include <worldpos_vertex>', VERT_WORLD);
818
1003
  shader.fragmentShader = shader.fragmentShader
819
- .replace('#include <common>', `#include <common>\n${FRAG_PARS}`)
1004
+ .replace('#include <common>', `#include <common>\n${FRAG_PARS}${direct ? FRAG_DIRECT_PARS : ''}`)
820
1005
  .replace('#include <color_fragment>', `#include <color_fragment>\n${FRAG_COLOR}`)
821
1006
  .replace('#include <emissivemap_fragment>', `#include <emissivemap_fragment>\n${FRAG_EMISSIVE}`);
1007
+ if (direct) {
1008
+ // s3mNorm(FRAG_COLOR 里定义)之后、three 组装 outgoingLight 之前整体接管:
1009
+ // PBR 的 specular / 环境项全被丢弃 —— 官方模型里 totalSpecularLight 恒为 0
1010
+ shader.fragmentShader = shader.fragmentShader.replace('#include <opaque_fragment>', `${FRAG_DIRECT_MAIN}\n#include <opaque_fragment>`);
1011
+ }
822
1012
  if (atlas) {
823
1013
  // onBeforeCompile 收到的还是未展开的 `#include <map_fragment>`,不是 include 里的
824
1014
  // `texture2D( map, vMapUv )`。只替换后者会静默 no-op,最终仍按整张图集普通采样。
@@ -830,15 +1020,29 @@ export function createStyledMaterial(opts) {
830
1020
  `;
831
1021
  shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', `${atlasMapFragment}${secMap ? `\n${FRAG_BAKE}` : ''}`);
832
1022
  }
1023
+ else if (texCoordZ) {
1024
+ // 普通 S3M + uv 第三分量:逐顶点决定「用不用贴图 / 用哪块子区域」。
1025
+ // 官方就是这个分支让 BIM 的墙体保持纯色(custom0 = -99999 的顶点直接返回白),
1026
+ // 而我们过去一律整张平铺,才会出现「一个面重复铺满整张 uv 贴片」。
1027
+ const texCoordZFragment = /* glsl */ `
1028
+ #ifdef USE_MAP
1029
+ diffuseColor *= s3mTexCoordZUnit( vMapUv, vTexMatrix, map, uAtlasDim.x );
1030
+ #endif
1031
+ `;
1032
+ shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', texCoordZFragment);
1033
+ }
833
1034
  else if (secMap) {
834
1035
  shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', `#include <map_fragment>\n${FRAG_BAKE}`);
835
1036
  }
836
1037
  // 平面 / 平滑着色:运行期分支(见 FRAG_NORMAL),不再依赖 flatShading define
837
1038
  shader.fragmentShader = shader.fragmentShader.replace('#include <normal_fragment_begin>', `#include <normal_fragment_begin>\n${FRAG_NORMAL}`);
1039
+ // 金属度 / 粗糙度覆盖:紧跟在 metalnessmap_fragment 之后
1040
+ // (lambert 模板里没有这个 include,replace 会静默 no-op,符合预期)
1041
+ shader.fragmentShader = shader.fragmentShader.replace('#include <metalnessmap_fragment>', `#include <metalnessmap_fragment>\n${FRAG_SURFACE}`);
838
1042
  };
839
1043
  // 不同材质共用同一段注入代码,必须让 three 认为它们的 program 可复用;
840
1044
  // 但图集 / 烘焙两套宏会改注入结果,必须进 cacheKey,否则会复用错 program。
841
- mat.customProgramCacheKey = () => `s3m-styled${atlas ? '-atlas' : ''}${secMap ? '-bake' : ''}`;
1045
+ mat.customProgramCacheKey = () => `s3m-styled${atlas ? '-atlas' : ''}${texCoordZ ? '-texz' : ''}${secMap ? '-bake' : ''}${direct ? '-direct' : ''}`;
842
1046
  mat.userData.uSelBatch = uSelBatch;
843
1047
  mat.userData.uSelWhole = uSelWhole;
844
1048
  // 拾取材质要读这些共享 uniform 的当前值:挂引用而不是拷数值,主材质更新后拾取自动跟上
@@ -861,6 +1065,25 @@ export function createStyledMaterial(opts) {
861
1065
  mat.userData.isStyled = true;
862
1066
  return mat;
863
1067
  }
1068
+ /**
1069
+ * 恢复材质的「基础」混合状态(淡入结束 / 清除单体淡化 / 全局透明度滑回 1 时调用)。
1070
+ *
1071
+ * 材质的最终透明 = **自身语义透明**(alphaMode blend / 顶点色 alpha < 1 / 水面,
1072
+ * 创建时算好记在 `userData.s3mOpts.transparent`)|| 图层全局半透明。
1073
+ *
1074
+ * 以前各处恢复逻辑只看图层透明度(`transparent && !layerTransparent → false`),
1075
+ * 会把自身就是透明的材质(如 3D-BIMbuilding-2 的 SMID 4421)误关成不透明——
1076
+ * 症状是「刚进场景没透明度,切换材质质感重建后又有了」。
1077
+ *
1078
+ * depthWrite 跟随:自身 blend 材质保持创建时的 false;临时透明(淡入 / 全局淡出)
1079
+ * 则尊重调用方的 keepDepthWrite(默认 true,保持深度写入防漏背面)。
1080
+ */
1081
+ export function restoreBaseBlendState(mat, layerTransparent, keepDepthWrite = true) {
1082
+ const opts = mat.userData?.s3mOpts;
1083
+ const baseTransparent = opts?.transparent === true;
1084
+ mat.transparent = baseTransparent || layerTransparent;
1085
+ mat.depthWrite = baseTransparent ? false : mat.transparent ? keepDepthWrite : true;
1086
+ }
864
1087
  /* ------------------------------------------------------------------ 选中描边 */
865
1088
  const OUTLINE_VERT = /* glsl */ `
866
1089
  attribute float aBatchId;
@@ -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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"}
@@ -12,6 +12,13 @@ import type { S3MTexture } from '../core/types.js';
12
12
  import type { DecodedTextureData } from '../core/TextureDecode.js';
13
13
  export { PixelFormat } from '../core/TextureFormat.js';
14
14
  export declare function setMaxAnisotropy(n: number, cap?: number): void;
15
+ /**
16
+ * 单独调各向异性上限(只影响之后创建的纹理)。
17
+ * supermap 预设会设成 1 —— 官方 iClient3D 不开各向异性,斜视角直接采高 mip
18
+ * 平均成纯色;我们默认拉满(Infinity)是为了倾斜摄影立面清晰度,代价是
19
+ * 米制平铺纹理的远处高频纹(点阵/砖缝)被硬保下来,怎么调光照都"不像官方"。
20
+ */
21
+ export declare function setAnisotropyCap(cap: number): void;
15
22
  export declare function setMaxTextureSize(n: number): void;
16
23
  export declare function setCompressedTexturesSupported(v: boolean): void;
17
24
  export interface DecodedTexture {
@@ -20,5 +27,8 @@ export interface DecodedTexture {
20
27
  decoded: string;
21
28
  }
22
29
  export declare function setTextureOffThreadDecode(fn: ((tex: S3MTexture, compressed: boolean, maxSize?: number) => Promise<DecodedTextureData | null>) | null): void;
30
+ /** 切换纹理解码(只影响之后创建的纹理,已上传 GPU 的不受影响) */
31
+ export declare function setSrgbTextureDecode(v: boolean): void;
32
+ export declare function getSrgbTextureDecode(): boolean;
23
33
  export declare function createTexture(tex: S3MTexture | null | undefined): Promise<DecodedTexture>;
24
34
  //# sourceMappingURL=TextureFactory.d.ts.map
@@ -1 +1 @@
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;AAcvD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAW,GAAG,IAAI,CAGhE;AAQD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAEjD;AAUD,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAC1G,IAAI,CAEN;AA+CD,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAkD/F"}
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;AAcvD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAW,GAAG,IAAI,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAElD;AAQD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAEjD;AAUD,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAE/D;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAC1G,IAAI,CAEN;AAuBD,uCAAuC;AACvC,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAErD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAmCD,wBAAsB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAwD/F"}