s3m-three 0.3.14 → 0.4.15

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.
@@ -83,6 +83,26 @@ export const DEFAULT_STYLE = {
83
83
  depthWrite: true,
84
84
  fadeIn: 0,
85
85
  };
86
+ /**
87
+ * 当前光照模型。模块级全局 —— 与 anisotropy / maxTextureSize 同一套设计,
88
+ * 同页多个图层会互相覆盖,后创建的那个决定全局。只影响**之后创建**的材质。
89
+ */
90
+ let materialQuality = 'pbr';
91
+ /**
92
+ * 切换光照模型。
93
+ *
94
+ * 'pbr'(默认)= `MeshStandardMaterial`,GGX + 环境球谐,质感最好也最贵。
95
+ * 'lambert' = `MeshLambertMaterial`,只保留漫反射 + 平行光,片元开销约省一半;
96
+ * 白模 / 纯色 / 按高度着色这类不需要高光的模式,肉眼差别很小。
97
+ *
98
+ * 注意:只影响之后创建的材质 —— 已加载的瓦片要重新加载才会换。
99
+ */
100
+ export function setMaterialQuality(q) {
101
+ materialQuality = q === 'lambert' ? 'lambert' : 'pbr';
102
+ }
103
+ export function getMaterialQuality() {
104
+ return materialQuality;
105
+ }
86
106
  const DUMMY_DATA = new Float32Array([
87
107
  -1, -1, -1, 0, // Row 0: color rgb, elevation/hidden
88
108
  0, 0, 0, 0, // Row 1: translation xyz, opacity
@@ -659,11 +679,11 @@ const FRAG_BAKE = /* glsl */ `
659
679
  */
660
680
  export function createStyledMaterial(opts) {
661
681
  const uniforms = opts.uniforms;
662
- const mat = new THREE.MeshStandardMaterial({
682
+ // 两种光照模型共用的参数。注入的 chunk 只动 diffuseColor / normal / transformed,
683
+ // 在 Standard 与 Lambert 的 shader 里都存在同名 include,所以模板不用分支。
684
+ const baseParams = {
663
685
  color: opts.color ?? new THREE.Color(0xffffff),
664
686
  map: opts.map ?? null,
665
- roughness: opts.roughness ?? 0.95,
666
- metalness: 0,
667
687
  side: opts.side ?? THREE.DoubleSide,
668
688
  transparent: !!opts.transparent,
669
689
  opacity: opts.opacity ?? 1,
@@ -674,7 +694,14 @@ export function createStyledMaterial(opts) {
674
694
  // 顶点色、贴图全部在自定义 chunk 里处理,不让 three 插手
675
695
  vertexColors: false,
676
696
  alphaTest: opts.alphaTest ?? 0,
677
- });
697
+ };
698
+ const mat = (materialQuality === 'lambert'
699
+ ? new THREE.MeshLambertMaterial(baseParams)
700
+ : new THREE.MeshStandardMaterial({
701
+ ...baseParams,
702
+ roughness: opts.roughness ?? 0.95,
703
+ metalness: 0,
704
+ }));
678
705
  // 选中单体编号:每个 Mesh 独立,默认 -1 表示无选中
679
706
  const uSelBatch = { value: -1 };
680
707
  // 没有单体化信息的几何(batchId = -1)只能整块选中
@@ -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":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,+BAA+B;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,CAAC,EAAE,sBAAsB;IAChC,OAAO,EAAE,CAAC,EAAE,cAAc;IAC1B,KAAK,EAAE,CAAC,EAAE,KAAK;IACf,MAAM,EAAE,CAAC,EAAE,UAAU;IACrB,MAAM,EAAE,CAAC,EAAE,wBAAwB;IACnC,KAAK,EAAE,CAAC,EAAE,gBAAgB;IAC1B,OAAO,EAAE,CAAC,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,CAAC,EAAE,yBAAyB;IACtC,MAAM,EAAE,CAAC,EAAE,yBAAyB;CAC5B,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAA8B;IACrD,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI;IACnB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI;IACrB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI;IACnB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;IACpB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IACvB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO;IACzB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;CACtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,wBAAwB;IACxB,OAAO,EAAE,SAAS;IAClB,iCAAiC;IACjC,OAAO,EAAE,SAAS;IAClB,4BAA4B;IAC5B,QAAQ,EAAE,UAAU;IACpB,uBAAuB;IACvB,SAAS,EAAE,UAAU;CACb,CAAC;AAIX,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB;IACvC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB;IACvC,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,iBAAiB;IACzC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,cAAc;CACxC,CAAC;AA4EF,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,IAAI,EAAE,KAAK,CAAC,OAAO;IACnB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,WAAW,CAAC,OAAO;IAC/B,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,CAAC;IAClB,WAAW,EAAE,oBAAoB;IACjC,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,GAAG;IACjB,cAAc,EAAE,CAAC;IACjB,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,GAAG;IAChB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;CACV,CAAC;AAKF;;;GAGG;AACH,IAAI,eAAe,GAAoB,KAAK,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAkB;IACnD,eAAe,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAC;AACzB,CAAC;AAiBD,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,qCAAqC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAK,kCAAkC;IACjD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAK,4BAA4B;IAC3C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAK,4BAA4B;IAC3C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAK,4BAA4B;IAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAI,kDAAkD;CAClE,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAC1G,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;AAChD,eAAe,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;AAChD,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC;AAEnC,gDAAgD;AAChD,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;QAC/B,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAC9C,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAC9C,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACnB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACxB,UAAU,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QAC1B,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QAC5B,gCAAgC;QAChC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QAClB,wBAAwB;QACxB,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC3B,eAAe;QACf,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAChD,sBAAsB;QACtB,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACrB,8EAA8E;QAC9E,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACtB,kCAAkC;QAClC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5B,2BAA2B;QAC3B,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC7B,yBAAyB;QACzB,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QAC3B,aAAa;QACb,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE;QAC9B,aAAa;QACb,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC7B,eAAe;QACf,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACjC,+BAA+B;QAC/B,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/B,sCAAsC;QACtC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACrB,gCAAgC;QAChC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QAC1B,qDAAqD;QACrD,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACvB,mBAAmB;QACnB,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,EAAE;QAClD,2BAA2B;QAC3B,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACxB,oCAAoC;QACpC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QAC5B,mBAAmB;QACnB,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACvB;;;;;;WAMG;QACH,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACtB,4CAA4C;QAC5C,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;QACvB;;;WAGG;QACH,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;KACpB,CAAC;AACJ,CAAC;AACD,MAAM,SAAS,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoF5B,CAAC;AAEF,MAAM,UAAU,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsE7B,CAAC;AAEF,MAAM,cAAc,GAAG,UAAU,CAAC;;;;;;;;;;;;;;CAcjC,CAAC;AAEF,MAAM,UAAU,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAC;AAEF,MAAM,SAAS,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoK5B,CAAC;AAEF,MAAM,UAAU,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+G7B,CAAC;AAEF,MAAM,aAAa,GAAG,UAAU,CAAC;;;;;;;;;;CAUhC,CAAC;AAEF,MAAM,SAAS,GAAG,UAAU,CAAC;;;;;;CAM5B,CAAC;AAmBF;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA2B;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,gEAAgE;IAChE,yDAAyD;IACzD,MAAM,UAAU,GAAG;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9C,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU;QACnC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC;QAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC3C,yCAAyC;QACzC,4BAA4B;QAC5B,WAAW,EAAE,IAAI,CAAC,WAAW,KAAK,KAAK;QACvC,qCAAqC;QACrC,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;KAC/B,CAAC;IACF,MAAM,GAAG,GAAG,CACV,eAAe,KAAK,SAAS;QAC3B,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC;QAC3C,CAAC,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC;YAC7B,GAAG,UAAU;YACb,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,SAAS,EAAE,CAAC;SACb,CAAC,CACW,CAAC;IAEpB,gCAAgC;IAChC,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;IAChC,iCAAiC;IACjC,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC9C,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACtC,MAAM,eAAe,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACrC,4CAA4C;IAC5C,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAE/B,qDAAqD;IACrD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,IAAI,KAAK;QAAE,GAAG,CAAC,OAAO,GAAG,EAAE,GAAI,GAAG,CAAC,OAAkC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACvF,IAAI,MAAM;QAAE,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IAChE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;IAC1G,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;IAEvG,GAAG,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,EAAE;QAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACvC,SAAS;YACT,SAAS;YACT,SAAS;YACT,UAAU;YACV,cAAc;YACd,eAAe;YACf,SAAS;YACT,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAC1B,SAAS;YACT,UAAU;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;aACtC,OAAO,CAAC,mBAAmB,EAAE,sBAAsB,SAAS,EAAE,CAAC;aAC/D,OAAO,CAAC,+BAA+B,EAAE,kCAAkC,UAAU,EAAE,CAAC;aACxF,OAAO,CAAC,yBAAyB,EAAE,4BAA4B,cAAc,EAAE,CAAC;aAChF,OAAO,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;QAErD,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc;aAC1C,OAAO,CAAC,mBAAmB,EAAE,sBAAsB,SAAS,EAAE,CAAC;aAC/D,OAAO,CAAC,2BAA2B,EAAE,8BAA8B,UAAU,EAAE,CAAC;aAChF,OAAO,CAAC,iCAAiC,EAAE,oCAAoC,aAAa,EAAE,CAAC,CAAC;QAEnG,IAAI,KAAK,EAAE,CAAC;YACV,oEAAoE;YACpE,0DAA0D;YAC1D,MAAM,gBAAgB,GAAG,UAAU,CAAC;;;;;OAKnC,CAAC;YACF,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CACnD,yBAAyB,EACzB,GAAG,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,yBAAyB,EAAE,4BAA4B,SAAS,EAAE,CAAC,CAAC;QAC5H,CAAC;IACH,CAAC,CAAC;IAEF,6CAA6C;IAC7C,iDAAiD;IACjD,GAAG,CAAC,qBAAqB,GAAG,GAAG,EAAE,CAC/B,aAAa,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAE/D,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,iDAAiD;IACjD,+BAA+B;IAC/B,GAAG,CAAC,QAAQ,CAAC,aAAa,GAAG,QAAQ,EAAE,aAAa,CAAC;IACrD,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,EAAE,SAAS,CAAC;IAC7C,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC;IAC3C,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,EAAE,UAAU,CAAC;IAC/C,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,QAAQ,EAAE,SAAS,CAAC;IAC7C,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAAE,cAAc,CAAC;IACvD,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;IAC7C,GAAG,CAAC,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC;IAC/C,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAE7E,MAAM,YAAY,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmG/B,CAAC;AAEF,MAAM,YAAY,GAAG,UAAU,CAAC;;;;;;;CAO/B,CAAC;AAqBF,uBAAuB;AACvB,MAAM,UAAU,qBAAqB,CAAC,MAAqB,EAAE,YAAY,GAAG,GAAG;IAC7E,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC;QACnC,QAAQ,EAAE;YACR,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;YACxB,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACvB,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YAC/B,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACxB,SAAS,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YACrC,UAAU,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;YAC3C,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YAC9B,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,EAAE;YACrE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;YAC7C,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;YACrD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;YAC3C,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE;SAClD;QACD,YAAY,EAAE,YAAY;QAC1B,cAAc,EAAE,YAAY;QAC5B,IAAI,EAAE,KAAK,CAAC,QAAQ;QACpB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,+BAA+B;QAC/B,aAAa,EAAE,IAAI;QACnB,mBAAmB,EAAE,CAAC;QACtB,kBAAkB,EAAE,CAAC;KACtB,CAAoB,CAAC;IACrB,GAAG,CAAC,QAAoC,CAAC,SAAS,GAAG,IAAI,CAAC;IAC3D,OAAO,GAAG,CAAC;AACb,CAAC"}
package/docs/API.md CHANGED
@@ -173,6 +173,8 @@ new S3MViewer(options?: S3MViewerOptions)
173
173
  | `lodPixelRatioCap` | `number` | `Infinity` | LOD 判定屏幕高度的 **DPR 上限**(不截断)。默认按 `canvasHeight` 物理像素算,与官方 `calcPixFromCam` 同口径;3x DPR 手机上由此会多细化、多拉瓦片,传 `2` 即按「CSS 高度 × 2」截断 |
174
174
  | `anisotropyCap` | `number` | `Infinity` | 各向异性过滤上限(不封顶 = 取 GPU 最大值,通常 16)。移动端封到 4 / 8 肉眼通常无差,采样成本明显下降。只影响之后创建的纹理 |
175
175
  | `maxTextureSize` | `number` | `Infinity` | 纹理长边像素上限(不限制)。非图集的 RGBA / WebP 产物按 2× 盒式滤波减半到上限内;DXT 压缩直传与图集不受影响 |
176
+ | `maxImageCache` | `number` | `128` | 纹理缓存条数上限。一条 = 一张已解码的瓦片纹理,1024² RGBA 约 4MB,128 条即约 512MB 显存;低端设备 32~48。LRU,降下来下次淘汰时释放 |
177
+ | `materialQuality` | `'pbr' \| 'lambert'` | `'pbr'` | 光照模型。`lambert` 用 `MeshLambertMaterial` 替换 PBR,去掉 GGX 与环境球谐,片元约省一半;白模 / 纯色 / 按高度着色几乎无差。模块级全局,只影响之后创建的材质 |
176
178
  | `buildTile` | `BuildTileFn \| null` | — | 自定义瓦片构建器(测试 / 服务端渲染时注入) |
177
179
  | `attributes` | `AttributeQueryOptions` | — | 业务属性查询配置,配了才能 `colorByField()`,见[按业务字段着色](#按业务字段着色) |
178
180
  | `onRequestRepaint` | `() => void` | — | 宿主请求重画的信号:纯 three 宿主接自己的渲染循环 |
@@ -378,6 +380,7 @@ setAnisotropyCap(cap: number): void // Infinity = 取 GPU 最大值(
378
380
  readonly anisotropyCap: number
379
381
  setMaxTextureSize(n: number): void // Infinity = 不限制(默认)
380
382
  readonly maxTextureSize: number
383
+ readonly maxImageCache: number
381
384
  readonly stats: Stats
382
385
  readonly fps: number
383
386
  getBounds(): [[number, number], [number, number]] | null // 合并经纬度范围
@@ -1207,6 +1210,8 @@ buildAttributes({ smid, box, triangles, floorHeight }) // → S3MFeatureAttribu
1207
1210
  | `lodPixelRatioCap` | LOD 判定用屏幕高度的 DPR 上限,默认不截断。见下方「移动端 / 差设备」 |
1208
1211
  | `anisotropyCap` | 各向异性过滤上限,默认取 GPU 最大值。移动端 4 / 8 通常肉眼无差 |
1209
1212
  | `maxTextureSize` | 纹理长边像素上限,默认不限制。手机上 1024 即可,显存降到 1/4 |
1213
+ | `maxImageCache` | 纹理缓存条数,默认 128。低端机 32~48,和 `maxTextureSize` 一起管显存 |
1214
+ | `materialQuality: 'lambert'` | 换成 Lambert 光照,片元约省一半。白模 / 按高度配色看不出差别,贴图模式会略平 |
1210
1215
  | `maxImageCache` | 原始图集与 leaf 段图像记录的 LRU 缓存容量上限(默认 128),超限自动淘汰旧缓存,防止漫游时内存不断累积 |
1211
1216
  | 纹理引用计数 | 瓦片淘汰时按引用计数释放未被其他瓦片复用的 `Texture` 并调用 `dispose()`,真正归还 GPU 显存 |
1212
1217
  | 几何/材质深度释放 | 瓦片注销时深度遍历对象树,彻底释放 `Mesh`、`Points`(点云/高斯泼溅)以及 `LineSegments`(棱线包)的 `BufferGeometry` 与材质 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "s3m-three",
3
- "version": "0.3.14",
3
+ "version": "0.4.15",
4
4
  "description": "SuperMap S3M 三维模型格式的 three.js 渲染内核:浏览器内直接解析 .s3mb 瓦片,无需转 3D Tiles,支持 LOD 调度、白膜/按高度/按单体/动态扫描着色、单体级 GPU 拾取。宿主无关,可单独用于任意 three 场景。",
5
5
  "type": "module",
6
6
  "repository": {
package/src/index.ts CHANGED
@@ -120,7 +120,8 @@ export {
120
120
  createStyledMaterial,
121
121
  createOutlineMaterial,
122
122
  } from './render/StyleMaterial.js';
123
- export type { StyleMode, SelectMode, StyledMaterial, StyledMaterialOptions, OutlineMaterial } from './render/StyleMaterial.js';
123
+ export type { StyleMode, SelectMode, StyledMaterial, StyledMaterialOptions, OutlineMaterial, MaterialQuality } from './render/StyleMaterial.js';
124
+ export { setMaterialQuality, getMaterialQuality } from './render/StyleMaterial.js';
124
125
 
125
126
  export { Picker } from './render/Picker.js';
126
127
  export type { PickHit } from './render/Picker.js';
@@ -22,6 +22,8 @@ export interface S3MDatasetOptions {
22
22
  maxTiles?: number;
23
23
  /** 该数据集驻留三角形总数的软上限(默认跟随图层级设置;都不传则不限制) */
24
24
  maxTriangles?: number;
25
+ /** 该数据集的纹理缓存条数上限(默认跟随图层级设置,图层不传则 128) */
26
+ maxImageCache?: number;
25
27
  lodRangeScale?: number;
26
28
  /**
27
29
  * 垂直对齐基准(默认 'origin'):
@@ -167,7 +169,8 @@ export class DatasetManager {
167
169
  maxTiles: number,
168
170
  maxConcurrent: number,
169
171
  callbacks: DatasetManagerCallbacks,
170
- maxTriangles: number = Infinity
172
+ maxTriangles: number = Infinity,
173
+ maxImageCache: number = 128
171
174
  ): Promise<S3MDatasetEntry> {
172
175
  const existing = this.datasets.get(ds.id);
173
176
  if (existing) return existing;
@@ -198,6 +201,7 @@ export class DatasetManager {
198
201
  maxTiles: ds.maxTiles ?? maxTiles,
199
202
  maxConcurrent: maxConcurrent,
200
203
  maxTriangles: ds.maxTriangles ?? maxTriangles,
204
+ maxImageCache: ds.maxImageCache ?? maxImageCache,
201
205
  lodRangeScale: ds.lodRangeScale ?? defaultLodRangeScale,
202
206
  buildTile: buildTile ?? null,
203
207
  useWorker: ds.useWorker,
@@ -24,6 +24,7 @@ import * as THREE from 'three';
24
24
  import { S3MTileset, usableGeoBounds } from '../tileset/S3MTileset.js';
25
25
  import type { BuildTileFn, TileNode } from '../tileset/S3MTileset.js';
26
26
  import { setMaxAnisotropy, setCompressedTexturesSupported, setTextureOffThreadDecode, setMaxTextureSize as setTextureSizeCap } from './TextureFactory.js';
27
+ import { setMaterialQuality } from './StyleMaterial.js';
27
28
  import { decodeTextureWithWorker } from '../worker/S3MWorkerClient.js';
28
29
  import {
29
30
  STYLE,
@@ -235,6 +236,12 @@ export interface S3MViewerOptions {
235
236
  * 见 `S3MTilesetOptions.maxTriangles`:瓦片数管不住的场景(精模、大面片)用这条刹车。
236
237
  */
237
238
  maxTriangles?: number;
239
+ /**
240
+ * 纹理缓存条数上限(默认 128)。一条对应一张已解码的瓦片纹理,
241
+ * 1024² 的 RGBA 一张约 4MB,128 条就是 512MB 显存 —— 低端设备建议 32~48。
242
+ * 与 `maxTextureSize` 配合使用:后者降单张尺寸,这条降张数。
243
+ */
244
+ maxImageCache?: number;
238
245
  /**
239
246
  * 各向异性过滤上限(默认不封顶,取 GPU 报的最大值,通常 16)。
240
247
  * 移动端封到 4 或 8 肉眼通常无差,采样成本明显下降。只影响**之后创建**的纹理。
@@ -246,6 +253,17 @@ export interface S3MViewerOptions {
246
253
  * 图集(UV 已重映射)不受影响。手机上 1024 与 2048 肉眼几乎无差,显存差 4 倍。
247
254
  */
248
255
  maxTextureSize?: number;
256
+ /**
257
+ * 光照模型(默认 `'pbr'`)。
258
+ *
259
+ * - `'pbr'`:`MeshStandardMaterial`,GGX + 环境球谐,质感最好也最贵
260
+ * - `'lambert'`:`MeshLambertMaterial`,只保留漫反射 + 平行光,片元开销约省一半;
261
+ * 白模 / 纯色 / 按高度着色这类不需要高光的模式肉眼差别很小
262
+ *
263
+ * 模块级全局状态:同页多个图层会互相覆盖,后创建的那个决定全局。
264
+ * 只影响**之后创建**的材质 —— 已加载的瓦片要重新加载才会换。
265
+ */
266
+ materialQuality?: 'pbr' | 'lambert';
249
267
  /** 自定义瓦片构建器(测试 / 服务端渲染时注入) */
250
268
  buildTile?: BuildTileFn | null;
251
269
  /**
@@ -492,6 +510,8 @@ export class S3MViewer {
492
510
  attributeQuery: AttributeQuery | null = null;
493
511
 
494
512
  private readonly _enuMatrix = new THREE.Matrix4();
513
+ /** 每帧复用:MVP 来自宿主,不要每帧 new(高频分配会带来 GC 抖动) */
514
+ private readonly _frameMvp = new THREE.Matrix4();
495
515
  /** 颜色换算用的临时对象,避免每帧 new */
496
516
  private readonly _colorScratch = new THREE.Color();
497
517
  private _needsRepaint = true;
@@ -540,6 +560,7 @@ export class S3MViewer {
540
560
  this._lodRangeScale = options.lodRangeScale ?? 1.0;
541
561
  this._lodPixelRatioCap = options.lodPixelRatioCap ?? Infinity;
542
562
  setTextureSizeCap(options.maxTextureSize ?? Infinity);
563
+ setMaterialQuality(options.materialQuality ?? 'pbr');
543
564
  if (options.light) {
544
565
  Object.assign(this._lightOptions, options.light);
545
566
  }
@@ -885,7 +906,8 @@ export class S3MViewer {
885
906
  this._requestRepaint();
886
907
  },
887
908
  },
888
- this.options.maxTriangles ?? Infinity
909
+ this.options.maxTriangles ?? Infinity,
910
+ this.options.maxImageCache ?? 128
889
911
  );
890
912
  return entry;
891
913
  }
@@ -2311,7 +2333,7 @@ export class S3MViewer {
2311
2333
  const camera = this.camera;
2312
2334
  if (!r || !scene || !camera) return;
2313
2335
 
2314
- const mats: THREE.MeshStandardMaterial[] = [];
2336
+ const mats: StyledMaterial[] = [];
2315
2337
  const seen = new Set<THREE.Material>();
2316
2338
  for (const p of this._pickables.values()) {
2317
2339
  const m = styledMaterialOf(p.mesh);
@@ -3515,6 +3537,29 @@ export class S3MViewer {
3515
3537
  return Math.min(canvasHeight, cssHeight * cap);
3516
3538
  }
3517
3539
 
3540
+ /** 当前纹理缓存条数上限 */
3541
+ get maxImageCache(): number {
3542
+ return this.options.maxImageCache ?? 128;
3543
+ }
3544
+
3545
+ /**
3546
+ * 调整纹理缓存条数。不传 `datasetId` 时对所有已存在数据集立即生效,
3547
+ * 并作为之后新增数据集的默认值。缓存是 LRU,降下来不会立刻释放,下次淘汰时生效。
3548
+ */
3549
+ setMaxImageCache(n: number, datasetId?: string): void {
3550
+ const next = Number.isFinite(n) ? Math.max(1, Math.floor(n)) : 128;
3551
+ if (datasetId) {
3552
+ const entry = this.datasets.get(datasetId);
3553
+ if (entry?.tileset) entry.tileset.maxImageCache = next;
3554
+ } else {
3555
+ this.options.maxImageCache = next;
3556
+ for (const entry of this.datasets.values()) {
3557
+ if (entry.tileset) entry.tileset.maxImageCache = next;
3558
+ }
3559
+ }
3560
+ this._requestRepaint();
3561
+ }
3562
+
3518
3563
  /** 当前每个数据集的驻留面数预算。Infinity = 不限制 */
3519
3564
  get maxTriangles(): number {
3520
3565
  return this.options.maxTriangles ?? Infinity;
@@ -3634,7 +3679,7 @@ export class S3MViewer {
3634
3679
 
3635
3680
  // 正交模式由宿主在传入 mvp 前自行替换(见 s3m-maplibre 的 S3MLayer._applyOrtho),
3636
3681
  // 视图矩阵是从宿主输入反推的(P⁻¹×MVP),不会和宿主的 pan/zoom/pitch 错位。
3637
- const mvp = new THREE.Matrix4().fromArray(opts.mvp as number[]);
3682
+ const mvp = this._frameMvp.fromArray(opts.mvp as number[]);
3638
3683
  mvp.multiply(this._enuMatrix);
3639
3684
  this.camera.projectionMatrix.copy(mvp);
3640
3685
  this.camera.projectionMatrixInverse.copy(mvp).invert();
@@ -168,7 +168,33 @@ export const DEFAULT_STYLE: S3MStyle = {
168
168
  fadeIn: 0,
169
169
  };
170
170
 
171
- export interface StyledMaterial extends THREE.MeshStandardMaterial {
171
+ /** 光照模型:pbr(默认,MeshStandardMaterial)| lambert(省 GGX 与环境球谐) */
172
+ export type MaterialQuality = 'pbr' | 'lambert';
173
+
174
+ /**
175
+ * 当前光照模型。模块级全局 —— 与 anisotropy / maxTextureSize 同一套设计,
176
+ * 同页多个图层会互相覆盖,后创建的那个决定全局。只影响**之后创建**的材质。
177
+ */
178
+ let materialQuality: MaterialQuality = 'pbr';
179
+
180
+ /**
181
+ * 切换光照模型。
182
+ *
183
+ * 'pbr'(默认)= `MeshStandardMaterial`,GGX + 环境球谐,质感最好也最贵。
184
+ * 'lambert' = `MeshLambertMaterial`,只保留漫反射 + 平行光,片元开销约省一半;
185
+ * 白模 / 纯色 / 按高度着色这类不需要高光的模式,肉眼差别很小。
186
+ *
187
+ * 注意:只影响之后创建的材质 —— 已加载的瓦片要重新加载才会换。
188
+ */
189
+ export function setMaterialQuality(q: MaterialQuality): void {
190
+ materialQuality = q === 'lambert' ? 'lambert' : 'pbr';
191
+ }
192
+
193
+ export function getMaterialQuality(): MaterialQuality {
194
+ return materialQuality;
195
+ }
196
+
197
+ export type StyledMaterial = (THREE.MeshStandardMaterial | THREE.MeshLambertMaterial) & {
172
198
  userData: {
173
199
  uSelBatch: { value: number };
174
200
  uSelWhole: { value: number };
@@ -785,11 +811,11 @@ export interface StyledMaterialOptions {
785
811
  */
786
812
  export function createStyledMaterial(opts: StyledMaterialOptions): StyledMaterial {
787
813
  const uniforms = opts.uniforms;
788
- const mat = new THREE.MeshStandardMaterial({
814
+ // 两种光照模型共用的参数。注入的 chunk 只动 diffuseColor / normal / transformed,
815
+ // 在 Standard 与 Lambert 的 shader 里都存在同名 include,所以模板不用分支。
816
+ const baseParams = {
789
817
  color: opts.color ?? new THREE.Color(0xffffff),
790
818
  map: opts.map ?? null,
791
- roughness: opts.roughness ?? 0.95,
792
- metalness: 0,
793
819
  side: opts.side ?? THREE.DoubleSide,
794
820
  transparent: !!opts.transparent,
795
821
  opacity: opts.opacity ?? 1,
@@ -800,7 +826,16 @@ export function createStyledMaterial(opts: StyledMaterialOptions): StyledMateria
800
826
  // 顶点色、贴图全部在自定义 chunk 里处理,不让 three 插手
801
827
  vertexColors: false,
802
828
  alphaTest: opts.alphaTest ?? 0,
803
- }) as StyledMaterial;
829
+ };
830
+ const mat = (
831
+ materialQuality === 'lambert'
832
+ ? new THREE.MeshLambertMaterial(baseParams)
833
+ : new THREE.MeshStandardMaterial({
834
+ ...baseParams,
835
+ roughness: opts.roughness ?? 0.95,
836
+ metalness: 0,
837
+ })
838
+ ) as StyledMaterial;
804
839
 
805
840
  // 选中单体编号:每个 Mesh 独立,默认 -1 表示无选中
806
841
  const uSelBatch = { value: -1 };