s3m-three 0.3.8 → 0.3.9
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/s3m-three.iife.ext-three.js +187 -46
- package/dist/browser/s3m-three.iife.js +187 -46
- package/dist/core/types.d.ts +4 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/render/EdgeLines.d.ts +6 -0
- package/dist/render/EdgeLines.d.ts.map +1 -1
- package/dist/render/EdgeLines.js +41 -13
- package/dist/render/EdgeLines.js.map +1 -1
- package/dist/render/FeatureStyleManager.d.ts +45 -0
- package/dist/render/FeatureStyleManager.d.ts.map +1 -1
- package/dist/render/FeatureStyleManager.js +320 -59
- package/dist/render/FeatureStyleManager.js.map +1 -1
- package/dist/render/OrthoProjection.d.ts +6 -0
- package/dist/render/OrthoProjection.d.ts.map +1 -1
- package/dist/render/OrthoProjection.js +48 -0
- package/dist/render/OrthoProjection.js.map +1 -1
- package/dist/render/S3MViewer.d.ts +19 -0
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +122 -6
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/StyleMaterial.d.ts +9 -0
- package/dist/render/StyleMaterial.d.ts.map +1 -1
- package/dist/render/StyleMaterial.js +153 -21
- package/dist/render/StyleMaterial.js.map +1 -1
- package/package.json +1 -1
- package/src/core/types.ts +2 -0
- package/src/index.ts +6 -0
- package/src/render/EdgeLines.ts +43 -13
- package/src/render/FeatureStyleManager.ts +405 -64
- package/src/render/OrthoProjection.ts +52 -0
- package/src/render/S3MViewer.ts +162 -5
- package/src/render/StyleMaterial.ts +157 -21
|
@@ -82,8 +82,14 @@ export const DEFAULT_STYLE = {
|
|
|
82
82
|
depthWrite: true,
|
|
83
83
|
fadeIn: 0,
|
|
84
84
|
};
|
|
85
|
-
const DUMMY_DATA = new Float32Array([
|
|
86
|
-
|
|
85
|
+
const DUMMY_DATA = new Float32Array([
|
|
86
|
+
-1, -1, -1, 0, // Row 0: color rgb, elevation/hidden
|
|
87
|
+
0, 0, 0, 0, // Row 1: translation xyz, opacity
|
|
88
|
+
1, 0, 0, 0, // Row 2: rot row 0, pivot.x
|
|
89
|
+
0, 1, 0, 0, // Row 3: rot row 1, pivot.y
|
|
90
|
+
0, 0, 1, 0, // Row 4: rot row 2, pivot.z
|
|
91
|
+
]);
|
|
92
|
+
export const DUMMY_BATCH_TEX = new THREE.DataTexture(DUMMY_DATA, 1, 5, THREE.RGBAFormat, THREE.FloatType);
|
|
87
93
|
DUMMY_BATCH_TEX.minFilter = THREE.NearestFilter;
|
|
88
94
|
DUMMY_BATCH_TEX.magFilter = THREE.NearestFilter;
|
|
89
95
|
DUMMY_BATCH_TEX.needsUpdate = true;
|
|
@@ -126,6 +132,8 @@ export function createSharedUniforms() {
|
|
|
126
132
|
uTexMix: { value: 0 },
|
|
127
133
|
/** 基础底色增益 / 暗部补偿(0~1,默认 0.0) */
|
|
128
134
|
uAmbientGain: { value: 0 },
|
|
135
|
+
/** 双纹理交叉淡化插值系数(0 = 纯 uBatchTex, 1 = 纯 uBatchTex2) */
|
|
136
|
+
uBatchMix: { value: 0 },
|
|
129
137
|
/**
|
|
130
138
|
* 图层整体透明度:在片元里乘进 diffuseColor.a。
|
|
131
139
|
*
|
|
@@ -164,6 +172,8 @@ const VERT_PARS = /* glsl */ `
|
|
|
164
172
|
uniform float uSelWhole;
|
|
165
173
|
uniform float uSelElevation;
|
|
166
174
|
uniform sampler2D uBatchTex;
|
|
175
|
+
uniform sampler2D uBatchTex2;
|
|
176
|
+
uniform float uBatchMix;
|
|
167
177
|
uniform float uBatchTexWidth;
|
|
168
178
|
uniform int uBatchTexActive;
|
|
169
179
|
varying float vBatchId;
|
|
@@ -172,6 +182,11 @@ const VERT_PARS = /* glsl */ `
|
|
|
172
182
|
varying vec3 vWorldNormal;
|
|
173
183
|
varying vec3 vWorldPos;
|
|
174
184
|
|
|
185
|
+
// 跨 chunk 共享的顶点姿态变量(在 beginnormal_vertex 建立,begin_vertex / worldpos 使用)
|
|
186
|
+
vec3 s3mCustomOffset;
|
|
187
|
+
mat3 s3mRot;
|
|
188
|
+
vec3 s3mPivot;
|
|
189
|
+
|
|
175
190
|
/** 当前图元所属单体的控制位:实例化取实例属性,其余取逐顶点属性 */
|
|
176
191
|
float s3mBatchRaw() {
|
|
177
192
|
#ifdef USE_INSTANCING
|
|
@@ -180,26 +195,83 @@ const VERT_PARS = /* glsl */ `
|
|
|
180
195
|
return aBatchId;
|
|
181
196
|
#endif
|
|
182
197
|
}
|
|
198
|
+
|
|
199
|
+
vec4 s3mSampleBatch( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
|
|
200
|
+
vec4 vA = texture2D( texA, uv );
|
|
201
|
+
if ( mixVal <= 0.0001 ) return vA;
|
|
202
|
+
vec4 vB = texture2D( texB, uv );
|
|
203
|
+
return mix( vA, vB, mixVal );
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
vec4 s3mSampleBatchRow0( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
|
|
207
|
+
vec4 vA = texture2D( texA, uv );
|
|
208
|
+
if ( mixVal <= 0.0001 ) return vA;
|
|
209
|
+
vec4 vB = texture2D( texB, uv );
|
|
210
|
+
vec4 res = mix( vA, vB, mixVal );
|
|
211
|
+
if ( vA.r < 0.0 && vB.r >= 0.0 ) {
|
|
212
|
+
res.rgb = vB.rgb;
|
|
213
|
+
} else if ( vA.r >= 0.0 && vB.r < 0.0 ) {
|
|
214
|
+
res.rgb = vA.rgb;
|
|
215
|
+
}
|
|
216
|
+
if ( vA.a < -0.5 || vB.a < -0.5 ) {
|
|
217
|
+
res.a = ( mixVal >= 0.5 ) ? vB.a : vA.a;
|
|
218
|
+
}
|
|
219
|
+
return res;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
vec4 s3mSampleBatchRow1( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
|
|
223
|
+
vec4 vA = texture2D( texA, uv );
|
|
224
|
+
if ( mixVal <= 0.0001 ) return vA;
|
|
225
|
+
vec4 vB = texture2D( texB, uv );
|
|
226
|
+
vec4 res = mix( vA, vB, mixVal );
|
|
227
|
+
if ( vA.a == 0.0 && vB.a > 0.0 ) {
|
|
228
|
+
res.a = mix( 1.0, vB.a, mixVal );
|
|
229
|
+
} else if ( vA.a > 0.0 && vB.a == 0.0 ) {
|
|
230
|
+
res.a = mix( vA.a, 1.0, mixVal );
|
|
231
|
+
}
|
|
232
|
+
return res;
|
|
233
|
+
}
|
|
183
234
|
`;
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
235
|
+
const VERT_SETUP = /* glsl */ `
|
|
236
|
+
s3mCustomOffset = vec3( 0.0 );
|
|
237
|
+
s3mRot = mat3( 1.0 );
|
|
238
|
+
s3mPivot = vec3( 0.0 );
|
|
239
|
+
float s3mBatchSetup = s3mBatchRaw();
|
|
240
|
+
if ( uBatchTexActive > 0 && s3mBatchSetup >= 0.0 ) {
|
|
241
|
+
float s3mU = ( s3mBatchSetup + 0.5 ) / uBatchTexWidth;
|
|
242
|
+
vec4 bState = s3mSampleBatchRow0( uBatchTex, uBatchTex2, vec2( s3mU, 0.1 ), uBatchMix );
|
|
243
|
+
if ( bState.a >= -0.5 ) {
|
|
244
|
+
vec4 bOffset = s3mSampleBatchRow1( uBatchTex, uBatchTex2, vec2( s3mU, 0.3 ), uBatchMix );
|
|
193
245
|
s3mCustomOffset = bOffset.xyz;
|
|
194
246
|
if ( s3mCustomOffset.z == 0.0 && bState.a > 0.0 ) {
|
|
195
247
|
s3mCustomOffset.z = bState.a;
|
|
196
248
|
}
|
|
249
|
+
vec4 r2 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.5 ), uBatchMix );
|
|
250
|
+
vec4 r3 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.7 ), uBatchMix );
|
|
251
|
+
vec4 r4 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.9 ), uBatchMix );
|
|
252
|
+
s3mRot = mat3(
|
|
253
|
+
vec3( r2.x, r3.x, r4.x ),
|
|
254
|
+
vec3( r2.y, r3.y, r4.y ),
|
|
255
|
+
vec3( r2.z, r3.z, r4.z )
|
|
256
|
+
);
|
|
257
|
+
s3mPivot = vec3( r2.w, r3.w, r4.w );
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
objectNormal = normalize( s3mRot * objectNormal );
|
|
261
|
+
`;
|
|
262
|
+
const VERT_ELEVATION = /* glsl */ `
|
|
263
|
+
float s3mBatchElev = s3mBatchRaw();
|
|
264
|
+
if ( uBatchTexActive > 0 && s3mBatchElev >= 0.0 ) {
|
|
265
|
+
float s3mU = ( s3mBatchElev + 0.5 ) / uBatchTexWidth;
|
|
266
|
+
vec4 bState = s3mSampleBatchRow0( uBatchTex, uBatchTex2, vec2( s3mU, 0.1 ), uBatchMix );
|
|
267
|
+
if ( bState.a < -0.5 ) {
|
|
268
|
+
transformed = vec3( 0.0 );
|
|
197
269
|
}
|
|
198
270
|
}
|
|
199
271
|
|
|
200
|
-
float s3mSelElev = max( step( 0.0, uSelBatch ) * step( abs(
|
|
201
|
-
//
|
|
202
|
-
transformed
|
|
272
|
+
float s3mSelElev = max( step( 0.0, uSelBatch ) * step( abs( s3mBatchElev - uSelBatch ), 0.5 ), uSelWhole );
|
|
273
|
+
// 刚体旋转以 s3mPivot 为中心,再叠加自定义平移与选中拔高
|
|
274
|
+
transformed = s3mRot * ( transformed - s3mPivot ) + s3mPivot + s3mCustomOffset;
|
|
203
275
|
transformed.z += s3mSelElev * uSelElevation;
|
|
204
276
|
`;
|
|
205
277
|
const VERT_WORLD = /* glsl */ `
|
|
@@ -226,7 +298,7 @@ const VERT_WORLD = /* glsl */ `
|
|
|
226
298
|
#else
|
|
227
299
|
mat3 s3mNormMat = mat3( modelMatrix );
|
|
228
300
|
#endif
|
|
229
|
-
vWorldNormal = normalize( s3mNormMat * normal );
|
|
301
|
+
vWorldNormal = normalize( s3mNormMat * ( s3mRot * normal ) );
|
|
230
302
|
`;
|
|
231
303
|
const FRAG_PARS = /* glsl */ `
|
|
232
304
|
#ifdef S3M_ATLAS
|
|
@@ -308,6 +380,8 @@ const FRAG_PARS = /* glsl */ `
|
|
|
308
380
|
uniform float uSelEmissive;
|
|
309
381
|
uniform float uDimFactor;
|
|
310
382
|
uniform sampler2D uBatchTex;
|
|
383
|
+
uniform sampler2D uBatchTex2;
|
|
384
|
+
uniform float uBatchMix;
|
|
311
385
|
uniform float uBatchTexWidth;
|
|
312
386
|
uniform int uBatchTexActive;
|
|
313
387
|
uniform float uFilterMinZ;
|
|
@@ -333,6 +407,35 @@ const FRAG_PARS = /* glsl */ `
|
|
|
333
407
|
varying vec3 vWorldNormal;
|
|
334
408
|
varying vec3 vWorldPos;
|
|
335
409
|
|
|
410
|
+
vec4 s3mSampleBatchRow0( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
|
|
411
|
+
vec4 vA = texture2D( texA, uv );
|
|
412
|
+
if ( mixVal <= 0.0001 ) return vA;
|
|
413
|
+
vec4 vB = texture2D( texB, uv );
|
|
414
|
+
vec4 res = mix( vA, vB, mixVal );
|
|
415
|
+
if ( vA.r < 0.0 && vB.r >= 0.0 ) {
|
|
416
|
+
res.rgb = vB.rgb;
|
|
417
|
+
} else if ( vA.r >= 0.0 && vB.r < 0.0 ) {
|
|
418
|
+
res.rgb = vA.rgb;
|
|
419
|
+
}
|
|
420
|
+
if ( vA.a < -0.5 || vB.a < -0.5 ) {
|
|
421
|
+
res.a = ( mixVal >= 0.5 ) ? vB.a : vA.a;
|
|
422
|
+
}
|
|
423
|
+
return res;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
vec4 s3mSampleBatchRow1( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
|
|
427
|
+
vec4 vA = texture2D( texA, uv );
|
|
428
|
+
if ( mixVal <= 0.0001 ) return vA;
|
|
429
|
+
vec4 vB = texture2D( texB, uv );
|
|
430
|
+
vec4 res = mix( vA, vB, mixVal );
|
|
431
|
+
if ( vA.a == 0.0 && vB.a > 0.0 ) {
|
|
432
|
+
res.a = mix( 1.0, vB.a, mixVal );
|
|
433
|
+
} else if ( vA.a > 0.0 && vB.a == 0.0 ) {
|
|
434
|
+
res.a = mix( vA.a, 1.0, mixVal );
|
|
435
|
+
}
|
|
436
|
+
return res;
|
|
437
|
+
}
|
|
438
|
+
|
|
336
439
|
float s3mHash( float p ) {
|
|
337
440
|
p = fract( p * 0.1031 );
|
|
338
441
|
p *= p + 33.33;
|
|
@@ -427,7 +530,8 @@ const FRAG_COLOR = /* glsl */ `
|
|
|
427
530
|
bool hasCustomColor = false;
|
|
428
531
|
if ( uBatchTexActive > 0 && s3mBid >= 0.0 ) {
|
|
429
532
|
// 用取整后的 id 采样:否则逐像素的插值误差会让纹素在边界上来回跳,同样出彩色噪点
|
|
430
|
-
|
|
533
|
+
float s3mU = ( s3mBid + 0.5 ) / uBatchTexWidth;
|
|
534
|
+
vec4 bState = s3mSampleBatchRow0( uBatchTex, uBatchTex2, vec2( s3mU, 0.1 ), uBatchMix );
|
|
431
535
|
if ( bState.a < -0.5 ) {
|
|
432
536
|
discard; // 属于被过滤隐藏的单体
|
|
433
537
|
}
|
|
@@ -438,7 +542,7 @@ const FRAG_COLOR = /* glsl */ `
|
|
|
438
542
|
}
|
|
439
543
|
// 单体独立透明度(状态纹理第 2 行 alpha,0 = 无覆盖)。
|
|
440
544
|
// 与全局 uOpacity(diffuseColor.a 初值)和图集贴图自带 alpha 逐级叠乘
|
|
441
|
-
vec4 bOffset =
|
|
545
|
+
vec4 bOffset = s3mSampleBatchRow1( uBatchTex, uBatchTex2, vec2( s3mU, 0.3 ), uBatchMix );
|
|
442
546
|
if ( bOffset.a > 0.0 ) {
|
|
443
547
|
diffuseColor.a *= bOffset.a;
|
|
444
548
|
}
|
|
@@ -518,6 +622,7 @@ export function createStyledMaterial(opts) {
|
|
|
518
622
|
// 没有单体化信息的几何(batchId = -1)只能整块选中
|
|
519
623
|
const uSelWhole = { value: 0 };
|
|
520
624
|
const uBatchTex = { value: DUMMY_BATCH_TEX };
|
|
625
|
+
const uBatchTex2 = { value: DUMMY_BATCH_TEX };
|
|
521
626
|
const uBatchTexWidth = { value: 1.0 };
|
|
522
627
|
const uBatchTexActive = { value: 0 };
|
|
523
628
|
/** 单块瓦片的淡入系数:逐材质独享(每块网格一份材质),默认 1 = 完全显示 */
|
|
@@ -537,6 +642,7 @@ export function createStyledMaterial(opts) {
|
|
|
537
642
|
uSelBatch,
|
|
538
643
|
uSelWhole,
|
|
539
644
|
uBatchTex,
|
|
645
|
+
uBatchTex2,
|
|
540
646
|
uBatchTexWidth,
|
|
541
647
|
uBatchTexActive,
|
|
542
648
|
uTileFade,
|
|
@@ -546,6 +652,7 @@ export function createStyledMaterial(opts) {
|
|
|
546
652
|
});
|
|
547
653
|
shader.vertexShader = shader.vertexShader
|
|
548
654
|
.replace('#include <common>', `#include <common>\n${VERT_PARS}`)
|
|
655
|
+
.replace('#include <beginnormal_vertex>', `#include <beginnormal_vertex>\n${VERT_SETUP}`)
|
|
549
656
|
.replace('#include <begin_vertex>', `#include <begin_vertex>\n${VERT_ELEVATION}`)
|
|
550
657
|
.replace('#include <worldpos_vertex>', VERT_WORLD);
|
|
551
658
|
shader.fragmentShader = shader.fragmentShader
|
|
@@ -573,6 +680,7 @@ export function createStyledMaterial(opts) {
|
|
|
573
680
|
mat.userData.uSelBatch = uSelBatch;
|
|
574
681
|
mat.userData.uSelWhole = uSelWhole;
|
|
575
682
|
mat.userData.uBatchTex = uBatchTex;
|
|
683
|
+
mat.userData.uBatchTex2 = uBatchTex2;
|
|
576
684
|
mat.userData.uBatchTexWidth = uBatchTexWidth;
|
|
577
685
|
mat.userData.uBatchTexActive = uBatchTexActive;
|
|
578
686
|
mat.userData.uTileFade = uTileFade;
|
|
@@ -587,26 +695,48 @@ const OUTLINE_VERT = /* glsl */ `
|
|
|
587
695
|
uniform float uWidth;
|
|
588
696
|
uniform float uElevation;
|
|
589
697
|
uniform sampler2D uBatchTex;
|
|
698
|
+
uniform sampler2D uBatchTex2;
|
|
699
|
+
uniform float uBatchMix;
|
|
590
700
|
uniform float uBatchTexWidth;
|
|
591
701
|
uniform int uBatchTexActive;
|
|
592
702
|
varying float vSel;
|
|
703
|
+
|
|
704
|
+
vec4 s3mSampleBatch( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
|
|
705
|
+
vec4 vA = texture2D( texA, uv );
|
|
706
|
+
if ( mixVal <= 0.0001 ) return vA;
|
|
707
|
+
vec4 vB = texture2D( texB, uv );
|
|
708
|
+
return mix( vA, vB, mixVal );
|
|
709
|
+
}
|
|
710
|
+
|
|
593
711
|
void main() {
|
|
594
712
|
vSel = max( step( 0.0, uSelBatch ) * step( abs( aBatchId - uSelBatch ), 0.5 ), uSelWhole );
|
|
595
713
|
vec3 s3mCustomOffset = vec3( 0.0 );
|
|
714
|
+
mat3 s3mRot = mat3( 1.0 );
|
|
715
|
+
vec3 s3mPivot = vec3( 0.0 );
|
|
596
716
|
if ( uBatchTexActive > 0 && aBatchId >= 0.0 ) {
|
|
597
|
-
|
|
717
|
+
float s3mU = ( aBatchId + 0.5 ) / uBatchTexWidth;
|
|
718
|
+
vec4 bState = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.1 ), uBatchMix );
|
|
598
719
|
if ( bState.a < -0.5 ) {
|
|
599
720
|
vSel = 0.0; // 过滤隐藏的单体不显示描边
|
|
600
721
|
} else {
|
|
601
|
-
vec4 bOffset =
|
|
722
|
+
vec4 bOffset = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.3 ), uBatchMix );
|
|
602
723
|
s3mCustomOffset = bOffset.xyz;
|
|
603
724
|
if ( s3mCustomOffset.z == 0.0 && bState.a > 0.0 ) {
|
|
604
725
|
s3mCustomOffset.z = bState.a;
|
|
605
726
|
}
|
|
727
|
+
vec4 r2 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.5 ), uBatchMix );
|
|
728
|
+
vec4 r3 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.7 ), uBatchMix );
|
|
729
|
+
vec4 r4 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.9 ), uBatchMix );
|
|
730
|
+
s3mRot = mat3(
|
|
731
|
+
vec3( r2.x, r3.x, r4.x ),
|
|
732
|
+
vec3( r2.y, r3.y, r4.y ),
|
|
733
|
+
vec3( r2.z, r3.z, r4.z )
|
|
734
|
+
);
|
|
735
|
+
s3mPivot = vec3( r2.w, r3.w, r4.w );
|
|
606
736
|
}
|
|
607
737
|
}
|
|
608
|
-
vec3 p = position + normal * uWidth * vSel;
|
|
609
|
-
p
|
|
738
|
+
vec3 p = position + ( s3mRot * normal ) * uWidth * vSel;
|
|
739
|
+
p = s3mRot * ( p - s3mPivot ) + s3mPivot + s3mCustomOffset;
|
|
610
740
|
p.z += vSel * uElevation;
|
|
611
741
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( p, 1.0 );
|
|
612
742
|
}
|
|
@@ -628,6 +758,8 @@ export function createOutlineMaterial(shared, initialWidth = 0.9) {
|
|
|
628
758
|
uWidth: { value: initialWidth },
|
|
629
759
|
uElevation: { value: 0 },
|
|
630
760
|
uBatchTex: { value: DUMMY_BATCH_TEX },
|
|
761
|
+
uBatchTex2: { value: DUMMY_BATCH_TEX },
|
|
762
|
+
uBatchMix: shared.uBatchMix ?? { value: 0 },
|
|
631
763
|
uBatchTexWidth: { value: 1.0 },
|
|
632
764
|
uBatchTexActive: { value: 0 },
|
|
633
765
|
uColor: { value: shared.uSelColor.value.clone() },
|
|
@@ -1 +1 @@
|
|
|
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;AAE9D,+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;
|
|
1
|
+
{"version":3,"file":"StyleMaterial.js","sourceRoot":"","sources":["../../src/render/StyleMaterial.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/core/types.ts
CHANGED
|
@@ -283,6 +283,8 @@ export interface StyleUniforms {
|
|
|
283
283
|
uTexMix?: { value: number };
|
|
284
284
|
/** 基础漫反射底色增益 / 直通自发光微调(0~1,默认 0.0) */
|
|
285
285
|
uAmbientGain?: { value: number };
|
|
286
|
+
/** 双纹理交叉淡化插值因子(0~1,0 = 状态 A,1 = 状态 B) */
|
|
287
|
+
uBatchMix?: { value: number };
|
|
286
288
|
/** 图层整体透明度(共享 uniform,透明度动画靠它做到 O(1)) */
|
|
287
289
|
uOpacity?: { value: number };
|
|
288
290
|
/** 棱线淡入淡出乘子(setEdges 过渡期间 0→1) */
|
package/src/index.ts
CHANGED
|
@@ -78,6 +78,11 @@ export {
|
|
|
78
78
|
DatasetManager,
|
|
79
79
|
FeatureStyleManager,
|
|
80
80
|
} from './render/S3MViewer.js';
|
|
81
|
+
export {
|
|
82
|
+
resolveRotationMatrix,
|
|
83
|
+
extractEulerAngles,
|
|
84
|
+
} from './render/FeatureStyleManager.js';
|
|
85
|
+
export type { RotationMatrix9 } from './render/FeatureStyleManager.js';
|
|
81
86
|
export type {
|
|
82
87
|
DatasetAlignment,
|
|
83
88
|
S3MDatasetOptions,
|
|
@@ -129,6 +134,7 @@ export type {
|
|
|
129
134
|
|
|
130
135
|
export {
|
|
131
136
|
buildOrthoMVP,
|
|
137
|
+
buildBlendedMVP,
|
|
132
138
|
extractProjectionMatrix,
|
|
133
139
|
extractNearFar,
|
|
134
140
|
extractFovRadians,
|
package/src/render/EdgeLines.ts
CHANGED
|
@@ -38,6 +38,8 @@ export interface ThickLineStyleUniforms {
|
|
|
38
38
|
/** 等宽线的「单体状态」uniform:直接复用主材质 userData 里那几个对象,自动跟随 */
|
|
39
39
|
export interface ThickLineBatchUniforms {
|
|
40
40
|
uBatchTex: { value: THREE.Texture };
|
|
41
|
+
uBatchTex2?: { value: THREE.Texture };
|
|
42
|
+
uBatchMix?: { value: number };
|
|
41
43
|
uBatchTexWidth: { value: number };
|
|
42
44
|
uBatchTexActive: { value: number };
|
|
43
45
|
}
|
|
@@ -69,30 +71,54 @@ const VERT = /* glsl */ `
|
|
|
69
71
|
uniform float uElevation;
|
|
70
72
|
uniform vec3 uTranslation;
|
|
71
73
|
uniform sampler2D uBatchTex;
|
|
74
|
+
uniform sampler2D uBatchTex2;
|
|
75
|
+
uniform float uBatchMix;
|
|
72
76
|
uniform float uBatchTexWidth;
|
|
73
77
|
uniform int uBatchTexActive;
|
|
74
78
|
|
|
79
|
+
vec4 s3mSampleBatch( sampler2D texA, sampler2D texB, vec2 uv, float mixVal ) {
|
|
80
|
+
vec4 vA = texture2D( texA, uv );
|
|
81
|
+
if ( mixVal <= 0.0001 ) return vA;
|
|
82
|
+
vec4 vB = texture2D( texB, uv );
|
|
83
|
+
return mix( vA, vB, mixVal );
|
|
84
|
+
}
|
|
85
|
+
|
|
75
86
|
void main() {
|
|
76
|
-
// 单体平移 / 拔高 /
|
|
77
|
-
//
|
|
87
|
+
// 单体平移 / 旋转 / 拔高 / 隐藏:与主着色器同一份 5 行状态纹理、同一套变换口径。
|
|
88
|
+
// 不采样的话,单体一动或一转棱线就留在原地——这正是「棱线跟随」要解决的。
|
|
78
89
|
vec3 s3mA = position;
|
|
79
90
|
vec3 s3mB = aOther;
|
|
91
|
+
vec3 s3mCustomOffset = vec3( 0.0 );
|
|
92
|
+
mat3 s3mRot = mat3( 1.0 );
|
|
93
|
+
vec3 s3mPivot = vec3( 0.0 );
|
|
94
|
+
|
|
80
95
|
if ( uBatchTexActive > 0 && aBatchId >= 0.0 ) {
|
|
81
|
-
|
|
96
|
+
float s3mU = ( aBatchId + 0.5 ) / uBatchTexWidth;
|
|
97
|
+
vec4 bState = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.1 ), uBatchMix );
|
|
82
98
|
if ( bState.a < -0.5 ) {
|
|
83
99
|
// 该单体被隐藏:顶点着色器不能 discard,扔到裁剪空间外
|
|
84
100
|
gl_Position = vec4( 2.0, 2.0, 2.0, 1.0 );
|
|
85
101
|
return;
|
|
86
102
|
}
|
|
87
|
-
vec4 bOffset =
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
|
|
103
|
+
vec4 bOffset = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.3 ), uBatchMix );
|
|
104
|
+
s3mCustomOffset = bOffset.xyz;
|
|
105
|
+
if ( s3mCustomOffset.z == 0.0 && bState.a > 0.0 ) {
|
|
106
|
+
s3mCustomOffset.z = bState.a;
|
|
91
107
|
}
|
|
92
|
-
|
|
93
|
-
|
|
108
|
+
vec4 r2 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.5 ), uBatchMix );
|
|
109
|
+
vec4 r3 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.7 ), uBatchMix );
|
|
110
|
+
vec4 r4 = s3mSampleBatch( uBatchTex, uBatchTex2, vec2( s3mU, 0.9 ), uBatchMix );
|
|
111
|
+
s3mRot = mat3(
|
|
112
|
+
vec3( r2.x, r3.x, r4.x ),
|
|
113
|
+
vec3( r2.y, r3.y, r4.y ),
|
|
114
|
+
vec3( r2.z, r3.z, r4.z )
|
|
115
|
+
);
|
|
116
|
+
s3mPivot = vec3( r2.w, r3.w, r4.w );
|
|
94
117
|
}
|
|
95
118
|
|
|
119
|
+
s3mA = s3mRot * ( s3mA - s3mPivot ) + s3mPivot + s3mCustomOffset;
|
|
120
|
+
s3mB = s3mRot * ( s3mB - s3mPivot ) + s3mPivot + s3mCustomOffset;
|
|
121
|
+
|
|
96
122
|
// 选中单体平移/拔高:与着色器里 transformed += uTranslation 保持同一口径(物体空间)
|
|
97
123
|
vec3 offset = uTranslation + vec3( 0.0, 0.0, uElevation );
|
|
98
124
|
vec4 clipA = projectionMatrix * modelViewMatrix * vec4( s3mA + offset, 1.0 );
|
|
@@ -158,10 +184,12 @@ export function createThickLineMaterial(
|
|
|
158
184
|
if (opts.opacity !== undefined && styleUniforms) style.uOpacity.value = opts.opacity;
|
|
159
185
|
if (opts.width !== undefined && styleUniforms) style.uWidth.value = opts.width;
|
|
160
186
|
|
|
161
|
-
const batch: Required<ThickLineBatchUniforms> =
|
|
162
|
-
uBatchTex: { value: DUMMY_BATCH_TEX },
|
|
163
|
-
|
|
164
|
-
|
|
187
|
+
const batch: Required<ThickLineBatchUniforms> = {
|
|
188
|
+
uBatchTex: batchUniforms?.uBatchTex ?? { value: DUMMY_BATCH_TEX },
|
|
189
|
+
uBatchTex2: batchUniforms?.uBatchTex2 ?? { value: DUMMY_BATCH_TEX },
|
|
190
|
+
uBatchMix: batchUniforms?.uBatchMix ?? { value: 0 },
|
|
191
|
+
uBatchTexWidth: batchUniforms?.uBatchTexWidth ?? { value: 1 },
|
|
192
|
+
uBatchTexActive: batchUniforms?.uBatchTexActive ?? { value: 0 },
|
|
165
193
|
};
|
|
166
194
|
|
|
167
195
|
const mat = new THREE.ShaderMaterial({
|
|
@@ -174,6 +202,8 @@ export function createThickLineMaterial(
|
|
|
174
202
|
uElevation: style.uElevation ?? { value: opts.elevation ?? 0 },
|
|
175
203
|
uTranslation: { value: new THREE.Vector3(0, 0, 0) },
|
|
176
204
|
uBatchTex: batch.uBatchTex,
|
|
205
|
+
uBatchTex2: batch.uBatchTex2,
|
|
206
|
+
uBatchMix: batch.uBatchMix,
|
|
177
207
|
uBatchTexWidth: batch.uBatchTexWidth,
|
|
178
208
|
uBatchTexActive: batch.uBatchTexActive,
|
|
179
209
|
},
|