@metagl/sdk-render 1.0.2 → 1.0.4
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/README.md +15 -0
- package/README_EN.md +15 -0
- package/amd/lacdt.render.amd.js +64 -45
- package/cjs/lacdt.render.cjs.js +46 -44
- package/cjs/lacdt.render.d.ts +367 -260
- package/esm/lacdt.render.d.ts +367 -260
- package/esm/lacdt.render.js +47 -45
- package/lacdt.render.d.ts +367 -260
- package/lacdt.render.js +46 -44
- package/package.json +2 -2
package/lacdt.render.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Cartesian3, Color, Viewer, Cartesian4, Rectangle, Cesium3DTileset, ClippingPolygonCollection } from 'cesium';
|
|
1
|
+
import { Cartesian3, Color, Viewer, PostProcessStage, Cartesian4, Rectangle, Cesium3DTileset, ClippingPolygonCollection } from 'cesium';
|
|
2
2
|
import { Render as Render$1 } from '@/system/RenderCore';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -51,7 +51,7 @@ declare class LightingSystem implements RenderSystem {
|
|
|
51
51
|
/**
|
|
52
52
|
* 默认配置 - 从 EnvironmentDefaults 统一管理
|
|
53
53
|
*/
|
|
54
|
-
private static
|
|
54
|
+
private static DEFAULT_CONFIG;
|
|
55
55
|
/**
|
|
56
56
|
* 构造函数
|
|
57
57
|
* @param viewer - Viewer
|
|
@@ -126,7 +126,7 @@ declare class ShadowSystem implements RenderSystem {
|
|
|
126
126
|
/**
|
|
127
127
|
* 默认配置 - 从 EnvironmentDefaults 统一管理
|
|
128
128
|
*/
|
|
129
|
-
private static
|
|
129
|
+
private static DEFAULT_CONFIG;
|
|
130
130
|
/**
|
|
131
131
|
* 构造函数
|
|
132
132
|
* @param viewer - Cesium Viewer 实例
|
|
@@ -207,40 +207,57 @@ declare class VolumetricCloudsSystem implements RenderSystem {
|
|
|
207
207
|
private isEnabled;
|
|
208
208
|
private stage?;
|
|
209
209
|
private preRenderListener?;
|
|
210
|
+
private noiseTexture?;
|
|
211
|
+
private fadeRafId?;
|
|
212
|
+
/** 云 Stage 添加到 postProcessStages 后触发,供外部(RenderCore)做顺序修正 */
|
|
213
|
+
onInitialized?: () => void;
|
|
210
214
|
/**
|
|
211
215
|
* 默认可见性控制配置
|
|
212
216
|
*/
|
|
213
|
-
private static
|
|
217
|
+
private static DEFAULT_VISIBILITY_CONFIG;
|
|
214
218
|
/**
|
|
215
219
|
* 默认配置 - 从 EnvironmentDefaults 统一管理
|
|
216
220
|
*/
|
|
217
|
-
private static
|
|
221
|
+
private static DEFAULT_CONFIG;
|
|
218
222
|
/**
|
|
219
223
|
* 构造函数
|
|
220
224
|
*/
|
|
221
225
|
constructor(viewer: Viewer, config?: VolumetricCloudsConfig);
|
|
222
226
|
/**
|
|
223
|
-
*
|
|
227
|
+
* 更新云层高度可见性(通过 cloudCover 系数控制,不禁用 Stage)
|
|
228
|
+
* 淡入动画进行中时跳过,避免覆盖动画值
|
|
224
229
|
*/
|
|
225
230
|
private updateCloudVisibility;
|
|
226
231
|
/**
|
|
227
|
-
*
|
|
232
|
+
* 初始化(异步:先加载 Blue Noise 纹理)
|
|
233
|
+
* Stage 只创建一次,后续 enable/disable 通过 cloudCover=0 控制可见性
|
|
228
234
|
*/
|
|
229
235
|
initialize(): void;
|
|
236
|
+
private _doInitialize;
|
|
230
237
|
/**
|
|
231
238
|
* 获取真实地球半径
|
|
232
239
|
*/
|
|
233
240
|
private getRealPlanetRadius;
|
|
241
|
+
/**
|
|
242
|
+
* 返回当前 PostProcessStage 实例(供 RenderCore 做顺序修正)
|
|
243
|
+
*/
|
|
244
|
+
getStage(): PostProcessStage | undefined;
|
|
234
245
|
/**
|
|
235
246
|
* 更新uniforms
|
|
236
247
|
*/
|
|
237
248
|
private updateUniforms;
|
|
238
249
|
/**
|
|
239
250
|
* 启用体积云系统
|
|
251
|
+
* 不重建 Stage,从 cloudCover=0 线性淡入到配置值
|
|
240
252
|
*/
|
|
241
253
|
enable(): void;
|
|
254
|
+
/**
|
|
255
|
+
* 从当前 cloudCover 线性淡入/淡出到目标值,持续约 1.5 秒
|
|
256
|
+
*/
|
|
257
|
+
private _startFade;
|
|
242
258
|
/**
|
|
243
259
|
* 禁用体积云系统
|
|
260
|
+
* 不移除 Stage,从当前云量线性淡出到 0,动画结束后标记禁用
|
|
244
261
|
*/
|
|
245
262
|
disable(): void;
|
|
246
263
|
/**
|
|
@@ -261,6 +278,7 @@ declare class VolumetricCloudsSystem implements RenderSystem {
|
|
|
261
278
|
saveConfig(): any;
|
|
262
279
|
/**
|
|
263
280
|
* 获取着色器代码
|
|
281
|
+
* 严格按照 docs/环境系统/volumetric-cloud.md 实现
|
|
264
282
|
*/
|
|
265
283
|
private getShader;
|
|
266
284
|
/**
|
|
@@ -269,166 +287,6 @@ declare class VolumetricCloudsSystem implements RenderSystem {
|
|
|
269
287
|
destroy(): void;
|
|
270
288
|
}
|
|
271
289
|
|
|
272
|
-
/**
|
|
273
|
-
* 相机监听配置接口
|
|
274
|
-
*/
|
|
275
|
-
interface CameraListenerConfig {
|
|
276
|
-
/** 是否启用相机监听 */
|
|
277
|
-
enabled?: boolean;
|
|
278
|
-
/** 最小高度(米) */
|
|
279
|
-
minHeight?: number;
|
|
280
|
-
/** 最大高度(米) */
|
|
281
|
-
maxHeight?: number;
|
|
282
|
-
/** 过渡范围(米) */
|
|
283
|
-
transitionRange?: number;
|
|
284
|
-
/** 强度计算回调函数 */
|
|
285
|
-
intensityCallback?: (cameraHeight: number, config: CameraListenerConfig) => number;
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* 相机监听器类 - 全局管理相机高度与效果强度的关系
|
|
289
|
-
*/
|
|
290
|
-
declare class CameraListener {
|
|
291
|
-
private viewer;
|
|
292
|
-
private config;
|
|
293
|
-
private listeners;
|
|
294
|
-
private preRenderListener?;
|
|
295
|
-
private isEnabled;
|
|
296
|
-
/**
|
|
297
|
-
* 默认配置
|
|
298
|
-
*/
|
|
299
|
-
private static readonly DEFAULT_CONFIG;
|
|
300
|
-
/**
|
|
301
|
-
* 构造函数
|
|
302
|
-
*/
|
|
303
|
-
constructor(viewer: Viewer, config?: CameraListenerConfig);
|
|
304
|
-
/**
|
|
305
|
-
* 初始化相机监听
|
|
306
|
-
*/
|
|
307
|
-
initialize(): void;
|
|
308
|
-
/**
|
|
309
|
-
* 添加强度变化监听器
|
|
310
|
-
*/
|
|
311
|
-
addListener(callback: (intensity: number) => void): void;
|
|
312
|
-
/**
|
|
313
|
-
* 移除强度变化监听器
|
|
314
|
-
*/
|
|
315
|
-
removeListener(callback: (intensity: number) => void): void;
|
|
316
|
-
/**
|
|
317
|
-
* 通知所有监听器强度变化
|
|
318
|
-
*/
|
|
319
|
-
private notifyListeners;
|
|
320
|
-
/**
|
|
321
|
-
* 更新配置
|
|
322
|
-
*/
|
|
323
|
-
update(config: Partial<CameraListenerConfig>): void;
|
|
324
|
-
/**
|
|
325
|
-
* 启用相机监听
|
|
326
|
-
*/
|
|
327
|
-
enable(): void;
|
|
328
|
-
/**
|
|
329
|
-
* 禁用相机监听
|
|
330
|
-
*/
|
|
331
|
-
disable(): void;
|
|
332
|
-
/**
|
|
333
|
-
* 获取当前状态
|
|
334
|
-
*/
|
|
335
|
-
getStatus(): boolean;
|
|
336
|
-
/**
|
|
337
|
-
* 获取当前配置
|
|
338
|
-
*/
|
|
339
|
-
getConfig(): CameraListenerConfig;
|
|
340
|
-
/**
|
|
341
|
-
* 计算当前强度(同步调用)
|
|
342
|
-
*/
|
|
343
|
-
getCurrentIntensity(): number;
|
|
344
|
-
/**
|
|
345
|
-
* 销毁相机监听器
|
|
346
|
-
*/
|
|
347
|
-
destroy(): void;
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* 相机监听系统配置
|
|
351
|
-
*/
|
|
352
|
-
interface CameraListenerSystemConfig {
|
|
353
|
-
/** 体积云系统相机监听配置 */
|
|
354
|
-
volumetricClouds?: CameraListenerConfig;
|
|
355
|
-
/** 距离雾系统相机监听配置 */
|
|
356
|
-
distanceFog?: CameraListenerConfig;
|
|
357
|
-
/** 高度雾系统相机监听配置 */
|
|
358
|
-
heightFog?: CameraListenerConfig;
|
|
359
|
-
/** 大气散射系统相机监听配置 */
|
|
360
|
-
atmosphereScattering?: CameraListenerConfig;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* 相机监听系统 - 全局管理多个系统的相机高度监听
|
|
364
|
-
*/
|
|
365
|
-
declare class CameraListenerSystem {
|
|
366
|
-
private viewer;
|
|
367
|
-
private config;
|
|
368
|
-
private listeners;
|
|
369
|
-
private isInitialized;
|
|
370
|
-
/**
|
|
371
|
-
* 默认配置
|
|
372
|
-
*/
|
|
373
|
-
private static readonly DEFAULT_CONFIG;
|
|
374
|
-
/**
|
|
375
|
-
* 构造函数
|
|
376
|
-
*/
|
|
377
|
-
constructor(viewer: Viewer, config?: CameraListenerSystemConfig);
|
|
378
|
-
/**
|
|
379
|
-
* 初始化相机监听系统
|
|
380
|
-
*/
|
|
381
|
-
initialize(): void;
|
|
382
|
-
/**
|
|
383
|
-
* 获取特定系统的相机监听器
|
|
384
|
-
*/
|
|
385
|
-
getListener(systemName: string): CameraListener | undefined;
|
|
386
|
-
/**
|
|
387
|
-
* 添加系统监听器
|
|
388
|
-
*/
|
|
389
|
-
addListener(systemName: string, callback: (intensity: number) => void): void;
|
|
390
|
-
/**
|
|
391
|
-
* 移除系统监听器
|
|
392
|
-
*/
|
|
393
|
-
removeListener(systemName: string, callback: (intensity: number) => void): void;
|
|
394
|
-
/**
|
|
395
|
-
* 更新系统配置
|
|
396
|
-
*/
|
|
397
|
-
updateSystemConfig(systemName: string, config: Partial<CameraListenerConfig>): void;
|
|
398
|
-
/**
|
|
399
|
-
* 更新整体配置
|
|
400
|
-
*/
|
|
401
|
-
update(config: Partial<CameraListenerSystemConfig>): void;
|
|
402
|
-
/**
|
|
403
|
-
* 启用所有相机监听
|
|
404
|
-
*/
|
|
405
|
-
enableAll(): void;
|
|
406
|
-
/**
|
|
407
|
-
* 禁用所有相机监听
|
|
408
|
-
*/
|
|
409
|
-
disableAll(): void;
|
|
410
|
-
/**
|
|
411
|
-
* 启用特定系统的相机监听
|
|
412
|
-
*/
|
|
413
|
-
enableSystem(systemName: string): void;
|
|
414
|
-
/**
|
|
415
|
-
* 禁用特定系统的相机监听
|
|
416
|
-
*/
|
|
417
|
-
disableSystem(systemName: string): void;
|
|
418
|
-
/**
|
|
419
|
-
* 销毁相机监听系统
|
|
420
|
-
*/
|
|
421
|
-
destroy(): void;
|
|
422
|
-
/**
|
|
423
|
-
* 获取当前状态
|
|
424
|
-
*/
|
|
425
|
-
getStatus(): Record<string, boolean>;
|
|
426
|
-
/**
|
|
427
|
-
* 获取所有系统配置
|
|
428
|
-
*/
|
|
429
|
-
getConfig(): CameraListenerSystemConfig;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
290
|
/**
|
|
433
291
|
* 大气散射系统配置
|
|
434
292
|
*/
|
|
@@ -440,7 +298,6 @@ interface AtmosphereScatteringConfig {
|
|
|
440
298
|
absorptionIntensity?: number;
|
|
441
299
|
bDensity?: number;
|
|
442
300
|
bColor?: Color;
|
|
443
|
-
visibility?: CameraListenerConfig;
|
|
444
301
|
baseBetaR_R?: number;
|
|
445
302
|
baseBetaR_G?: number;
|
|
446
303
|
baseBetaR_B?: number;
|
|
@@ -454,9 +311,7 @@ interface AtmosphereScatteringConfig {
|
|
|
454
311
|
hM?: number;
|
|
455
312
|
hA?: number;
|
|
456
313
|
absorption_falloff?: number;
|
|
457
|
-
groundHeight?: number;
|
|
458
314
|
atmosphereThickness?: number;
|
|
459
|
-
enableGroundMix?: boolean;
|
|
460
315
|
}
|
|
461
316
|
/**
|
|
462
317
|
* 大气散射系统
|
|
@@ -466,21 +321,18 @@ declare class AtmosphereScatteringSystem implements RenderSystem {
|
|
|
466
321
|
private config;
|
|
467
322
|
private isEnabled;
|
|
468
323
|
private stage?;
|
|
469
|
-
private preRenderListener?;
|
|
470
|
-
private cameraListener?;
|
|
471
324
|
private defaultSkyAtmosphereShow;
|
|
472
|
-
/**
|
|
473
|
-
|
|
474
|
-
*/
|
|
475
|
-
private static readonly DEFAULT_VISIBILITY_CONFIG;
|
|
325
|
+
/** 大气 Stage 添加到 postProcessStages 后触发,供外部(RenderCore)做顺序修正 */
|
|
326
|
+
onInitialized?: () => void;
|
|
476
327
|
/**
|
|
477
328
|
* 默认配置对象 - 从 EnvironmentDefaults 统一管理
|
|
478
329
|
*/
|
|
479
|
-
private static
|
|
330
|
+
private static DEFAULT_CONFIG;
|
|
480
331
|
/**
|
|
481
|
-
*
|
|
332
|
+
* 获取真实地球半径(与体积云系统保持一致)
|
|
333
|
+
* 动态计算基于相机位置的椭球体半径,考虑纬度影响
|
|
482
334
|
*/
|
|
483
|
-
private
|
|
335
|
+
private getRealPlanetRadius;
|
|
484
336
|
/**
|
|
485
337
|
* 构造函数
|
|
486
338
|
*/
|
|
@@ -489,6 +341,10 @@ declare class AtmosphereScatteringSystem implements RenderSystem {
|
|
|
489
341
|
* 初始化大气散射后处理效果
|
|
490
342
|
*/
|
|
491
343
|
initialize(): void;
|
|
344
|
+
/**
|
|
345
|
+
* 返回当前 PostProcessStage 实例(供 RenderCore 做顺序修正)
|
|
346
|
+
*/
|
|
347
|
+
getStage(): PostProcessStage | undefined;
|
|
492
348
|
/**
|
|
493
349
|
* 启用大气散射系统
|
|
494
350
|
*/
|
|
@@ -557,7 +413,7 @@ declare class DistanceFogSystem implements RenderSystem {
|
|
|
557
413
|
/**
|
|
558
414
|
* 默认配置 - 从 EnvironmentDefaults 统一管理
|
|
559
415
|
*/
|
|
560
|
-
private static
|
|
416
|
+
private static DEFAULT_CONFIG;
|
|
561
417
|
/**
|
|
562
418
|
* 更新雾效可见性
|
|
563
419
|
*/
|
|
@@ -643,7 +499,7 @@ declare class HeightFogSystem implements RenderSystem {
|
|
|
643
499
|
/**
|
|
644
500
|
* 默认配置 - 从 EnvironmentDefaults 统一管理
|
|
645
501
|
*/
|
|
646
|
-
private static
|
|
502
|
+
private static DEFAULT_CONFIG;
|
|
647
503
|
/**
|
|
648
504
|
* 更新雾效可见性
|
|
649
505
|
*/
|
|
@@ -697,98 +553,372 @@ declare class HeightFogSystem implements RenderSystem {
|
|
|
697
553
|
}
|
|
698
554
|
|
|
699
555
|
/**
|
|
700
|
-
*
|
|
556
|
+
* 后处理系统完整配置
|
|
557
|
+
*
|
|
558
|
+
* 色彩空间说明:
|
|
559
|
+
* Cesium 自定义 PostProcessStage 的 colorTexture,在 HDR 开启时经过
|
|
560
|
+
* Tone Mapping 后已是 sRGB 编码的 [0,1] 值。
|
|
561
|
+
* 所有自定义 Shader 均在 sRGB 空间操作,禁止做 gamma pow() 校正。
|
|
562
|
+
*
|
|
563
|
+
* Cesium 内部 Pipeline(执行顺序):
|
|
564
|
+
* 场景渲染 → MSAA 解析 → AmbientOcclusion → Bloom →
|
|
565
|
+
* Tone Mapping (HDR→sRGB, 使用 exposure+tonemapper) →
|
|
566
|
+
* [自定义 Stage: 白平衡] → [自定义 Stage: 色彩调整] →
|
|
567
|
+
* [自定义 Stage: 阴影着色] → [自定义 Stage: 视觉增强(vignette+sharpen+chroma)] →
|
|
568
|
+
* [DOF(如启用)] → FXAA → 显示
|
|
701
569
|
*/
|
|
702
570
|
interface PostProcessingConfig {
|
|
703
571
|
enabled?: boolean;
|
|
704
|
-
|
|
572
|
+
/** 高动态范围渲染 */
|
|
573
|
+
hdrEnabled?: boolean;
|
|
574
|
+
/** FXAA 快速近似抗锯齿 */
|
|
575
|
+
fxaaEnabled?: boolean;
|
|
576
|
+
/** MSAA 多重采样抗锯齿开关 */
|
|
577
|
+
msaaEnabled?: boolean;
|
|
578
|
+
/** MSAA 采样倍数 1/2/4/8 */
|
|
579
|
+
msaa?: number;
|
|
580
|
+
/**
|
|
581
|
+
* Cesium 原生色调映射算法
|
|
582
|
+
* 'ACES' | 'REINHARD' | 'PBR_NEUTRAL'
|
|
583
|
+
* 默认 PBR_NEUTRAL(2024-09 后 Cesium 新默认值,色彩最自然)
|
|
584
|
+
*/
|
|
585
|
+
tonemapper?: string;
|
|
586
|
+
/**
|
|
587
|
+
* 曝光(Cesium 原生 postProcessStages.exposure)
|
|
588
|
+
* ⚠️ 这是线性亮度乘数,不是 EV 单位!
|
|
589
|
+
* 1.0 = 中性(无变化)
|
|
590
|
+
* <1.0 = 变暗(0.0 = 完全变黑!)
|
|
591
|
+
* >1.0 = 变亮
|
|
592
|
+
* 实用范围:0.5 ~ 2.0,默认 1.0
|
|
593
|
+
*/
|
|
594
|
+
exposure?: number;
|
|
595
|
+
/** 对比度(1.0 = 无变化,>1 增强,<1 减弱,范围 0.5~2.0)*/
|
|
705
596
|
contrast?: number;
|
|
597
|
+
/** 饱和度(1.0 = 原始,0 = 灰度,>1 增强,范围 0~3.0)*/
|
|
706
598
|
saturation?: number;
|
|
707
|
-
|
|
599
|
+
/** 色温 Kelvin(6500K = 日光中性,<6500K 暖色,>6500K 冷色,范围 3000~12000)*/
|
|
708
600
|
temperature?: number;
|
|
601
|
+
/** 色调(0 = 中性,-1 偏洋红,+1 偏绿,范围 -1~1)*/
|
|
709
602
|
tint?: number;
|
|
603
|
+
/** 阴影叠色 RGB(Cartesian3,分量范围 0~1)*/
|
|
710
604
|
shadowColor?: Cartesian3;
|
|
605
|
+
/** 阴影叠色强度(推荐 0.01~0.05)*/
|
|
711
606
|
shadowBlend?: number;
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
607
|
+
/** 是否启用 Bloom 泛光 */
|
|
608
|
+
bloomEnabled?: boolean;
|
|
609
|
+
/** Bloom 对比度(-255~255,默认 128)*/
|
|
610
|
+
bloomContrast?: number;
|
|
611
|
+
/** Bloom 亮度阈值偏移(HSB空间,默认 -0.3,负值=只让高亮区泛光)*/
|
|
612
|
+
bloomBrightness?: number;
|
|
613
|
+
/** Bloom 高斯模糊 sigma(越大光晕越宽,默认 2.0)*/
|
|
614
|
+
bloomSigma?: number;
|
|
615
|
+
/** Bloom 采样步长(默认 1.0,增大加速但降质)*/
|
|
616
|
+
bloomStepSize?: number;
|
|
617
|
+
/**
|
|
618
|
+
* Bloom 仅显示泛光层(不叠加原始场景)
|
|
619
|
+
* false(默认)= 正常叠加;true = 仅显示光晕(调试用)
|
|
620
|
+
* ⚠️ 与大气散射同时开启时:建议保持 false;
|
|
621
|
+
* Bloom 在 ToneMapping 之前处理 HDR 亮点,与大气在 ToneMapping 之后叠加不冲突。
|
|
622
|
+
*/
|
|
623
|
+
bloomGlowOnly?: boolean;
|
|
624
|
+
/** 是否启用 AO */
|
|
625
|
+
aoEnabled?: boolean;
|
|
626
|
+
/** AO 遮蔽强度(pow 指数,越大阴影越深,推荐 1.5~4.0,默认 3.0)
|
|
627
|
+
* ⚠️ 过高(>6)会产生全黑或条纹,与 Bloom 同时启用时建议 ≤ 3.0 */
|
|
628
|
+
aoIntensity?: number;
|
|
629
|
+
/** AO 自遮蔽偏差角(弧度,防止平面自遮蔽,默认 0.1)*/
|
|
630
|
+
aoBias?: number;
|
|
631
|
+
/**
|
|
632
|
+
* AO 采样半径系数(Cesium 1.124+ 新算法)
|
|
633
|
+
* 与相机距离和深度联动,自动缩放。
|
|
634
|
+
* 推荐范围 0.01~0.05,默认 0.02(兼容旧算法的安全值)
|
|
635
|
+
* ⚠️ 过大(>0.1)会产生斜条纹伪影
|
|
636
|
+
*/
|
|
637
|
+
aoLengthCap?: number;
|
|
638
|
+
/**
|
|
639
|
+
* AO 每方向采样步数(Cesium 1.124+ 新算法,默认 32)
|
|
640
|
+
* 值越大质量越高但性能越低;推荐 8~16 以避免条纹
|
|
641
|
+
* ⚠️ 过高(>32)在某些 GPU 上会产生闪烁,建议使用 8
|
|
642
|
+
*/
|
|
643
|
+
aoStepCount?: number;
|
|
644
|
+
/**
|
|
645
|
+
* AO 采样方向数(Cesium 1.124+ 新算法,默认 6)
|
|
646
|
+
* 推荐 6~8,方向数越多越均匀、条纹越少
|
|
647
|
+
*/
|
|
648
|
+
aoDirectionCount?: number;
|
|
649
|
+
/** 是否启用景深 */
|
|
650
|
+
dofEnabled?: boolean;
|
|
651
|
+
/** 焦距(米,相机到焦平面的距离)*/
|
|
652
|
+
dofFocalDistance?: number;
|
|
653
|
+
/** 景深模糊 sigma(越大焦外虚化越强,默认 3.78)*/
|
|
654
|
+
dofSigma?: number;
|
|
655
|
+
/** 暗角(vignette)强度(0 = 无暗角,1.5 = 明显暗角,范围 0~2)*/
|
|
656
|
+
vignetteStrength?: number;
|
|
657
|
+
/** 暗角柔和度(0.2 = 硬边,0.8 = 柔和过渡,范围 0.1~1.0)*/
|
|
658
|
+
vignetteSoftness?: number;
|
|
659
|
+
/** 锐化强度(0 = 不锐化,1 = 标准,2 = 强锐化,范围 0~2)*/
|
|
660
|
+
sharpness?: number;
|
|
661
|
+
/** 色差强度(0 = 无色差,0.005 = 轻微,范围 0~0.02)*/
|
|
662
|
+
chromaticAberration?: number;
|
|
716
663
|
}
|
|
717
|
-
/**
|
|
718
|
-
* 后处理系统
|
|
719
|
-
*/
|
|
720
664
|
declare class PostProcessingSystem implements RenderSystem {
|
|
721
665
|
private viewer;
|
|
722
666
|
private config;
|
|
723
667
|
private isEnabled;
|
|
668
|
+
/** 自定义 Shader Stage */
|
|
724
669
|
private stages;
|
|
670
|
+
/** Cesium 原生 DOF stage(通过 PostProcessStageLibrary 创建)*/
|
|
671
|
+
private dofStage;
|
|
672
|
+
private static DEFAULT_CONFIG;
|
|
673
|
+
constructor(viewer: Viewer, config?: PostProcessingConfig);
|
|
674
|
+
private createStages;
|
|
675
|
+
initialize(): void;
|
|
676
|
+
enable(): void;
|
|
677
|
+
disable(): void;
|
|
678
|
+
update(config: Partial<PostProcessingConfig>): void;
|
|
679
|
+
getStatus(): boolean;
|
|
680
|
+
getConfig(): PostProcessingConfig;
|
|
681
|
+
saveConfig(): any;
|
|
682
|
+
destroy(): void;
|
|
683
|
+
/** 应用 Cesium 色调映射算法 */
|
|
684
|
+
private applyTonemapper;
|
|
685
|
+
/** 应用 Bloom 配置
|
|
686
|
+
*
|
|
687
|
+
* ⚠️ 与大气散射系统同时启用时的注意事项:
|
|
688
|
+
* Bloom 在 Tone Mapping 之前(线性 HDR 空间)执行,针对高亮区域泛光。
|
|
689
|
+
* 大气散射 Stage 在 Tone Mapping 之后叠加(sRGB 域),两者执行阶段不同,无直接冲突。
|
|
690
|
+
* 但视觉上太阳周围会有 Bloom 光晕 + 大气散射日晕的双重叠加,
|
|
691
|
+
* 建议:bloomBrightness 调高(如 -0.1 ~ 0),bloomSigma 收小(1.0~1.5)。
|
|
692
|
+
*
|
|
693
|
+
* brightness uniform 行为:对 Bloom 提取出的高亮区转到 HSB 空间后,
|
|
694
|
+
* 直接加到 B 通道。负值(默认 -0.3)= 减少高亮提取范围(更少区域泛光)。
|
|
695
|
+
* 这不是一个亮度阈值!它会整体偏移泛光层的亮度,调得太低会使泛光层变暗
|
|
696
|
+
* 进而影响整个画面色调。建议范围:-0.5 ~ 0.2
|
|
697
|
+
*/
|
|
698
|
+
private applyBloom;
|
|
699
|
+
/** 应用 AO 配置(Cesium 1.124+ 新算法 HBAO v2)
|
|
700
|
+
*
|
|
701
|
+
* 新算法使用 Gaussian 分布替代固定步长,stepCount/directionCount 为必要参数。
|
|
702
|
+
*
|
|
703
|
+
* ⚠️ AO + Bloom 同时开启时:两者共用帧缓冲,Cesium 1.124+ 已修复冲突,
|
|
704
|
+
* 但需确保 intensity ≤ 4.0,lengthCap ≤ 0.05,stepCount ≤ 16,
|
|
705
|
+
* 否则 AO 计算量溢出会导致 GPU 驱动降频,表现为画面变黑/闪烁。
|
|
706
|
+
*
|
|
707
|
+
* 斜条纹伪影根因:
|
|
708
|
+
* - randomTexture 只有 255×255,低分辨率随机旋转方向导致沿对角线的方向重复
|
|
709
|
+
* - lengthCap 过大 + stepCount 过高时,步长穿过深度不连续区域,产生错误遮蔽
|
|
710
|
+
* 修复:stepCount=8, directionCount=6, lengthCap=0.02(官方推荐安全值)
|
|
711
|
+
*/
|
|
712
|
+
private applyAO;
|
|
713
|
+
/** 应用/创建 DOF 景深 */
|
|
714
|
+
private applyDOF;
|
|
725
715
|
/**
|
|
726
|
-
*
|
|
716
|
+
* 白平衡 Shader
|
|
717
|
+
* 输入:tone-mapped sRGB [0,1]
|
|
718
|
+
*
|
|
719
|
+
* temperature:Planckian locus 拟合的 RGB 通道缩放,以 6500K 为归一基准。
|
|
720
|
+
* tint:绿-洋红轴 ±0.12 感知均匀偏移。
|
|
721
|
+
*
|
|
722
|
+
* 与大气散射系统兼容处理:
|
|
723
|
+
* 大气散射计算出的天空颜色(高饱和蓝色)叠加到 sRGB 帧上后,
|
|
724
|
+
* 全局白平衡会对天空蓝色做额外偏移(暖色温压蓝 → 天空偏绿)。
|
|
725
|
+
* 通过亮度保护系数(protectHighlights)对高亮区域(天空/太阳)
|
|
726
|
+
* 渐进减弱白平衡强度,保留大气颜色的物理真实性。
|
|
727
|
+
*/
|
|
728
|
+
private getWhiteBalanceShader;
|
|
729
|
+
/**
|
|
730
|
+
* 色彩调整 Shader
|
|
731
|
+
* 输入:白平衡后的 sRGB [0,1]
|
|
732
|
+
*
|
|
733
|
+
* 在 sRGB 空间做 contrast + saturation,与 Lightroom/达芬奇行为一致。
|
|
734
|
+
* 不做 gamma pow(),避免双重 gamma 过曝。
|
|
735
|
+
*/
|
|
736
|
+
private getColorAdjustmentShader;
|
|
737
|
+
/**
|
|
738
|
+
* 阴影着色 Shader
|
|
739
|
+
* 对暗部叠加 shadowColor,smoothstep 防止硬边条纹。
|
|
740
|
+
*/
|
|
741
|
+
private getShadowColorShader;
|
|
742
|
+
/**
|
|
743
|
+
* 视觉增强 Shader(合并单 Pass,降低性能开销)
|
|
744
|
+
* 输入:阴影着色后的 sRGB [0,1]
|
|
745
|
+
*
|
|
746
|
+
* 包含三个效果:
|
|
747
|
+
*
|
|
748
|
+
* 1. 锐化(Unsharp Mask)
|
|
749
|
+
* 对 3x3 邻域取平均,用 original + strength*(original - blur) 增强细节。
|
|
750
|
+
* sharpness=0 完全跳过,sharpness=1 标准增强。
|
|
751
|
+
*
|
|
752
|
+
* 2. 色差(Chromatic Aberration)
|
|
753
|
+
* R/G/B 三通道向屏幕中心方向做微小偏移采样,模拟镜头色差。
|
|
754
|
+
* chromaticAberration=0 完全跳过,建议范围 0~0.008。
|
|
755
|
+
*
|
|
756
|
+
* 3. 暗角(Vignette)
|
|
757
|
+
* 使用距屏幕中心的归一化距离 smoothstep 生成渐变暗角。
|
|
758
|
+
* vignetteStrength 控制强度,vignetteSoftness 控制过渡范围。
|
|
759
|
+
* 最后执行,确保暗角叠加在所有效果之上。
|
|
760
|
+
*/
|
|
761
|
+
private getVisualEnhanceShader;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
/**
|
|
765
|
+
* 相机监听配置接口
|
|
766
|
+
*/
|
|
767
|
+
interface CameraListenerConfig {
|
|
768
|
+
/** 是否启用相机监听 */
|
|
769
|
+
enabled?: boolean;
|
|
770
|
+
/** 最小高度(米) */
|
|
771
|
+
minHeight?: number;
|
|
772
|
+
/** 最大高度(米) */
|
|
773
|
+
maxHeight?: number;
|
|
774
|
+
/** 过渡范围(米) */
|
|
775
|
+
transitionRange?: number;
|
|
776
|
+
/** 强度计算回调函数 */
|
|
777
|
+
intensityCallback?: (cameraHeight: number, config: CameraListenerConfig) => number;
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* 相机监听器类 - 全局管理相机高度与效果强度的关系
|
|
781
|
+
*/
|
|
782
|
+
declare class CameraListener {
|
|
783
|
+
private viewer;
|
|
784
|
+
private config;
|
|
785
|
+
private listeners;
|
|
786
|
+
private preRenderListener?;
|
|
787
|
+
private isEnabled;
|
|
788
|
+
/**
|
|
789
|
+
* 默认配置
|
|
727
790
|
*/
|
|
728
791
|
private static readonly DEFAULT_CONFIG;
|
|
729
792
|
/**
|
|
730
793
|
* 构造函数
|
|
731
|
-
* @param viewer
|
|
732
|
-
* @param config
|
|
733
794
|
*/
|
|
734
|
-
constructor(viewer: Viewer, config?:
|
|
795
|
+
constructor(viewer: Viewer, config?: CameraListenerConfig);
|
|
735
796
|
/**
|
|
736
|
-
*
|
|
737
|
-
* @returns
|
|
797
|
+
* 初始化相机监听
|
|
738
798
|
*/
|
|
739
|
-
|
|
799
|
+
initialize(): void;
|
|
740
800
|
/**
|
|
741
|
-
*
|
|
801
|
+
* 添加强度变化监听器
|
|
742
802
|
*/
|
|
743
|
-
|
|
803
|
+
addListener(callback: (intensity: number) => void): void;
|
|
744
804
|
/**
|
|
745
|
-
*
|
|
746
|
-
|
|
805
|
+
* 移除强度变化监听器
|
|
806
|
+
*/
|
|
807
|
+
removeListener(callback: (intensity: number) => void): void;
|
|
808
|
+
/**
|
|
809
|
+
* 通知所有监听器强度变化
|
|
810
|
+
*/
|
|
811
|
+
private notifyListeners;
|
|
812
|
+
/**
|
|
813
|
+
* 更新配置
|
|
814
|
+
*/
|
|
815
|
+
update(config: Partial<CameraListenerConfig>): void;
|
|
816
|
+
/**
|
|
817
|
+
* 启用相机监听
|
|
747
818
|
*/
|
|
748
819
|
enable(): void;
|
|
749
820
|
/**
|
|
750
|
-
*
|
|
751
|
-
* @returns
|
|
821
|
+
* 禁用相机监听
|
|
752
822
|
*/
|
|
753
823
|
disable(): void;
|
|
754
824
|
/**
|
|
755
|
-
*
|
|
756
|
-
* @param config
|
|
825
|
+
* 获取当前状态
|
|
757
826
|
*/
|
|
758
|
-
|
|
827
|
+
getStatus(): boolean;
|
|
759
828
|
/**
|
|
760
|
-
*
|
|
761
|
-
* @returns
|
|
829
|
+
* 获取当前配置
|
|
762
830
|
*/
|
|
763
|
-
|
|
831
|
+
getConfig(): CameraListenerConfig;
|
|
764
832
|
/**
|
|
765
|
-
*
|
|
766
|
-
* @returns
|
|
833
|
+
* 计算当前强度(同步调用)
|
|
767
834
|
*/
|
|
768
|
-
|
|
835
|
+
getCurrentIntensity(): number;
|
|
769
836
|
/**
|
|
770
|
-
*
|
|
837
|
+
* 销毁相机监听器
|
|
771
838
|
*/
|
|
772
|
-
|
|
839
|
+
destroy(): void;
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* 相机监听系统配置
|
|
843
|
+
*/
|
|
844
|
+
interface CameraListenerSystemConfig {
|
|
845
|
+
/** 体积云系统相机监听配置 */
|
|
846
|
+
volumetricClouds?: CameraListenerConfig;
|
|
847
|
+
/** 距离雾系统相机监听配置 */
|
|
848
|
+
distanceFog?: CameraListenerConfig;
|
|
849
|
+
/** 高度雾系统相机监听配置 */
|
|
850
|
+
heightFog?: CameraListenerConfig;
|
|
851
|
+
/** 大气散射系统相机监听配置 */
|
|
852
|
+
atmosphereScattering?: CameraListenerConfig;
|
|
853
|
+
}
|
|
854
|
+
/**
|
|
855
|
+
* 相机监听系统 - 全局管理多个系统的相机高度监听
|
|
856
|
+
*/
|
|
857
|
+
declare class CameraListenerSystem {
|
|
858
|
+
private viewer;
|
|
859
|
+
private config;
|
|
860
|
+
private listeners;
|
|
861
|
+
private isInitialized;
|
|
773
862
|
/**
|
|
774
|
-
*
|
|
775
|
-
* @returns
|
|
863
|
+
* 默认配置
|
|
776
864
|
*/
|
|
777
|
-
private
|
|
865
|
+
private static readonly DEFAULT_CONFIG;
|
|
778
866
|
/**
|
|
779
|
-
*
|
|
780
|
-
* @returns
|
|
867
|
+
* 构造函数
|
|
781
868
|
*/
|
|
782
|
-
|
|
869
|
+
constructor(viewer: Viewer, config?: CameraListenerSystemConfig);
|
|
783
870
|
/**
|
|
784
|
-
*
|
|
785
|
-
* @returns
|
|
871
|
+
* 初始化相机监听系统
|
|
786
872
|
*/
|
|
787
|
-
|
|
873
|
+
initialize(): void;
|
|
788
874
|
/**
|
|
789
|
-
*
|
|
875
|
+
* 获取特定系统的相机监听器
|
|
876
|
+
*/
|
|
877
|
+
getListener(systemName: string): CameraListener | undefined;
|
|
878
|
+
/**
|
|
879
|
+
* 添加系统监听器
|
|
880
|
+
*/
|
|
881
|
+
addListener(systemName: string, callback: (intensity: number) => void): void;
|
|
882
|
+
/**
|
|
883
|
+
* 移除系统监听器
|
|
884
|
+
*/
|
|
885
|
+
removeListener(systemName: string, callback: (intensity: number) => void): void;
|
|
886
|
+
/**
|
|
887
|
+
* 更新系统配置
|
|
888
|
+
*/
|
|
889
|
+
updateSystemConfig(systemName: string, config: Partial<CameraListenerConfig>): void;
|
|
890
|
+
/**
|
|
891
|
+
* 更新整体配置
|
|
892
|
+
*/
|
|
893
|
+
update(config: Partial<CameraListenerSystemConfig>): void;
|
|
894
|
+
/**
|
|
895
|
+
* 启用所有相机监听
|
|
896
|
+
*/
|
|
897
|
+
enableAll(): void;
|
|
898
|
+
/**
|
|
899
|
+
* 禁用所有相机监听
|
|
900
|
+
*/
|
|
901
|
+
disableAll(): void;
|
|
902
|
+
/**
|
|
903
|
+
* 启用特定系统的相机监听
|
|
904
|
+
*/
|
|
905
|
+
enableSystem(systemName: string): void;
|
|
906
|
+
/**
|
|
907
|
+
* 禁用特定系统的相机监听
|
|
908
|
+
*/
|
|
909
|
+
disableSystem(systemName: string): void;
|
|
910
|
+
/**
|
|
911
|
+
* 销毁相机监听系统
|
|
790
912
|
*/
|
|
791
913
|
destroy(): void;
|
|
914
|
+
/**
|
|
915
|
+
* 获取当前状态
|
|
916
|
+
*/
|
|
917
|
+
getStatus(): Record<string, boolean>;
|
|
918
|
+
/**
|
|
919
|
+
* 获取所有系统配置
|
|
920
|
+
*/
|
|
921
|
+
getConfig(): CameraListenerSystemConfig;
|
|
792
922
|
}
|
|
793
923
|
|
|
794
924
|
/**
|
|
@@ -1978,6 +2108,16 @@ declare class Render {
|
|
|
1978
2108
|
private systems;
|
|
1979
2109
|
constructor(config: RenderConfig);
|
|
1980
2110
|
private init;
|
|
2111
|
+
/**
|
|
2112
|
+
* 确保 PostProcessStage 的渲染顺序正确:云 Stage 先,大气 Stage 后
|
|
2113
|
+
*
|
|
2114
|
+
* 原因:云系统是异步初始化(需加载纹理),大气系统是同步的,
|
|
2115
|
+
* "先开大气再开云"时大气 Stage 会排在云 Stage 前面,渲染效果错误。
|
|
2116
|
+
*
|
|
2117
|
+
* 修正方式:直接操作 PostProcessStageCollection 的内部 _stages 数组调整顺序,
|
|
2118
|
+
* 不调用 remove()(remove 会 destroy GPU 资源),不触发 Shader 重编译,无视觉闪烁。
|
|
2119
|
+
*/
|
|
2120
|
+
private ensurePostProcessStageOrder;
|
|
1981
2121
|
private registerSystems;
|
|
1982
2122
|
private initialize;
|
|
1983
2123
|
/**
|
|
@@ -2046,10 +2186,6 @@ declare class Render {
|
|
|
2046
2186
|
* 读取 JSON 配置
|
|
2047
2187
|
*/
|
|
2048
2188
|
readConfigContent(jsonContent: string | any): any;
|
|
2049
|
-
/**
|
|
2050
|
-
* 解析系统配置
|
|
2051
|
-
*/
|
|
2052
|
-
private parseSystemConfig;
|
|
2053
2189
|
/**
|
|
2054
2190
|
* 获取各个系统实例(供高级使用)
|
|
2055
2191
|
*/
|
|
@@ -2468,47 +2604,18 @@ declare class ShadowControl extends BaseControlPanel {
|
|
|
2468
2604
|
declare class PostProcessingControl extends BaseControlPanel {
|
|
2469
2605
|
private container;
|
|
2470
2606
|
private preset_container;
|
|
2607
|
+
/** 后处理开启时需要解禁的所有控件 id */
|
|
2471
2608
|
private disableSliders;
|
|
2472
2609
|
constructor(viewer: Viewer, render: Render, renderConfig: RenderConfig);
|
|
2473
|
-
/**
|
|
2474
|
-
* 创建控制面板
|
|
2475
|
-
*/
|
|
2476
2610
|
createPanel(container: HTMLElement): void;
|
|
2477
|
-
/**
|
|
2478
|
-
* 获取预设标签
|
|
2479
|
-
*/
|
|
2480
|
-
private getPresetLabel;
|
|
2481
|
-
/**
|
|
2482
|
-
* 初始化事件监听
|
|
2483
|
-
*/
|
|
2484
2611
|
initEventListeners(container: HTMLElement): void;
|
|
2485
|
-
|
|
2486
|
-
* 应用滤镜预设
|
|
2487
|
-
*/
|
|
2612
|
+
private getPresetLabel;
|
|
2488
2613
|
private applyFilterPreset;
|
|
2489
|
-
/**
|
|
2490
|
-
* 刷新控制面板显示
|
|
2491
|
-
*/
|
|
2492
2614
|
protected refreshControls(config: any): void;
|
|
2493
|
-
/**
|
|
2494
|
-
* 从配置更新控件状态
|
|
2495
|
-
*/
|
|
2496
2615
|
private updateControlsFromConfig;
|
|
2497
|
-
/**
|
|
2498
|
-
* 从配置更新滑块
|
|
2499
|
-
*/
|
|
2500
2616
|
private updateSliderFromConfig;
|
|
2501
|
-
/**
|
|
2502
|
-
* 应用默认预设
|
|
2503
|
-
*/
|
|
2504
2617
|
applyDefaultPresets(): void;
|
|
2505
|
-
/**
|
|
2506
|
-
* 重置面板设置
|
|
2507
|
-
*/
|
|
2508
2618
|
reset(): void;
|
|
2509
|
-
/**
|
|
2510
|
-
* 获取面板容器
|
|
2511
|
-
*/
|
|
2512
2619
|
getContainer(): HTMLElement;
|
|
2513
2620
|
}
|
|
2514
2621
|
|