@openglobus/og 1.0.0-rc2 → 1.0.0-rc5

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 (41) hide show
  1. package/lib/camera/Camera.d.ts +18 -5
  2. package/lib/camera/PlanetCamera.d.ts +7 -0
  3. package/lib/control/CameraFrameComposer.d.ts +1 -1
  4. package/lib/control/FramebufferPreview.d.ts +16 -2
  5. package/lib/control/Navigation.d.ts +2 -1
  6. package/lib/control/cameraDepthHandler/CameraDepthHandler.d.ts +7 -0
  7. package/lib/entity/EntityCollection.d.ts +16 -2
  8. package/lib/entity/geoObject/GeoObjectHandler.d.ts +3 -0
  9. package/lib/index.d.ts +6 -2
  10. package/lib/layer/BaseTileMaterialLayer.d.ts +36 -0
  11. package/lib/layer/CanvasTiles.d.ts +8 -12
  12. package/lib/layer/Vector.d.ts +28 -7
  13. package/lib/layer/XYZ.d.ts +5 -21
  14. package/lib/og.css +1 -1
  15. package/lib/og.es.js +1 -1
  16. package/lib/og.es.js.map +1 -1
  17. package/lib/quadTree/EntityCollectionsTreeStrategy.d.ts +1 -0
  18. package/lib/quadTree/QuadTreeStrategy.d.ts +1 -0
  19. package/lib/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +1 -0
  20. package/lib/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +1 -0
  21. package/lib/renderer/PhongDeferredShading.d.ts +2 -0
  22. package/lib/renderer/Renderer.d.ts +5 -2
  23. package/lib/renderer/RendererEvents.d.ts +1 -0
  24. package/lib/renderer/projectors/Projector.d.ts +69 -0
  25. package/lib/renderer/projectors/ProjectorManager.d.ts +83 -0
  26. package/lib/renderer/projectors/ProjectorsPass.d.ts +37 -0
  27. package/lib/scene/Planet.d.ts +6 -3
  28. package/lib/scene/Scene.d.ts +1 -8
  29. package/lib/scene/SkyBox.d.ts +2 -1
  30. package/lib/shaders/geo_object/geo_object.d.ts +1 -0
  31. package/lib/shaders/projectorsPass/projectorsPass.d.ts +2 -0
  32. package/lib/terrain/EmptyTerrain.d.ts +1 -1
  33. package/lib/terrain/MapterhornTerrain.d.ts +10 -0
  34. package/lib/terrain/RgbTerrain.d.ts +11 -0
  35. package/lib/terrain/index.d.ts +6 -2
  36. package/lib/tsconfig.tsbuildinfo +1 -1
  37. package/lib/utils/FontAtlas.d.ts +5 -3
  38. package/lib/webgl/BaseFramebuffer.d.ts +14 -0
  39. package/lib/webgl/Framebuffer.d.ts +5 -0
  40. package/lib/webgl/Handler.d.ts +13 -0
  41. package/package.json +1 -1
@@ -19,6 +19,7 @@ export declare class EntityCollectionsTreeStrategy {
19
19
  constructor(quadTreeStrategy: QuadTreeStrategy, layer: Vector, nodeCapacity: number);
20
20
  insertEntity(entity: Entity, rightNow?: boolean): void;
21
21
  setPickingEnabled(pickingEnabled: boolean): void;
22
+ setReceiveProjectors(receiveProjectors: boolean): void;
22
23
  dispose(): void;
23
24
  insertEntities(entitiesForTree: Entity[]): void;
24
25
  collectVisibleEntityCollections(outArr: EntityCollection[]): void;
@@ -21,6 +21,7 @@ export interface QuadTreeStrategyParams {
21
21
  }
22
22
  export declare class QuadTreeStrategy {
23
23
  events: EventsHandler<QuadTreeStrategyEventsList>;
24
+ maxZoomLimit: number;
24
25
  name: string;
25
26
  projection: Proj;
26
27
  readonly planet: Planet;
@@ -14,6 +14,7 @@ export declare class EarthEntityCollectionsTreeStrategy extends EntityCollection
14
14
  constructor(quadTreeStrategy: QuadTreeStrategy, layer: Vector, nodeCapacity: number);
15
15
  insertEntity(entity: Entity, rightNow?: boolean): void;
16
16
  setPickingEnabled(pickingEnabled: boolean): void;
17
+ setReceiveProjectors(receiveProjectors: boolean): void;
17
18
  dispose(): void;
18
19
  insertEntities(entitiesForTree: Entity[]): void;
19
20
  collectVisibleEntityCollections(outArr: EntityCollection[]): void;
@@ -12,6 +12,7 @@ export declare class EquiEntityCollectionsTreeStrategy extends EntityCollections
12
12
  constructor(quadTreeStrategy: QuadTreeStrategy, layer: Vector, nodeCapacity: number);
13
13
  insertEntity(entity: Entity, rightNow?: boolean): void;
14
14
  setPickingEnabled(pickingEnabled: boolean): void;
15
+ setReceiveProjectors(receiveProjectors: boolean): void;
15
16
  dispose(): void;
16
17
  insertEntities(entitiesForTree: Entity[]): void;
17
18
  collectVisibleEntityCollections(outArr: EntityCollection[]): void;
@@ -1,9 +1,11 @@
1
1
  import { Framebuffer } from "../webgl/Framebuffer";
2
+ import { ProjectorsPass } from "./projectors/ProjectorsPass";
2
3
  import type { IDeferredShadingPass } from "./IDeferredShadingPass";
3
4
  import type { Renderer } from "./Renderer";
4
5
  export declare class PhongDeferredShading implements IDeferredShadingPass {
5
6
  protected _renderer: Renderer;
6
7
  protected _framebuffer: Framebuffer | null;
8
+ protected _projectorPass: ProjectorsPass;
7
9
  constructor(renderer: Renderer);
8
10
  init(): void;
9
11
  beginPass(): void;
@@ -10,6 +10,7 @@ import { LabelWorker } from "../entity/label/LabelWorker";
10
10
  import { Scene } from "../scene/Scene";
11
11
  import type { IDeferredShadingPass } from "./IDeferredShadingPass";
12
12
  import type { ITransparencyPass } from "./ITransparencyPass";
13
+ import { ProjectorManager } from "./projectors/ProjectorManager";
13
14
  import { TextureResourceManager } from "../utils/TextureResourceManager";
14
15
  import type { RendererTextureRequest } from "../utils/TextureResourceManager";
15
16
  import { TextureAtlas } from "../utils/TextureAtlas";
@@ -58,7 +59,7 @@ interface IFrameCallbackHandler {
58
59
  * - lightAmbient: Light ambient color `[r, g, b]`
59
60
  * - lightDiffuse: Light diffuse color `[r, g, b]`
60
61
  * - lightSpecular: Light specular `[r, g, b, shininess]`
61
- * @fires draw - Triggered before each frame is rendered.
62
+ * @fires predraw - Triggered before each frame is rendered.
62
63
  * @fires resize - Triggered when the canvas is resized.
63
64
  * @fires mousemove - Triggered when the mouse moves over the canvas.
64
65
  * @fires mousestop - Triggered when the mouse stops moving.
@@ -128,7 +129,7 @@ declare class Renderer {
128
129
  */
129
130
  activeCamera: Camera;
130
131
  /**
131
- * Renderer events. Represents interface for setting events like mousemove, draw, keypress etc.
132
+ * Renderer events. Represents interface for setting events like mousemove, predraw, keypress etc.
132
133
  * @public
133
134
  * @type {RendererEvents}
134
135
  */
@@ -209,6 +210,7 @@ declare class Renderer {
209
210
  _lightAmbient: Float32Array;
210
211
  _lightDiffuse: Float32Array;
211
212
  _lightSpecular: Float32Array;
213
+ projectors: ProjectorManager;
212
214
  constructor(handler: Handler | string | HTMLCanvasElement, params?: IRendererParams);
213
215
  enableBlendOneSrcAlpha(): void;
214
216
  set lightAmbient(lightAmbient: NumberArray3 | Float32Array);
@@ -354,6 +356,7 @@ declare class Renderer {
354
356
  markForDepthRefresh(): void;
355
357
  protected _drawGBufferEntityCollections(depthOrder: number): void;
356
358
  protected _drawForwardEntityCollections(depthOrder: number): void;
359
+ protected _drawLabelsForwardEntityCollections(depthOrder: number): void;
357
360
  protected _drawTransparentEntityCollections(depthOrder: number): void;
358
361
  protected _drawTransparentEntityCollectionsForward(depthOrder: number): void;
359
362
  protected _drawPickingEntityCollections(depthOrder: number): void;
@@ -13,6 +13,7 @@ export declare function createRendererEvents(renderer: Renderer): RendererEvents
13
13
  export type RendererEventsType = [
14
14
  "projchanged",
15
15
  "changerelativecenter",
16
+ "predraw",
16
17
  "draw",
17
18
  "forwardpass",
18
19
  "postforwardpass",
@@ -0,0 +1,69 @@
1
+ import type { Camera } from "../../camera/Camera";
2
+ import type { NumberArray3 } from "../../math/Vec3";
3
+ import type { NumberArray4 } from "../../math/Vec4";
4
+ import { TypedArray } from "../../utils/shared";
5
+ import type { Framebuffer } from "../../webgl/Framebuffer";
6
+ import type { ProjectorManager } from "./ProjectorManager";
7
+ export type ProjectorSourceType = "color" | "image" | "video" | "texture";
8
+ export type ProjectorRenderMode = "color" | "light";
9
+ export type ProjectorColor = NumberArray3 | NumberArray4 | TypedArray | string;
10
+ export declare const PROJECTOR_RENDER_MODE_COLOR = 0;
11
+ export declare const PROJECTOR_RENDER_MODE_LIGHT = 1;
12
+ export interface IProjectorParams {
13
+ enabled?: boolean;
14
+ camera: Camera;
15
+ framebuffer: Framebuffer;
16
+ color?: ProjectorColor;
17
+ bias?: number;
18
+ normalBias?: number;
19
+ depthEpsilon?: number;
20
+ sourceType?: ProjectorSourceType;
21
+ renderMode?: ProjectorRenderMode;
22
+ priority?: number;
23
+ }
24
+ export declare class Projector {
25
+ protected static __staticCounter__: number;
26
+ readonly id: number;
27
+ enabled: boolean;
28
+ camera: Camera;
29
+ framebuffer: Framebuffer;
30
+ color: Float32Array;
31
+ bias: number;
32
+ normalBias: number;
33
+ depthEpsilon: number;
34
+ sourceType: ProjectorSourceType;
35
+ renderMode: number;
36
+ priority: number;
37
+ /**
38
+ * Layer index in the manager-owned depth array texture. -1 if not yet added.
39
+ */
40
+ _slot: number;
41
+ /**
42
+ * Manager that owns this projector. Set in ProjectorManager.add(), cleared on remove().
43
+ */
44
+ _manager: ProjectorManager | null;
45
+ constructor(params: IProjectorParams);
46
+ protected static _resolveColor(color?: ProjectorColor): Float32Array;
47
+ setColorHTML(color: string): void;
48
+ setColor(r: number, g: number, b: number, a?: number): void;
49
+ setOpacity(a: number): void;
50
+ getColor(): string;
51
+ getOpacity(): number;
52
+ /**
53
+ * @public
54
+ * @return number
55
+ * Gets allocated layer index inside the depth array texture.
56
+ */
57
+ get slot(): number;
58
+ /**
59
+ * Gets Manager-owned TEXTURE_2D_ARRAY used as the depth target.
60
+ * @return WebGLTexture | null
61
+ */
62
+ get arrayTexture(): WebGLTexture | null;
63
+ /**
64
+ * Gets original framebuffer color texture (TEXTURE_2D) used by projector depth pass.
65
+ * ProjectorManager temporarily rebinds framebuffer attachment to array-layer,
66
+ * but framebuffer.textures[0] remains the original texture reference.
67
+ */
68
+ get depthTexture(): WebGLTexture | null;
69
+ }
@@ -0,0 +1,83 @@
1
+ import { Mat4 } from "../../math/Mat4";
2
+ import type { ShaderProgram } from "../../webgl/ShaderProgram";
3
+ import type { Renderer } from "../Renderer";
4
+ import { Projector } from "./Projector";
5
+ export type { ProjectorSourceType, ProjectorRenderMode, IProjectorParams } from "./Projector";
6
+ export { Projector } from "./Projector";
7
+ /**
8
+ * Maximum number of depth layers allocated in manager-owned projector array texture.
9
+ * Defines how many projectors can be added to the manager at once.
10
+ */
11
+ export declare const MAX_PROJECTOR_LAYERS = 64;
12
+ /**
13
+ * Maximum number of projectors processed in a single shader invocation.
14
+ * Used by forward / WOIT paths as top-K by priority per draw call.
15
+ * Deferred projector pass binds one projector per draw (`chunkSize = 1`).
16
+ */
17
+ export declare const MAX_FORWARD_PROJECTORS = 8;
18
+ /** Default texture unit where the depth array sampler is bound. */
19
+ export declare const DEFAULT_PROJECTOR_TEXTURE_UNIT_START = 6;
20
+ export declare class ProjectorManager {
21
+ protected _renderer: Renderer;
22
+ protected _projectors: Projector[];
23
+ protected _activeProjectors: Projector[];
24
+ protected _viewProjData: Float32Array;
25
+ protected _invViewProjData: Float32Array;
26
+ protected _eyeRelData: Float32Array;
27
+ protected _colorIntensityData: Float32Array;
28
+ protected _paramsData: Float32Array;
29
+ protected _layerData: Int32Array;
30
+ protected _updateActiveProjectors: boolean;
31
+ protected _depthArrayTexture: WebGLTexture | null;
32
+ /** Layer size of `_depthArrayTexture`. Determined by the first projector added. */
33
+ protected _depthSize: number;
34
+ protected _freeSlots: number[];
35
+ protected _tmpInverse: Mat4;
36
+ constructor(renderer: Renderer);
37
+ /** Total active projectors count (used by consumers to choose _proj / _noproj programs). */
38
+ get activeCount(): number;
39
+ /** Manager-owned TEXTURE_2D_ARRAY containing depth maps for all projectors. */
40
+ get depthArrayTexture(): WebGLTexture | null;
41
+ /** Snapshot of currently active projectors (sorted by priority desc). */
42
+ get active(): Projector[];
43
+ add(projector: Projector): number;
44
+ /**
45
+ * Rebinds projector.framebuffer COLOR_ATTACHMENT0 from its own TEXTURE_2D
46
+ * to (this._depthArrayTexture, projector._slot) so renders go directly into
47
+ * the array layer without any per-frame copy. The original TEXTURE_2D stays
48
+ * referenced inside framebuffer.textures[0] so framebuffer.destroy() can free it
49
+ * normally — we never overwrite that slot with the shared array texture.
50
+ */
51
+ protected _rebindFramebufferToLayer(projector: Projector): void;
52
+ /**
53
+ * Restores projector.framebuffer COLOR_ATTACHMENT0 back to its original TEXTURE_2D
54
+ * so subsequent depth renders no longer touch the freed array layer.
55
+ */
56
+ protected _restoreFramebufferAttachment(projector: Projector): void;
57
+ update(projector: Projector): boolean;
58
+ remove(projector: Projector): boolean;
59
+ clear(): void;
60
+ dispose(): void;
61
+ /**
62
+ * Binds forward/WOIT projectors to the given shader program.
63
+ * Uses top-K projectors by priority for current draw call.
64
+ *
65
+ * @returns Actual projector count uploaded (0..MAX_FORWARD_PROJECTORS).
66
+ */
67
+ bindForward(program: ShaderProgram, textureUnitStart?: number): number;
68
+ /**
69
+ * Binds exactly one projector for deferred frustum-geometry draw call.
70
+ *
71
+ * @param projectorIndex - Active projector index in priority-sorted array.
72
+ * @returns 1 if projector was bound, 0 if index is out of range.
73
+ */
74
+ bindDeferred(program: ShaderProgram, textureUnitStart?: number, projectorIndex?: number): number;
75
+ /**
76
+ * Lazily allocates the manager-owned TEXTURE_2D_ARRAY at the size of the first
77
+ * projector to be added. All subsequent projectors must use the same size.
78
+ * Returns false if a size mismatch is detected.
79
+ */
80
+ protected _ensureDepthArrayTexture(size: number): boolean;
81
+ protected _collectActiveProjectors(): Projector[];
82
+ protected _getActiveProjectors(): Projector[];
83
+ }
@@ -0,0 +1,37 @@
1
+ import { Mat4 } from "../../math/Mat4";
2
+ import type { Renderer } from "../Renderer";
3
+ import type { Framebuffer } from "../../webgl/Framebuffer";
4
+ import type { Projector } from "./Projector";
5
+ import type { NumberArray16 } from "../../math/Mat4";
6
+ import type { Vec3 } from "../../math/Vec3";
7
+ /**
8
+ * Deferred projector lighting pass.
9
+ * For every active projector draws a fullscreen quad clipped by a per-projector screen-space.
10
+ * Skipped entirely when no projectors are active.
11
+ * Scissor gives only ~5% optimization.
12
+ */
13
+ export declare class ProjectorsPass {
14
+ protected _renderer: Renderer;
15
+ protected _cornerBuffer: WebGLBuffer | null;
16
+ protected _indexBuffer: WebGLBuffer | null;
17
+ protected _indexCount: number;
18
+ protected _tmpInverse: Mat4;
19
+ protected _scissor: [number, number, number, number];
20
+ constructor(renderer: Renderer);
21
+ init(): void;
22
+ dispose(): void;
23
+ /**
24
+ * Compute the projector frustum screen-space AABB in pixels (origin = bottom-left).
25
+ * Returns:
26
+ * - true + filled `_scissor` rect when the projector is on-screen.
27
+ * - false when the projector is entirely off-screen (caller should skip the draw).
28
+ *
29
+ * If any frustum corner is behind the main camera (w<=0), falls back to the full viewport
30
+ * (CPU-side near-plane clipping of the volume is too costly to be worth it here).
31
+ */
32
+ protected _computeScissor(projector: Projector, mainPV: NumberArray16, mainEye: Vec3, viewportW: number, viewportH: number): boolean;
33
+ /**
34
+ * Apply per-projector additive projector color(lighting) into the currently bound framebuffer.
35
+ */
36
+ apply(gBuffer: Framebuffer): void;
37
+ }
@@ -51,6 +51,7 @@ export interface IPlanetParams {
51
51
  transitionOpacityEnabled?: boolean;
52
52
  atmosphereParameters?: IAtmosphereParams;
53
53
  minDistanceBeforeMemClear?: number;
54
+ disableMemClear?: boolean;
54
55
  vectorTileSize?: number;
55
56
  maxNodesCount?: number;
56
57
  transparentBackground?: boolean;
@@ -94,6 +95,7 @@ type IndexBufferCacheData = {
94
95
  * @param {boolean} [options.transitionOpacityEnabled] - Enables terrain transition opacity blending.
95
96
  * @param {IAtmosphereParams} [options.atmosphereParameters] - Atmosphere model parameters.
96
97
  * @param {number} [options.minDistanceBeforeMemClear] - Camera travel distance threshold before automatic memory cleanup.
98
+ * @param {boolean} [options.disableMemClear=false] - Disables automatic memory cleanup via memClear().
97
99
  * @param {number} [options.vectorTileSize] - Vector tile texture size for vector layer baking.
98
100
  * @param {boolean} [options.transparentBackground=false] - Enables transparent renderer background.
99
101
  * @param {INearPlaneStrategy} [options.nearPlaneStrategy] - Near-plane strategy implementation.
@@ -281,6 +283,7 @@ export declare class Planet extends Scene {
281
283
  transitionTime: number;
282
284
  protected _atmosphere: Atmosphere;
283
285
  private _minDistanceBeforeMemClear;
286
+ disableMemClear: boolean;
284
287
  private _maxNodes;
285
288
  protected _transparentBackground: boolean;
286
289
  constructor(options?: IPlanetParams);
@@ -533,12 +536,12 @@ export declare class Planet extends Scene {
533
536
  protected _renderScreenNodesWithHeightPASSNoAtmos(): void;
534
537
  protected _renderTransparentScreenNodesPASSAtmos(): void;
535
538
  protected _renderScreenNodesWithHeightPASSAtmos(): void;
536
- protected _globalPreDraw(): void;
539
+ protected onPreDraw: () => void;
537
540
  /**
538
541
  * Render node callback.
539
542
  * @public
540
543
  */
541
- preFrame(): void;
544
+ onDraw: () => void;
542
545
  /**
543
546
  * Pauses quadtree render-node collection and disables camera terrain collision checks.
544
547
  * @public
@@ -574,7 +577,7 @@ export declare class Planet extends Scene {
574
577
  * Starts a clear memory thread.
575
578
  * @public
576
579
  */
577
- memClear(): void;
580
+ memClear(force?: boolean): void;
578
581
  /**
579
582
  * Returns ray vector hit ellipsoid coordinates.
580
583
  * If the ray doesn't hit ellipsoid, it returns 'undefined'.
@@ -55,6 +55,7 @@ declare class Scene {
55
55
  protected _entityCollectionsByDepthOrder: EntityCollection[][];
56
56
  protected _pickingId: number;
57
57
  constructor(name?: string);
58
+ protected _onDraw: () => void;
58
59
  get name(): string;
59
60
  getFrameRotation(cartesian: Vec3): Quat;
60
61
  /**
@@ -98,11 +99,6 @@ declare class Scene {
98
99
  */
99
100
  removeEntityCollection(entityCollection: EntityCollection): void;
100
101
  updateEntityCollectionsDepthOrder(): void;
101
- /**
102
- * Calls render the frame node's callback. Used in renderer.
103
- * @public
104
- */
105
- draw(): void;
106
102
  /**
107
103
  * Gets render node activity.
108
104
  * @public
@@ -123,9 +119,6 @@ declare class Scene {
123
119
  setDrawMode(mode: number): void;
124
120
  updateBillboardsTexCoords(): void;
125
121
  updateStrokeTexCoords(): void;
126
- frame(): void;
127
- preFrame(): void;
128
- protected _preDraw(): void;
129
122
  drawEntityCollections(ec: EntityCollection[], depthOrder?: number): void;
130
123
  /**
131
124
  * Draw entity collections picking frame.
@@ -8,8 +8,9 @@ declare class SkyBox extends Scene {
8
8
  constructor(params: Texture3DParams, size?: number);
9
9
  static createDefault(RESOURCES_URL: string): SkyBox;
10
10
  init(): void;
11
+ onremove(): void;
11
12
  setSize(size: number): void;
12
- preFrame(): void;
13
+ protected _onPredraw: () => void;
13
14
  protected _createBuffers(): void;
14
15
  }
15
16
  export { SkyBox };
@@ -6,3 +6,4 @@ export declare const geo_object_woit: () => ShaderProgram;
6
6
  export declare function geo_object_woit_atmos(atmosParams?: AtmosphereParameters): ShaderProgram;
7
7
  export declare const geo_object_picking: () => ShaderProgram;
8
8
  export declare const geo_object_depth: () => ShaderProgram;
9
+ export declare const geo_object_depth_camera: () => ShaderProgram;
@@ -0,0 +1,2 @@
1
+ import { ShaderProgram } from "../../webgl/ShaderProgram";
2
+ export declare function projectorsPass(): ShaderProgram;
@@ -106,7 +106,7 @@ declare class EmptyTerrain {
106
106
  isReady(): boolean;
107
107
  abortLoading(): void;
108
108
  clearCache(): void;
109
- getHeightAsync(lonLat: LonLat, callback: (height: number) => void): boolean;
109
+ getHeightAsync(lonLat: LonLat, callback: (height: number) => void, zoom?: number): boolean;
110
110
  loadTerrain(segment: Segment, forceLoading?: boolean): void;
111
111
  }
112
112
  export { EmptyTerrain };
@@ -0,0 +1,10 @@
1
+ import { RgbTerrain } from "./RgbTerrain";
2
+ import type { IRgbTerrainParams } from "./RgbTerrain";
3
+ /**
4
+ * Mapterhorn Web Mercator RGB terrain (512px WebP tiles, Terrarium encoding).
5
+ * @class
6
+ * @extends {RgbTerrain}
7
+ */
8
+ export declare class MapterhornTerrain extends RgbTerrain {
9
+ constructor(name?: string | null, options?: IRgbTerrainParams);
10
+ }
@@ -4,12 +4,20 @@ import { GlobusTerrain } from "./GlobusTerrain";
4
4
  import { LonLat } from "../LonLat";
5
5
  import { Segment } from "../segment/Segment";
6
6
  import type { TypedArray } from "../utils/shared";
7
+ export type RgbTerrainEncoding = "rgb" | "terrarium";
8
+ export type RgbToHeightFunc = (r: number, g: number, b: number, minHeight: number, resolution: number) => number;
9
+ export declare function rgbToHeightRgb(r: number, g: number, b: number, minHeight: number, resolution: number): number;
10
+ export declare function rgbToHeightTerrarium(r: number, g: number, b: number, _minHeight: number, _resolution: number): number;
11
+ export declare const rgbToHeightByEncoding: Record<RgbTerrainEncoding, RgbToHeightFunc>;
12
+ export declare function resolveRgbToHeightFunc(options: Pick<IRgbTerrainParams, "encoding" | "rgbToHeightFunc">): RgbToHeightFunc;
7
13
  export interface IRgbTerrainParams extends IGlobusTerrainParams {
8
14
  equalizeNormals?: boolean;
9
15
  key?: string;
10
16
  imageSize?: number;
11
17
  minHeight?: number;
12
18
  resolution?: number;
19
+ encoding?: RgbTerrainEncoding;
20
+ rgbToHeightFunc?: RgbToHeightFunc;
13
21
  }
14
22
  /**
15
23
  * @class
@@ -21,6 +29,8 @@ export interface IRgbTerrainParams extends IGlobusTerrainParams {
21
29
  * @param {number} [options.imageSize=256] - Source image size.
22
30
  * @param {number} [options.minHeight=-10000] - Minimal height for RGB-to-height conversion.
23
31
  * @param {number} [options.resolution=0.1] - RGB-to-height conversion resolution.
32
+ * @param {RgbTerrainEncoding} [options.encoding="rgb"] - RGB elevation encoding: `"rgb"` (default) or `"terrarium"`. Ignored when `options.rgbToHeightFunc` is set.
33
+ * @param {RgbToHeightFunc} [options.rgbToHeightFunc] - Custom RGB-to-height decoder with signature `(r, g, b, minHeight, resolution) => number`. Defaults to `rgbToHeightByEncoding[options.encoding]`.
24
34
  */
25
35
  declare class RgbTerrain extends GlobusTerrain {
26
36
  protected _imageSize: number;
@@ -28,6 +38,7 @@ declare class RgbTerrain extends GlobusTerrain {
28
38
  protected _imageDataCache: Record<string, Uint8ClampedArray>;
29
39
  protected _minHeight: number;
30
40
  protected _resolution: number;
41
+ protected _rgbToHeight: RgbToHeightFunc;
31
42
  constructor(name: string | null, options?: IRgbTerrainParams);
32
43
  static checkNoDataValue(noDataValues: number[] | TypedArray, value: number): boolean;
33
44
  rgb2Height(r: number, g: number, b: number): number;
@@ -1,6 +1,10 @@
1
1
  import { BilTerrain } from "./BilTerrain";
2
2
  import { EmptyTerrain } from "./EmptyTerrain";
3
3
  import { GlobusTerrain } from "./GlobusTerrain";
4
- import { RgbTerrain } from "./RgbTerrain";
4
+ import { RgbTerrain, rgbToHeightByEncoding, rgbToHeightRgb, rgbToHeightTerrarium, resolveRgbToHeightFunc } from "./RgbTerrain";
5
+ import type { IRgbTerrainParams, RgbTerrainEncoding, RgbToHeightFunc } from "./RgbTerrain";
5
6
  import { GlobusRgbTerrain } from "./GlobusRgbTerrain";
6
- export { EmptyTerrain, GlobusTerrain, RgbTerrain, BilTerrain, GlobusRgbTerrain };
7
+ import { MapterhornTerrain } from "./MapterhornTerrain";
8
+ export { EmptyTerrain, GlobusTerrain, RgbTerrain, BilTerrain, GlobusRgbTerrain, MapterhornTerrain };
9
+ export { rgbToHeightByEncoding, rgbToHeightRgb, rgbToHeightTerrarium, resolveRgbToHeightFunc };
10
+ export type { IRgbTerrainParams, RgbTerrainEncoding, RgbToHeightFunc };
@@ -1 +1 @@
1
- {"root":["../src/Clock.ts","../src/Deferred.ts","../src/Events.ts","../src/Extent.ts","../src/Globe.ts","../src/ImageCanvas.ts","../src/Lock.ts","../src/LonLat.ts","../src/Object3d.ts","../src/Popup.ts","../src/QueueArray.ts","../src/Rectangle.ts","../src/Stack.ts","../src/cons.ts","../src/index.ts","../src/math.ts","../src/mercator.ts","../src/shadeModeConstants.ts","../src/astro/astro.ts","../src/astro/earth.ts","../src/astro/jd.ts","../src/astro/orbit.ts","../src/astro/rotation.ts","../src/bv/Box.ts","../src/bv/Sphere.ts","../src/bv/index.ts","../src/camera/Camera.ts","../src/camera/Frustum.ts","../src/camera/PlanetCamera.ts","../src/camera/index.ts","../src/control/CameraFrameComposer.ts","../src/control/CameraFrameHandler.ts","../src/control/CameraLock.ts","../src/control/CompassButton.ts","../src/control/Control.ts","../src/control/DebugInfo.ts","../src/control/DrawingSwitcher.ts","../src/control/EarthCoordinates.ts","../src/control/FramebufferPreview.ts","../src/control/GeoImageDragControl.ts","../src/control/KeyboardNavigation.ts","../src/control/LayerAnimation.ts","../src/control/LayerSwitcher.ts","../src/control/Lighting.ts","../src/control/Navigation.ts","../src/control/OrthoSwitcher.ts","../src/control/RulerSwitcher.ts","../src/control/ScaleControl.ts","../src/control/SegmentBoundVisualization.ts","../src/control/ShowFps.ts","../src/control/SimpleNavigation.ts","../src/control/SimpleSkyBackground.ts","../src/control/SimpleTouchNavigation.ts","../src/control/Sun.ts","../src/control/ToggleWireframe.ts","../src/control/TouchNavigation.ts","../src/control/index.ts","../src/control/atmosphere/Atmosphere.ts","../src/control/atmosphere/AtmosphereConfig.ts","../src/control/cameraDepthHandler/CameraDepthHandler.ts","../src/control/cameraDepthHandler/camera_depth.ts","../src/control/drawing/DrawingControl.ts","../src/control/drawing/LineStringDrawingScene.ts","../src/control/drawing/PolygonDrawingScene.ts","../src/control/elevationProfile/ElevationProfile.ts","../src/control/elevationProfile/ElevationProfileButtonsView.ts","../src/control/elevationProfile/ElevationProfileControl.ts","../src/control/elevationProfile/ElevationProfileLegend.ts","../src/control/elevationProfile/ElevationProfileScene.ts","../src/control/elevationProfile/ElevationProfileView.ts","../src/control/elevationProfile/PointListDialog.ts","../src/control/entityEditor/ArrowEntity.ts","../src/control/entityEditor/AxisTrackEntity.ts","../src/control/entityEditor/EntityEditor.ts","../src/control/entityEditor/EntityEditorDialog.ts","../src/control/entityEditor/EntityEditorScene.ts","../src/control/entityEditor/MoveAxisEntity.ts","../src/control/entityEditor/MovePlaneEntity.ts","../src/control/entityEditor/RotateEntity.ts","../src/control/entityEditor/colors.ts","../src/control/entityTree/EntityTree.ts","../src/control/entityTree/EntityTreeView.ts","../src/control/heightRuler/HeightRuler.ts","../src/control/heightRuler/HeightRulerScene.ts","../src/control/heightRuler/HeightRulerSwitcher.ts","../src/control/object3dManager/Object3dCollection.ts","../src/control/object3dManager/Object3dCollectionView.ts","../src/control/object3dManager/Object3dItemView.ts","../src/control/object3dManager/Object3dManager.ts","../src/control/object3dManager/Object3dManagerDialog.ts","../src/control/ruler/Ruler.ts","../src/control/ruler/RulerScene.ts","../src/control/selection/Selection.ts","../src/control/selection/SelectionScene.ts","../src/control/timeline/TimelineControl.ts","../src/control/timeline/TimelineModel.ts","../src/control/timeline/TimelineView.ts","../src/control/timeline/timelineUtils.ts","../src/control/visibleExtent/Segment.js","../src/control/visibleExtent/VisibleExtent.js","../src/control/visibleExtent/segment.ts","../src/ellipsoid/Ellipsoid.ts","../src/ellipsoid/index.ts","../src/ellipsoid/mars.ts","../src/ellipsoid/moon.ts","../src/ellipsoid/wgs84.ts","../src/entity/Entity.ts","../src/entity/EntityCollection.ts","../src/entity/index.ts","../src/entity/billboard/BaseBillboard.ts","../src/entity/billboard/BaseBillboardHandler.ts","../src/entity/billboard/Billboard.ts","../src/entity/billboard/BillboardHandler.ts","../src/entity/geoObject/GeoObject.ts","../src/entity/geoObject/GeoObjectHandler.ts","../src/entity/geoObject/InstanceData.ts","../src/entity/geometry/Geometry.ts","../src/entity/geometry/GeometryHandler.ts","../src/entity/label/Label.ts","../src/entity/label/LabelHandler.ts","../src/entity/label/LabelWorker.ts","../src/entity/label/LabelWorker.worker.js","../src/entity/pointCloud/PointCloud.ts","../src/entity/pointCloud/PointCloudHandler.ts","../src/entity/polyline/Polyline.ts","../src/entity/polyline/PolylineBatchRenderer.ts","../src/entity/polyline/PolylineHandler.ts","../src/entity/ray/Ray.ts","../src/entity/ray/RayHandler.ts","../src/entity/strip/Strip.ts","../src/entity/strip/StripHandler.ts","../src/input/KeyboardHandler.ts","../src/input/MouseHandler.ts","../src/input/PointerHandler.ts","../src/input/input.ts","../src/layer/BaseGeoImage.ts","../src/layer/Bing.ts","../src/layer/CanvasTiles.ts","../src/layer/GeoImage.ts","../src/layer/GeoTexture2d.ts","../src/layer/GeoVideo.ts","../src/layer/KML.ts","../src/layer/Layer.ts","../src/layer/Material.ts","../src/layer/OpenStreetMap.ts","../src/layer/Vector.ts","../src/layer/WMS.ts","../src/layer/XYZ.ts","../src/layer/index.ts","../src/math/Line2.ts","../src/math/Line3.ts","../src/math/Mat3.ts","../src/math/Mat4.ts","../src/math/Plane.ts","../src/math/Quat.ts","../src/math/Ray.ts","../src/math/Vec2.ts","../src/math/Vec3.ts","../src/math/Vec4.ts","../src/math/coder.ts","../src/math/index.ts","../src/proj/EPSG3857.ts","../src/proj/EPSG4326.ts","../src/proj/Proj.ts","../src/proj/equi.ts","../src/quadTree/EntityCollectionNode.ts","../src/quadTree/EntityCollectionsTreeStrategy.ts","../src/quadTree/Node.ts","../src/quadTree/QuadTreeStrategy.ts","../src/quadTree/index.ts","../src/quadTree/quadTree.ts","../src/quadTree/EPSG4326/EPSG4326QuadTreeStrategy.ts","../src/quadTree/earth/EarthEntityCollectionNodeLonLat.ts","../src/quadTree/earth/EarthEntityCollectionsTreeStrategy.ts","../src/quadTree/earth/EarthQuadTreeStrategy.ts","../src/quadTree/equi/EquiEntityCollectionNodeLonLat.ts","../src/quadTree/equi/EquiEntityCollectionsTreeStrategy.ts","../src/quadTree/equi/EquiQuadTreeStrategy.ts","../src/quadTree/wgs84/Wgs84QuadTreeStrategy.ts","../src/renderer/AtmosphereDeferredShading.ts","../src/renderer/IDeferredShadingPass.ts","../src/renderer/ITransparencyPass.ts","../src/renderer/PhongDeferredShading.ts","../src/renderer/Renderer.ts","../src/renderer/RendererEvents.ts","../src/renderer/WOITPass.ts","../src/scene/AltitudeNearPlaneStrategy.ts","../src/scene/Axes.ts","../src/scene/Planet.ts","../src/scene/Scene.ts","../src/scene/SkyBox.ts","../src/scene/index.ts","../src/segment/Segment.ts","../src/segment/SegmentLonLat.ts","../src/segment/SegmentLonLatEqui.ts","../src/segment/Slice.ts","../src/segment/segmentHelper.ts","../src/shaders/applyDeferredDepth.ts","../src/shaders/depth.ts","../src/shaders/pointCloud.ts","../src/shaders/screenFrame.ts","../src/shaders/skybox.ts","../src/shaders/weightedOITResolve.ts","../src/shaders/atmos/atmos.ts","../src/shaders/billboard/billboard.ts","../src/shaders/deferredShading/deferredShading.ts","../src/shaders/deferredShading/deferredShadingAtmos.ts","../src/shaders/geo_object/geo_object.ts","../src/shaders/label/label.ts","../src/shaders/polyline/polyline.ts","../src/shaders/ray/ray.ts","../src/shaders/segment/segment.ts","../src/shaders/strip/strip.ts","../src/shaders/tone_mapping/toneMapping.ts","../src/terrain/BilTerrain.ts","../src/terrain/EmptyTerrain.ts","../src/terrain/Geoid.ts","../src/terrain/GlobusRgbTerrain.ts","../src/terrain/GlobusTerrain.ts","../src/terrain/RgbTerrain.ts","../src/terrain/index.ts","../src/ui/Button.ts","../src/ui/ButtonGroup.ts","../src/ui/Checkbox.ts","../src/ui/Color.ts","../src/ui/Dialog.ts","../src/ui/Input.ts","../src/ui/Slider.ts","../src/ui/ToggleButton.ts","../src/ui/View.ts","../src/ui/icons.ts","../src/ui/index.ts","../src/utils/BaseWorker.ts","../src/utils/FontAtlas.ts","../src/utils/GeoImageCreator.ts","../src/utils/ImagesCacheManager.ts","../src/utils/Loader.ts","../src/utils/NormalMapCreator.ts","../src/utils/PlainSegmentWorker.ts","../src/utils/PlainSegmentWorker.worker.js","../src/utils/TerrainWorker.ts","../src/utils/TerrainWorker.worker.js","../src/utils/TextureAtlas.ts","../src/utils/TextureResourceManager.ts","../src/utils/VectorTileCreator.ts","../src/utils/colorSpace.ts","../src/utils/colorTable.ts","../src/utils/earcut.ts","../src/utils/easing.ts","../src/utils/objParser.ts","../src/utils/shared.ts","../src/utils/textureResourceMeta.ts","../src/utils/units.ts","../src/utils/gltf/glbParser.ts","../src/utils/gltf/gltfParser.ts","../src/utils/gltf/types.ts","../src/webgl/BaseFramebuffer.ts","../src/webgl/Framebuffer.ts","../src/webgl/Handler.ts","../src/webgl/Multisample.ts","../src/webgl/ShaderProgram.ts","../src/webgl/index.ts","../src/webgl/types.ts","../src/webgl/variableHandlers.ts"],"version":"5.8.3"}
1
+ {"root":["../src/Clock.ts","../src/Deferred.ts","../src/Events.ts","../src/Extent.ts","../src/Globe.ts","../src/ImageCanvas.ts","../src/Lock.ts","../src/LonLat.ts","../src/Object3d.ts","../src/Popup.ts","../src/QueueArray.ts","../src/Rectangle.ts","../src/Stack.ts","../src/cons.ts","../src/index.ts","../src/math.ts","../src/mercator.ts","../src/shadeModeConstants.ts","../src/astro/astro.ts","../src/astro/earth.ts","../src/astro/jd.ts","../src/astro/orbit.ts","../src/astro/rotation.ts","../src/bv/Box.ts","../src/bv/Sphere.ts","../src/bv/index.ts","../src/camera/Camera.ts","../src/camera/Frustum.ts","../src/camera/PlanetCamera.ts","../src/camera/index.ts","../src/control/CameraFrameComposer.ts","../src/control/CameraFrameHandler.ts","../src/control/CameraLock.ts","../src/control/CompassButton.ts","../src/control/Control.ts","../src/control/DebugInfo.ts","../src/control/DrawingSwitcher.ts","../src/control/EarthCoordinates.ts","../src/control/FramebufferPreview.ts","../src/control/GeoImageDragControl.ts","../src/control/KeyboardNavigation.ts","../src/control/LayerAnimation.ts","../src/control/LayerSwitcher.ts","../src/control/Lighting.ts","../src/control/Navigation.ts","../src/control/OrthoSwitcher.ts","../src/control/RulerSwitcher.ts","../src/control/ScaleControl.ts","../src/control/SegmentBoundVisualization.ts","../src/control/ShowFps.ts","../src/control/SimpleNavigation.ts","../src/control/SimpleSkyBackground.ts","../src/control/SimpleTouchNavigation.ts","../src/control/Sun.ts","../src/control/ToggleWireframe.ts","../src/control/TouchNavigation.ts","../src/control/index.ts","../src/control/atmosphere/Atmosphere.ts","../src/control/atmosphere/AtmosphereConfig.ts","../src/control/cameraDepthHandler/CameraDepthHandler.ts","../src/control/cameraDepthHandler/camera_depth.ts","../src/control/drawing/DrawingControl.ts","../src/control/drawing/LineStringDrawingScene.ts","../src/control/drawing/PolygonDrawingScene.ts","../src/control/elevationProfile/ElevationProfile.ts","../src/control/elevationProfile/ElevationProfileButtonsView.ts","../src/control/elevationProfile/ElevationProfileControl.ts","../src/control/elevationProfile/ElevationProfileLegend.ts","../src/control/elevationProfile/ElevationProfileScene.ts","../src/control/elevationProfile/ElevationProfileView.ts","../src/control/elevationProfile/PointListDialog.ts","../src/control/entityEditor/ArrowEntity.ts","../src/control/entityEditor/AxisTrackEntity.ts","../src/control/entityEditor/EntityEditor.ts","../src/control/entityEditor/EntityEditorDialog.ts","../src/control/entityEditor/EntityEditorScene.ts","../src/control/entityEditor/MoveAxisEntity.ts","../src/control/entityEditor/MovePlaneEntity.ts","../src/control/entityEditor/RotateEntity.ts","../src/control/entityEditor/colors.ts","../src/control/entityTree/EntityTree.ts","../src/control/entityTree/EntityTreeView.ts","../src/control/heightRuler/HeightRuler.ts","../src/control/heightRuler/HeightRulerScene.ts","../src/control/heightRuler/HeightRulerSwitcher.ts","../src/control/object3dManager/Object3dCollection.ts","../src/control/object3dManager/Object3dCollectionView.ts","../src/control/object3dManager/Object3dItemView.ts","../src/control/object3dManager/Object3dManager.ts","../src/control/object3dManager/Object3dManagerDialog.ts","../src/control/ruler/Ruler.ts","../src/control/ruler/RulerScene.ts","../src/control/selection/Selection.ts","../src/control/selection/SelectionScene.ts","../src/control/timeline/TimelineControl.ts","../src/control/timeline/TimelineModel.ts","../src/control/timeline/TimelineView.ts","../src/control/timeline/timelineUtils.ts","../src/control/visibleExtent/Segment.js","../src/control/visibleExtent/VisibleExtent.js","../src/control/visibleExtent/segment.ts","../src/ellipsoid/Ellipsoid.ts","../src/ellipsoid/index.ts","../src/ellipsoid/mars.ts","../src/ellipsoid/moon.ts","../src/ellipsoid/wgs84.ts","../src/entity/Entity.ts","../src/entity/EntityCollection.ts","../src/entity/index.ts","../src/entity/billboard/BaseBillboard.ts","../src/entity/billboard/BaseBillboardHandler.ts","../src/entity/billboard/Billboard.ts","../src/entity/billboard/BillboardHandler.ts","../src/entity/geoObject/GeoObject.ts","../src/entity/geoObject/GeoObjectHandler.ts","../src/entity/geoObject/InstanceData.ts","../src/entity/geometry/Geometry.ts","../src/entity/geometry/GeometryHandler.ts","../src/entity/label/Label.ts","../src/entity/label/LabelHandler.ts","../src/entity/label/LabelWorker.ts","../src/entity/label/LabelWorker.worker.js","../src/entity/pointCloud/PointCloud.ts","../src/entity/pointCloud/PointCloudHandler.ts","../src/entity/polyline/Polyline.ts","../src/entity/polyline/PolylineBatchRenderer.ts","../src/entity/polyline/PolylineHandler.ts","../src/entity/ray/Ray.ts","../src/entity/ray/RayHandler.ts","../src/entity/strip/Strip.ts","../src/entity/strip/StripHandler.ts","../src/input/KeyboardHandler.ts","../src/input/MouseHandler.ts","../src/input/PointerHandler.ts","../src/input/input.ts","../src/layer/BaseGeoImage.ts","../src/layer/BaseTileMaterialLayer.ts","../src/layer/Bing.ts","../src/layer/CanvasTiles.ts","../src/layer/GeoImage.ts","../src/layer/GeoTexture2d.ts","../src/layer/GeoVideo.ts","../src/layer/KML.ts","../src/layer/Layer.ts","../src/layer/Material.ts","../src/layer/OpenStreetMap.ts","../src/layer/Vector.ts","../src/layer/WMS.ts","../src/layer/XYZ.ts","../src/layer/index.ts","../src/math/Line2.ts","../src/math/Line3.ts","../src/math/Mat3.ts","../src/math/Mat4.ts","../src/math/Plane.ts","../src/math/Quat.ts","../src/math/Ray.ts","../src/math/Vec2.ts","../src/math/Vec3.ts","../src/math/Vec4.ts","../src/math/coder.ts","../src/math/index.ts","../src/proj/EPSG3857.ts","../src/proj/EPSG4326.ts","../src/proj/Proj.ts","../src/proj/equi.ts","../src/quadTree/EntityCollectionNode.ts","../src/quadTree/EntityCollectionsTreeStrategy.ts","../src/quadTree/Node.ts","../src/quadTree/QuadTreeStrategy.ts","../src/quadTree/index.ts","../src/quadTree/quadTree.ts","../src/quadTree/EPSG4326/EPSG4326QuadTreeStrategy.ts","../src/quadTree/earth/EarthEntityCollectionNodeLonLat.ts","../src/quadTree/earth/EarthEntityCollectionsTreeStrategy.ts","../src/quadTree/earth/EarthQuadTreeStrategy.ts","../src/quadTree/equi/EquiEntityCollectionNodeLonLat.ts","../src/quadTree/equi/EquiEntityCollectionsTreeStrategy.ts","../src/quadTree/equi/EquiQuadTreeStrategy.ts","../src/quadTree/wgs84/Wgs84QuadTreeStrategy.ts","../src/renderer/AtmosphereDeferredShading.ts","../src/renderer/IDeferredShadingPass.ts","../src/renderer/ITransparencyPass.ts","../src/renderer/PhongDeferredShading.ts","../src/renderer/Renderer.ts","../src/renderer/RendererEvents.ts","../src/renderer/WOITPass.ts","../src/renderer/projectors/Projector.ts","../src/renderer/projectors/ProjectorManager.ts","../src/renderer/projectors/ProjectorsPass.ts","../src/scene/AltitudeNearPlaneStrategy.ts","../src/scene/Axes.ts","../src/scene/Planet.ts","../src/scene/Scene.ts","../src/scene/SkyBox.ts","../src/scene/index.ts","../src/segment/Segment.ts","../src/segment/SegmentLonLat.ts","../src/segment/SegmentLonLatEqui.ts","../src/segment/Slice.ts","../src/segment/segmentHelper.ts","../src/shaders/applyDeferredDepth.ts","../src/shaders/depth.ts","../src/shaders/pointCloud.ts","../src/shaders/screenFrame.ts","../src/shaders/skybox.ts","../src/shaders/weightedOITResolve.ts","../src/shaders/atmos/atmos.ts","../src/shaders/billboard/billboard.ts","../src/shaders/deferredShading/deferredShading.ts","../src/shaders/deferredShading/deferredShadingAtmos.ts","../src/shaders/geo_object/geo_object.ts","../src/shaders/label/label.ts","../src/shaders/polyline/polyline.ts","../src/shaders/projectorsPass/projectorsPass.ts","../src/shaders/ray/ray.ts","../src/shaders/segment/segment.ts","../src/shaders/strip/strip.ts","../src/shaders/tone_mapping/toneMapping.ts","../src/terrain/BilTerrain.ts","../src/terrain/EmptyTerrain.ts","../src/terrain/Geoid.ts","../src/terrain/GlobusRgbTerrain.ts","../src/terrain/GlobusTerrain.ts","../src/terrain/MapterhornTerrain.ts","../src/terrain/RgbTerrain.ts","../src/terrain/index.ts","../src/ui/Button.ts","../src/ui/ButtonGroup.ts","../src/ui/Checkbox.ts","../src/ui/Color.ts","../src/ui/Dialog.ts","../src/ui/Input.ts","../src/ui/Slider.ts","../src/ui/ToggleButton.ts","../src/ui/View.ts","../src/ui/icons.ts","../src/ui/index.ts","../src/utils/BaseWorker.ts","../src/utils/FontAtlas.ts","../src/utils/GeoImageCreator.ts","../src/utils/ImagesCacheManager.ts","../src/utils/Loader.ts","../src/utils/NormalMapCreator.ts","../src/utils/PlainSegmentWorker.ts","../src/utils/PlainSegmentWorker.worker.js","../src/utils/TerrainWorker.ts","../src/utils/TerrainWorker.worker.js","../src/utils/TextureAtlas.ts","../src/utils/TextureResourceManager.ts","../src/utils/VectorTileCreator.ts","../src/utils/colorSpace.ts","../src/utils/colorTable.ts","../src/utils/earcut.ts","../src/utils/easing.ts","../src/utils/objParser.ts","../src/utils/shared.ts","../src/utils/textureResourceMeta.ts","../src/utils/units.ts","../src/utils/gltf/glbParser.ts","../src/utils/gltf/gltfParser.ts","../src/utils/gltf/types.ts","../src/webgl/BaseFramebuffer.ts","../src/webgl/Framebuffer.ts","../src/webgl/Handler.ts","../src/webgl/Multisample.ts","../src/webgl/ShaderProgram.ts","../src/webgl/index.ts","../src/webgl/types.ts","../src/webgl/variableHandlers.ts"],"version":"5.8.3"}
@@ -1,6 +1,6 @@
1
1
  import { Deferred } from "../Deferred";
2
2
  import { Rectangle } from "../Rectangle";
3
- import { TextureAtlas, TextureAtlasNode } from "./TextureAtlas";
3
+ import { TextureAtlasNode } from "./TextureAtlas";
4
4
  import type { WebGLTextureExt } from "../webgl/Handler";
5
5
  import { Handler } from "../webgl/Handler";
6
6
  import type { HTMLImageElementExt } from "./ImagesCacheManager";
@@ -77,16 +77,18 @@ export interface IMSDFAtlasParams {
77
77
  glyphs: IMSDFGlyph[];
78
78
  kerning: IMSDFKerning[];
79
79
  }
80
- declare class FontTextureAtlas extends TextureAtlas {
80
+ declare class FontTextureAtlas {
81
81
  width: number;
82
82
  height: number;
83
83
  gliphSize: number;
84
84
  distanceRange: number;
85
85
  isMtsdf: boolean;
86
+ sourceImage: HTMLImageElementExt | null;
86
87
  nodes: Map<number, FontTextureAtlasNode>;
87
88
  kernings: Record<number, Record<number, number>>;
88
- constructor(width?: number, height?: number);
89
+ constructor();
89
90
  get(key: number): FontTextureAtlasNode | undefined;
91
+ createTexture(img?: HTMLImageElementExt | null): void;
90
92
  }
91
93
  interface IMetrics extends IChar {
92
94
  nChar: string;
@@ -47,6 +47,20 @@ export declare class BaseFramebuffer {
47
47
  */
48
48
  isComplete(): boolean;
49
49
  checkStatus(): number;
50
+ /**
51
+ * Attaches texture array layer to framebuffer color attachment and returns framebuffer status.
52
+ * @public
53
+ * @param {WebGLTexture | null} texture - Source texture array.
54
+ * @param {number} layer - Array layer index.
55
+ * @param {number} [colorAttachmentIndex=0] - Color attachment index.
56
+ * @param {number} [level=0] - Mipmap level.
57
+ * @returns {number} - Framebuffer status enum.
58
+ */
59
+ attachLayer(texture: WebGLTexture | null, layer: number, colorAttachmentIndex?: number, level?: number): number;
60
+ /**
61
+ * Converts framebuffer status enum to readable text.
62
+ */
63
+ statusToText(status: number): string;
50
64
  /**
51
65
  * Activate framebuffer frame to draw.
52
66
  * @public
@@ -73,6 +73,11 @@ export declare class Framebuffer extends BaseFramebuffer {
73
73
  * }],
74
74
  **/
75
75
  readPixelBuffersAsync: (callback?: (buf: this) => void) => void;
76
+ /**
77
+ * Synchronously reads all configured async pixel buffers for the current framebuffer state.
78
+ * Use when the same-frame CPU readback is required.
79
+ */
80
+ readPixelBuffers(): void;
76
81
  getPixelBufferData(targetIndex?: number): TypedArray | null;
77
82
  protected _createPixelBuffer(target: ITarget): void;
78
83
  /**
@@ -198,6 +198,19 @@ declare class Handler {
198
198
  * @returns {WebGLTexture | null} - Created WebGL texture object.
199
199
  */
200
200
  createEmptyTexture2DExt(width?: number, height?: number, filter?: string, internalFormat?: string, param?: string, levels?: number): WebGLTexture | null;
201
+ /**
202
+ * Creates an empty immutable 2D array texture (WebGL2).
203
+ * @public
204
+ * @param {number} [width=1] - Texture width in pixels.
205
+ * @param {number} [height=1] - Texture height in pixels.
206
+ * @param {number} [depth=1] - Number of array layers.
207
+ * @param {string} [filter="NEAREST"] - GL_TEXTURE_MIN_FILTER and GL_TEXTURE_MAG_FILTER value.
208
+ * @param {string} [internalFormat="RGBA8"] - Sized internal format (e.g. "RGBA8", "R32F").
209
+ * @param {string} [param="CLAMP_TO_EDGE"] - GL_TEXTURE_WRAP_S/T value.
210
+ * @param {number} [levels=1] - Number of mipmap levels (immutable storage).
211
+ * @returns {WebGLTexture | null} - Created WebGL texture object.
212
+ */
213
+ createEmptyTexture2DArrayExt(width?: number, height?: number, depth?: number, filter?: string, internalFormat?: string, param?: string, levels?: number): WebGLTexture | null;
201
214
  /**
202
215
  * Creates Empty NEAREST filtered texture.
203
216
  * @public
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openglobus/og",
3
- "version": "1.0.0-rc2",
3
+ "version": "1.0.0-rc5",
4
4
  "description": "[openglobus](https://www.openglobus.org/) is a javascript/typescript library designed to display interactive 3d maps and planets with map tiles, imagery and vector data, markers, and 3D objects. It uses the WebGL technology, open source, and completely free.",
5
5
  "main": "lib/og.es.js",
6
6
  "types": "lib/index.d.ts",