@openglobus/og 0.28.7 → 1.0.0-rc10

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 (242) hide show
  1. package/LICENSE.md +218 -4
  2. package/README.md +33 -18
  3. package/lib/Deferred.d.ts +2 -2
  4. package/lib/Events.d.ts +1 -1
  5. package/lib/Globe.d.ts +22 -11
  6. package/lib/Object3d.d.ts +18 -15
  7. package/lib/Popup.d.ts +2 -2
  8. package/lib/assets/LabelWorker.worker-C24YLEkW.js.map +1 -0
  9. package/lib/assets/PlainSegmentWorker.worker-DJHXd0bF.js.map +1 -0
  10. package/lib/assets/TerrainWorker.worker-B4Gp0jCy.js.map +1 -0
  11. package/lib/bv/index.d.ts +2 -2
  12. package/lib/camera/Camera.d.ts +320 -33
  13. package/lib/camera/Frustum.d.ts +136 -15
  14. package/lib/camera/PlanetCamera.d.ts +114 -11
  15. package/lib/camera/index.d.ts +2 -2
  16. package/lib/control/CompassButton.d.ts +2 -2
  17. package/lib/control/EarthCoordinates.d.ts +5 -2
  18. package/lib/control/FramebufferPreview.d.ts +20 -4
  19. package/lib/control/GeoImageDragControl.d.ts +1 -1
  20. package/lib/control/LayerAnimation.d.ts +2 -2
  21. package/lib/control/LayerSwitcher.d.ts +3 -0
  22. package/lib/control/Lighting.d.ts +7 -2
  23. package/lib/control/Navigation.d.ts +27 -12
  24. package/lib/control/OrthoSwitcher.d.ts +18 -0
  25. package/lib/control/SimpleTouchNavigation.d.ts +44 -0
  26. package/lib/control/Sun.d.ts +4 -2
  27. package/lib/control/TouchNavigation.d.ts +4 -8
  28. package/lib/control/atmosphere/Atmosphere.d.ts +2 -0
  29. package/lib/control/atmosphere/AtmosphereConfig.d.ts +2 -6
  30. package/lib/control/depthCamera/DepthCamera.d.ts +118 -0
  31. package/lib/control/depthCamera/DepthCameraHandler.d.ts +25 -0
  32. package/lib/control/depthCamera/depth_camera.d.ts +2 -0
  33. package/lib/control/drawing/LineStringDrawingScene.d.ts +1 -0
  34. package/lib/control/drawing/PolygonDrawingScene.d.ts +14 -14
  35. package/lib/control/elevationProfile/ElevationProfile.d.ts +1 -1
  36. package/lib/control/elevationProfile/ElevationProfileLegend.d.ts +1 -1
  37. package/lib/control/elevationProfile/ElevationProfileScene.d.ts +9 -12
  38. package/lib/control/elevationProfile/ElevationProfileView.d.ts +16 -5
  39. package/lib/control/entityEditor/CameraEditorView.d.ts +62 -0
  40. package/lib/control/entityEditor/EntityEditor.d.ts +20 -0
  41. package/lib/control/entityEditor/EntityEditorDialog.d.ts +38 -0
  42. package/lib/control/{geoObjectEditor/GeoObjectEditorScene.d.ts → entityEditor/EntityEditorScene.d.ts} +28 -12
  43. package/lib/control/{geoObjectEditor/GeoObjectEditorDialog.d.ts → entityEditor/EntityEditorView.d.ts} +22 -23
  44. package/lib/control/entityEditor/ProjectorEditorView.d.ts +31 -0
  45. package/lib/control/{geoObjectEditor → entityEditor}/RotateEntity.d.ts +5 -1
  46. package/lib/control/{geoObjectEditor → entityEditor}/colors.d.ts +2 -2
  47. package/lib/control/entityTree/EntityTree.d.ts +46 -0
  48. package/lib/control/entityTree/EntityTreeView.d.ts +24 -0
  49. package/lib/control/heightRuler/HeightRulerScene.d.ts +3 -2
  50. package/lib/control/index.d.ts +7 -6
  51. package/lib/control/ruler/RulerScene.d.ts +8 -8
  52. package/lib/control/selection/SelectionScene.d.ts +6 -6
  53. package/lib/control/timeline/TimelineControl.d.ts +19 -2
  54. package/lib/control/timeline/TimelineModel.d.ts +1 -1
  55. package/lib/control/timeline/TimelineView.d.ts +52 -13
  56. package/lib/control/visibleExtent/segment.d.ts +7 -0
  57. package/lib/ellipsoid/index.d.ts +4 -4
  58. package/lib/entity/Entity.d.ts +114 -100
  59. package/lib/entity/EntityCollection.d.ts +140 -72
  60. package/lib/entity/{BaseBillboard.d.ts → billboard/BaseBillboard.d.ts} +16 -17
  61. package/lib/entity/{BaseBillboardHandler.d.ts → billboard/BaseBillboardHandler.d.ts} +24 -9
  62. package/lib/entity/{Billboard.d.ts → billboard/Billboard.d.ts} +11 -7
  63. package/lib/entity/{BillboardHandler.d.ts → billboard/BillboardHandler.d.ts} +1 -1
  64. package/lib/entity/{GeoObject.d.ts → geoObject/GeoObject.d.ts} +7 -6
  65. package/lib/entity/{GeoObjectHandler.d.ts → geoObject/GeoObjectHandler.d.ts} +32 -11
  66. package/lib/entity/{InstanceData.d.ts → geoObject/InstanceData.d.ts} +18 -13
  67. package/lib/entity/{Geometry.d.ts → geometry/Geometry.d.ts} +10 -10
  68. package/lib/entity/{GeometryHandler.d.ts → geometry/GeometryHandler.d.ts} +7 -7
  69. package/lib/entity/index.d.ts +8 -8
  70. package/lib/entity/{Label.d.ts → label/Label.d.ts} +12 -13
  71. package/lib/entity/{LabelHandler.d.ts → label/LabelHandler.d.ts} +31 -7
  72. package/lib/entity/{LabelWorker.d.ts → label/LabelWorker.d.ts} +3 -3
  73. package/lib/entity/{PointCloud.d.ts → pointCloud/PointCloud.d.ts} +18 -12
  74. package/lib/entity/{PointCloudHandler.d.ts → pointCloud/PointCloudHandler.d.ts} +4 -4
  75. package/lib/entity/polyline/Polyline.d.ts +242 -0
  76. package/lib/entity/polyline/PolylineBatchRenderer.d.ts +443 -0
  77. package/lib/entity/{PolylineHandler.d.ts → polyline/PolylineHandler.d.ts} +19 -7
  78. package/lib/entity/{Ray.d.ts → ray/Ray.d.ts} +29 -9
  79. package/lib/entity/{RayHandler.d.ts → ray/RayHandler.d.ts} +18 -8
  80. package/lib/entity/{Strip.d.ts → strip/Strip.d.ts} +21 -17
  81. package/lib/entity/{StripHandler.d.ts → strip/StripHandler.d.ts} +11 -6
  82. package/lib/index.d.ts +59 -42
  83. package/lib/layer/BaseGeoImage.d.ts +20 -17
  84. package/lib/layer/BaseTileMaterialLayer.d.ts +36 -0
  85. package/lib/layer/CanvasTiles.d.ts +20 -22
  86. package/lib/layer/GeoImage.d.ts +1 -1
  87. package/lib/layer/GeoTexture2d.d.ts +2 -2
  88. package/lib/layer/KML.d.ts +19 -18
  89. package/lib/layer/Layer.d.ts +72 -53
  90. package/lib/layer/Vector.d.ts +106 -37
  91. package/lib/layer/WMS.d.ts +1 -1
  92. package/lib/layer/XYZ.d.ts +14 -31
  93. package/lib/layer/index.d.ts +12 -12
  94. package/lib/math/Line2.d.ts +10 -1
  95. package/lib/math/Line3.d.ts +1 -1
  96. package/lib/math/Mat3.d.ts +3 -13
  97. package/lib/math/Mat4.d.ts +16 -10
  98. package/lib/math/Plane.d.ts +1 -1
  99. package/lib/math/Quat.d.ts +14 -12
  100. package/lib/math/Ray.d.ts +4 -3
  101. package/lib/math/Vec2.d.ts +25 -17
  102. package/lib/math/Vec3.d.ts +33 -31
  103. package/lib/math/Vec4.d.ts +1 -1
  104. package/lib/math/coder.d.ts +1 -1
  105. package/lib/math/index.d.ts +13 -14
  106. package/lib/mercator.d.ts +4 -4
  107. package/lib/og.css +2 -1
  108. package/lib/og.es.js +1 -1
  109. package/lib/og.es.js.map +1 -1
  110. package/lib/quadTree/EntityCollectionNode.d.ts +10 -10
  111. package/lib/quadTree/EntityCollectionsTreeStrategy.d.ts +8 -5
  112. package/lib/quadTree/QuadTreeStrategy.d.ts +6 -5
  113. package/lib/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +4 -4
  114. package/lib/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +7 -4
  115. package/lib/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +3 -0
  116. package/lib/renderer/AtmosphereDeferredShading.d.ts +12 -0
  117. package/lib/renderer/IDeferredShadingPass.d.ts +8 -0
  118. package/lib/renderer/ITransparencyPass.d.ts +8 -0
  119. package/lib/renderer/PhongDeferredShading.d.ts +18 -0
  120. package/lib/renderer/Renderer.d.ts +195 -100
  121. package/lib/renderer/RendererEvents.d.ts +16 -5
  122. package/lib/renderer/WOITPass.d.ts +14 -0
  123. package/lib/renderer/cascadeShadows/CascadeShadowManager.d.ts +34 -0
  124. package/lib/renderer/cascadeShadows/CascadeShadowMap.d.ts +112 -0
  125. package/lib/renderer/cascadeShadows/cascade_shadow_depth.d.ts +2 -0
  126. package/lib/renderer/projectors/Projector.d.ts +66 -0
  127. package/lib/renderer/projectors/ProjectorManager.d.ts +85 -0
  128. package/lib/renderer/projectors/ProjectorsPass.d.ts +37 -0
  129. package/lib/renderer/shadows/ShadowManager.d.ts +40 -0
  130. package/lib/renderer/shadows/ShadowMap.d.ts +21 -0
  131. package/lib/renderer/textureUnits.d.ts +6 -0
  132. package/lib/res/fonts/Ephesis-Regular.json +1 -0
  133. package/lib/res/fonts/Ephesis-Regular.png +0 -0
  134. package/lib/res/fonts/Karla-Bold.json +1 -0
  135. package/lib/res/fonts/Karla-Bold.png +0 -0
  136. package/lib/res/fonts/Karla-Italic.json +1 -0
  137. package/lib/res/fonts/Karla-Italic.png +0 -0
  138. package/lib/res/fonts/Karla-Light.json +1 -0
  139. package/lib/res/fonts/Karla-Light.png +0 -0
  140. package/lib/res/fonts/Karla-Medium.json +1 -0
  141. package/lib/res/fonts/Karla-Medium.png +0 -0
  142. package/lib/res/fonts/Roboto-Regular.json +1 -37147
  143. package/lib/res/fonts/Roboto-Regular.png +0 -0
  144. package/lib/res/fonts/arial.json +1 -4321
  145. package/lib/res/fonts/arial.png +0 -0
  146. package/lib/res/night-4326.png +0 -0
  147. package/lib/res/night.png +0 -0
  148. package/lib/scene/AltitudeNearPlaneStrategy.d.ts +17 -0
  149. package/lib/scene/Axes.d.ts +4 -3
  150. package/lib/scene/Planet.d.ts +268 -72
  151. package/lib/scene/{RenderNode.d.ts → Scene.d.ts} +47 -51
  152. package/lib/scene/SkyBox.d.ts +7 -4
  153. package/lib/scene/index.d.ts +2 -2
  154. package/lib/segment/Segment.d.ts +38 -15
  155. package/lib/segment/SegmentLonLat.d.ts +0 -1
  156. package/lib/shadeModeConstants.d.ts +7 -0
  157. package/lib/shaders/applyDeferredDepth.d.ts +2 -0
  158. package/lib/shaders/atmos/atmos.d.ts +3 -3
  159. package/lib/shaders/billboard/billboard.d.ts +4 -3
  160. package/lib/shaders/common/uniforms.d.ts +27 -0
  161. package/lib/shaders/deferredShading/deferredShading.d.ts +2 -0
  162. package/lib/shaders/deferredShading/deferredShadingAtmos.d.ts +3 -0
  163. package/lib/shaders/depth.d.ts +2 -2
  164. package/lib/shaders/geo_object/geo_object.d.ts +9 -4
  165. package/lib/shaders/label/label.d.ts +4 -4
  166. package/lib/shaders/pointCloud.d.ts +2 -2
  167. package/lib/shaders/polyline/polyline.d.ts +7 -3
  168. package/lib/shaders/projectorsPass/projectorsPass.d.ts +2 -0
  169. package/lib/shaders/ray/ray.d.ts +3 -2
  170. package/lib/shaders/screenFrame.d.ts +2 -2
  171. package/lib/shaders/segment/segment.d.ts +7 -0
  172. package/lib/shaders/skybox.d.ts +2 -2
  173. package/lib/shaders/strip/strip.d.ts +3 -0
  174. package/lib/shaders/tone_mapping/toneMapping.d.ts +2 -2
  175. package/lib/shaders/varianceBlur.d.ts +2 -0
  176. package/lib/shaders/weightedOITResolve.d.ts +2 -0
  177. package/lib/terrain/BilTerrain.d.ts +1 -1
  178. package/lib/terrain/EmptyTerrain.d.ts +6 -7
  179. package/lib/terrain/GlobusTerrain.d.ts +18 -23
  180. package/lib/terrain/MapterhornTerrain.d.ts +10 -0
  181. package/lib/terrain/RgbTerrain.d.ts +19 -8
  182. package/lib/terrain/index.d.ts +10 -6
  183. package/lib/tsconfig.tsbuildinfo +1 -1
  184. package/lib/ui/Button.d.ts +7 -5
  185. package/lib/ui/ButtonGroup.d.ts +1 -1
  186. package/lib/ui/Checkbox.d.ts +2 -2
  187. package/lib/ui/Color.d.ts +7 -4
  188. package/lib/ui/Dialog.d.ts +30 -3
  189. package/lib/ui/Input.d.ts +19 -3
  190. package/lib/ui/Slider.d.ts +5 -2
  191. package/lib/ui/TitleBarView.d.ts +21 -0
  192. package/lib/ui/ToggleButton.d.ts +2 -2
  193. package/lib/ui/View.d.ts +1 -1
  194. package/lib/ui/icons.d.ts +1 -1
  195. package/lib/ui/index.d.ts +10 -9
  196. package/lib/utils/FontAtlas.d.ts +61 -10
  197. package/lib/utils/GeoImageCreator.d.ts +2 -2
  198. package/lib/utils/ImagesCacheManager.d.ts +3 -3
  199. package/lib/utils/Loader.d.ts +2 -2
  200. package/lib/utils/PlainSegmentWorker.d.ts +2 -2
  201. package/lib/utils/TerrainWorker.d.ts +2 -2
  202. package/lib/utils/TextureAtlas.d.ts +7 -2
  203. package/lib/utils/TextureResourceManager.d.ts +162 -0
  204. package/lib/utils/VectorTileCreator.d.ts +1 -1
  205. package/lib/utils/colorSpace.d.ts +9 -0
  206. package/lib/utils/gltf/gltfParser.d.ts +9 -2
  207. package/lib/utils/gltf/types.d.ts +24 -5
  208. package/lib/utils/shared.d.ts +12 -5
  209. package/lib/utils/textureResourceMeta.d.ts +9 -0
  210. package/lib/webgl/BaseFramebuffer.d.ts +35 -0
  211. package/lib/webgl/Framebuffer.d.ts +14 -13
  212. package/lib/webgl/Handler.d.ts +94 -99
  213. package/lib/webgl/ShaderProgram.d.ts +190 -0
  214. package/lib/webgl/index.d.ts +2 -2
  215. package/lib/webgl/variableHandlers.d.ts +2 -1
  216. package/package.json +79 -76
  217. package/lib/assets/LabelWorker.worker-BT1uJgYn.js.map +0 -1
  218. package/lib/assets/PlainSegmentWorker.worker-CT1cj8jj.js.map +0 -1
  219. package/lib/assets/TerrainWorker.worker-DmikdfB2.js.map +0 -1
  220. package/lib/control/CameraFrameComposer.d.ts +0 -19
  221. package/lib/control/CameraFrameHandler.d.ts +0 -26
  222. package/lib/control/OldMouseNavigation.d.ts +0 -65
  223. package/lib/control/ZoomControl.d.ts +0 -28
  224. package/lib/control/cameraDepthHandler/CameraDepthHandler.d.ts +0 -28
  225. package/lib/control/cameraDepthHandler/camera_depth.d.ts +0 -2
  226. package/lib/control/geoObjectEditor/GeoObjectEditor.d.ts +0 -13
  227. package/lib/control/visibleExtent/drawnode.d.ts +0 -7
  228. package/lib/entity/Polyline.d.ts +0 -417
  229. package/lib/light/LightSource.d.ts +0 -36
  230. package/lib/res/fonts/Roboto-Regular.ttf.cfg +0 -1340
  231. package/lib/res/fonts/Roboto-Regular.ttf.png +0 -0
  232. package/lib/res/fonts/arial.ttf.cfg +0 -1570
  233. package/lib/res/fonts/arial.ttf.png +0 -0
  234. package/lib/scene/BaseNode.d.ts +0 -61
  235. package/lib/shaders/drawnode/drawnode.d.ts +0 -8
  236. package/lib/webgl/Program.d.ts +0 -161
  237. package/lib/webgl/ProgramController.d.ts +0 -87
  238. /package/lib/control/{geoObjectEditor → entityEditor}/ArrowEntity.d.ts +0 -0
  239. /package/lib/control/{geoObjectEditor → entityEditor}/AxisTrackEntity.d.ts +0 -0
  240. /package/lib/control/{geoObjectEditor → entityEditor}/MoveAxisEntity.d.ts +0 -0
  241. /package/lib/control/{geoObjectEditor → entityEditor}/MovePlaneEntity.d.ts +0 -0
  242. /package/lib/entity/{LabelWorker.worker.d.ts → label/LabelWorker.worker.d.ts} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { BaseWorker } from "./BaseWorker";
2
2
  import { Segment } from "../segment/Segment";
3
3
  import type { NumberArray6 } from "../bv/Sphere";
4
+ import { NumberArray3 } from "../math/Vec3";
4
5
  interface TerrainInfo {
5
6
  segment: Segment;
6
7
  elevations: Float32Array;
@@ -9,13 +10,12 @@ export interface ITerrainWorkerData {
9
10
  id: number;
10
11
  normalMapNormals: Float32Array | null;
11
12
  normalMapVertices: Float64Array | null;
12
- normalMapVerticesHigh: Float32Array | null;
13
- normalMapVerticesLow: Float32Array | null;
14
13
  terrainVertices: Float64Array | null;
15
14
  terrainVerticesHigh: Float32Array | null;
16
15
  terrainVerticesLow: Float32Array | null;
17
16
  noDataVertices: Uint8Array | null;
18
17
  bounds: NumberArray6;
18
+ relativeCenter: NumberArray3;
19
19
  }
20
20
  type MessageEventExt = MessageEvent & {
21
21
  data: ITerrainWorkerData;
@@ -10,6 +10,7 @@ import type { WebGLTextureExt } from "../webgl/Handler";
10
10
  * @class
11
11
  * @param {number} [width=1024] - Texture atlas width, if it hasn't 1024 default.
12
12
  * @param {number} [height=1024] - Texture atlas height, if it hasn't 1024 default.
13
+ * @param {string|number} [colorSpace="linear"] - Texture atlas color space. Available values: "linear", "srgb", 0, 1.
13
14
  */
14
15
  declare class TextureAtlas {
15
16
  /**
@@ -34,7 +35,11 @@ declare class TextureAtlas {
34
35
  protected _images: HTMLImageElementExt[];
35
36
  protected _btree: TextureAtlasNode | null;
36
37
  protected _imagesCacheManager: ImagesCacheManager;
37
- constructor(width?: number, height?: number);
38
+ protected _colorSpace: number;
39
+ protected _internalFormat: number | null;
40
+ constructor(width?: number, height?: number, colorSpace?: string | number);
41
+ static getColorSpace(colorSpace?: string | number): number;
42
+ protected _updateInternalFormat(): void;
38
43
  /**
39
44
  * Returns atlas javascript image object.
40
45
  * @public
@@ -87,7 +92,7 @@ declare class TextureAtlas {
87
92
  * Creates atlas gl texture.
88
93
  * @public
89
94
  */
90
- createTexture(img?: HTMLImageElement | null, internalFormat?: number): void;
95
+ createTexture(img?: HTMLImageElement | null): void;
91
96
  /**
92
97
  * Asynchronous function that loads and creates image to the image cache, and call success callback when it's done.
93
98
  * @public
@@ -0,0 +1,162 @@
1
+ import type { Handler, ImageSource, WebGLTextureExt } from "../webgl/Handler";
2
+ interface TextureResourceEntry {
3
+ key: string;
4
+ texture: WebGLTextureExt;
5
+ refCount: number;
6
+ }
7
+ export interface RendererTextureRequest {
8
+ image: ImageSource;
9
+ resourceKey?: string;
10
+ sourceUri?: string;
11
+ mimeType?: string;
12
+ byteLength?: number;
13
+ internalFormat?: number | null;
14
+ texParami?: number | null;
15
+ }
16
+ /**
17
+ * Manages shared WebGL textures with reference counting.
18
+ * Reuses textures for the same resource key and deletes them when no owners remain.
19
+ */
20
+ export declare class TextureResourceManager {
21
+ protected _handler: Handler;
22
+ protected _entriesByKey: Map<string, TextureResourceEntry>;
23
+ protected _keysByTexture: WeakMap<WebGLTextureExt, string>;
24
+ protected _objectKeys: WeakMap<ImageSource, number>;
25
+ protected _objectKeyCounter: number;
26
+ /**
27
+ * @param handler WebGL handler used to create and delete textures.
28
+ */
29
+ constructor(handler: Handler);
30
+ /**
31
+ * Returns an existing texture for the same resource or creates a new one.
32
+ * Increases reference count for reused textures.
33
+ * @param params Texture source and GPU creation parameters.
34
+ * @returns Managed WebGL texture or null if creation failed.
35
+ */
36
+ acquireTexture(params: RendererTextureRequest): WebGLTextureExt | null;
37
+ /**
38
+ * Releases one texture reference.
39
+ * Deletes GPU texture only when the reference count reaches zero.
40
+ * @param texture Managed texture previously returned by acquireTexture.
41
+ */
42
+ releaseTexture(texture: WebGLTextureExt | null | undefined): void;
43
+ /**
44
+ * Deletes all managed GPU textures and clears manager state.
45
+ */
46
+ clear(): void;
47
+ /**
48
+ * Returns number of unique managed texture entries.
49
+ * @returns Number of entries in the manager.
50
+ */
51
+ getEntryCount(): number;
52
+ /**
53
+ * Returns debug statistics for managed textures.
54
+ * @returns Object with number of entries and total reference count.
55
+ */
56
+ getStats(): {
57
+ entries: number;
58
+ refs: number;
59
+ };
60
+ /**
61
+ * Builds a stable texture resource key.
62
+ *
63
+ * The key is composed of two logical parts:
64
+ *
65
+ * 1. Source image identity
66
+ * Describes where the original image comes from or how it can be uniquely identified.
67
+ *
68
+ * Supported prefixes:
69
+ *
70
+ * - res:
71
+ * A precomputed resource key provided by the GLTF parser.
72
+ * This is the preferred path for GLTF/GLB textures.
73
+ *
74
+ * Example:
75
+ * res:gltf-image|bytes:9a4c1f20|mime:image/png|len:24576
76
+ *
77
+ * - uri:
78
+ * A normalized external image URI.
79
+ * Used when the texture comes from an external image file.
80
+ * The URI should be resolved relative to the GLTF file path.
81
+ *
82
+ * Example:
83
+ * uri:https://example.com/models/tree/textures/baseColor.png
84
+ *
85
+ * - fp:
86
+ * A content fingerprint calculated from image pixels.
87
+ * This is an expensive fallback path because it may require canvas readback.
88
+ * It can also fail for cross-origin images.
89
+ *
90
+ * Example:
91
+ * fp:7f21ab09
92
+ *
93
+ * - obj:
94
+ * A last-resort object identity key.
95
+ * Used only when no resourceKey, URI, or content fingerprint is available.
96
+ * This avoids accidental sharing between unrelated images.
97
+ *
98
+ * Example:
99
+ * obj:3
100
+ *
101
+ * 2. GPU texture creation parameters.
102
+ * Describes how the source image is uploaded to WebGL.
103
+ * The same source image may require different GPU textures if creation parameters differ.
104
+ *
105
+ * Supported fields:
106
+ *
107
+ * - fmt:
108
+ * Internal texture format passed to Handler.createTextureDefault(...).
109
+ * If absent, "fmt:default" means the default internal format is used.
110
+ *
111
+ * Example:
112
+ * fmt:default
113
+ * fmt:6408
114
+ *
115
+ * - wrap:
116
+ * Texture wrapping/filtering parameter passed to Handler.createTextureDefault(...).
117
+ * If absent, "wrap:default" means the default texture parameter is used.
118
+ *
119
+ * Example:
120
+ * wrap:default
121
+ * wrap:10497
122
+ *
123
+ * - mime:
124
+ * MIME type of the original image, if available.
125
+ * Used as an additional discriminator and for debugging.
126
+ *
127
+ * Example:
128
+ * mime:image/png
129
+ *
130
+ * - len:
131
+ * Original image byte length, if available.
132
+ * Used as an additional cheap discriminator, but not as the primary identity.
133
+ *
134
+ * Example:
135
+ * len:24576
136
+ *
137
+ * Important:
138
+ *
139
+ * - GLTF texture/image name is intentionally not used as a primary identity key.
140
+ * Names may be missing, duplicated, or different for the same binary image.
141
+ *
142
+ * - The preferred identity source is resourceKey from the GLTF parser.
143
+ *
144
+ * - The fallback order is:
145
+ * resourceKey -> normalized URI -> content fingerprint -> object identity.
146
+ *
147
+ * - The final key must distinguish not only the source image, but also the GPU upload
148
+ * parameters that may affect the resulting WebGLTexture.
149
+ */
150
+ protected _buildResourceKey(params: RendererTextureRequest): string;
151
+ protected _getObjectKey(image: ImageSource): number;
152
+ protected _getExternalImageUri(image: ImageSource): string | null;
153
+ protected _fingerprintImage(image: ImageSource): {
154
+ hash: string;
155
+ byteLength: number;
156
+ } | null;
157
+ protected _getImageSize(image: ImageSource): {
158
+ width: number;
159
+ height: number;
160
+ } | null;
161
+ }
162
+ export {};
@@ -1,4 +1,4 @@
1
- import { Framebuffer } from '../webgl/Framebuffer';
1
+ import { Framebuffer } from "../webgl/Framebuffer";
2
2
  import { Handler } from "../webgl/Handler";
3
3
  import { Material } from "../layer/Material";
4
4
  import { Planet } from "../scene/Planet";
@@ -0,0 +1,9 @@
1
+ import { Vec3 } from "../math/Vec3";
2
+ import type { NumberArray3 } from "../math/Vec3";
3
+ export declare const LINEAR = 0;
4
+ export declare const SRGB = 1;
5
+ export declare function getColorSpace(colorSpace?: string | number, defaultColorSpace?: number): number;
6
+ export declare function srgbToLinearArr(arr: NumberArray3): NumberArray3;
7
+ export declare function srgbToLinear3v(v: Vec3): NumberArray3;
8
+ export declare function srgbToLinear(v: number): number;
9
+ export declare function linearToSrgbArr(arr: NumberArray3): NumberArray3;
@@ -1,6 +1,6 @@
1
1
  import { Entity } from "../../entity";
2
2
  import { Object3d } from "../../Object3d";
3
- import { GltfData, Mesh } from "./types";
3
+ import { GltfData, Mesh, MimeType } from "./types";
4
4
  export declare class Gltf {
5
5
  private gltf;
6
6
  private static _dracoDecoderModule;
@@ -9,13 +9,20 @@ export declare class Gltf {
9
9
  private _materials;
10
10
  private _images;
11
11
  meshes: Mesh[];
12
- constructor(gltf: GltfData);
12
+ protected _gltfBaseUri?: string;
13
+ constructor(gltf: GltfData, gltfBaseUri?: string);
13
14
  getObjects3d(): Object3d[];
14
15
  toEntities(): Entity[];
15
16
  private _nodeToEntity;
16
17
  meshToEntity(mesh: Mesh, parent?: Entity): Entity;
17
18
  private _initImages;
18
19
  private _getImage;
20
+ private _getTextureImage;
21
+ protected _buildImageResourceKey(mimeType?: MimeType, bufferViewIndex?: number, sourceUri?: string, rawUri?: string): string | undefined;
22
+ protected _getBufferViewBytes(bufferViewIndex: number): Uint8Array;
23
+ protected _hashBytes(bytes: Uint8Array): string;
24
+ protected _hashString(value: string): string;
25
+ protected _isDataUri(uri: string): boolean;
19
26
  private _initMaterials;
20
27
  private _initMeshes;
21
28
  private _buildPrimitive;
@@ -1,4 +1,5 @@
1
1
  import { Object3d } from "../../Object3d";
2
+ import type { TypedArray } from "../shared";
2
3
  export interface GltfData {
3
4
  bin: ArrayBuffer[];
4
5
  gltf: GltfMetadata;
@@ -22,6 +23,21 @@ export interface GltfMetadata {
22
23
  texCoord?: number;
23
24
  };
24
25
  };
26
+ extensions?: {
27
+ KHR_materials_pbrSpecularGlossiness?: {
28
+ diffuseFactor?: number[];
29
+ diffuseTexture?: {
30
+ index: number;
31
+ texCoord?: number;
32
+ };
33
+ specularFactor?: number[];
34
+ glossinessFactor?: number;
35
+ specularGlossinessTexture?: {
36
+ index: number;
37
+ texCoord?: number;
38
+ };
39
+ };
40
+ };
25
41
  normalTexture?: {
26
42
  index: number;
27
43
  texCoord?: number;
@@ -80,7 +96,7 @@ export interface GltfPrimitive {
80
96
  }
81
97
  export type PrimitiveAttributes = {
82
98
  POSITION: number;
83
- NORMAL: number;
99
+ NORMAL?: number;
84
100
  } & Record<string, number>;
85
101
  export interface GltfNode {
86
102
  camera?: number;
@@ -141,10 +157,10 @@ export interface Mesh {
141
157
  }
142
158
  export interface Primitive {
143
159
  name: string;
144
- indices?: ArrayBufferLike;
145
- vertices: ArrayBufferLike;
146
- normals: ArrayBufferLike;
147
- texCoords?: ArrayBufferLike;
160
+ indices?: TypedArray;
161
+ vertices: TypedArray;
162
+ normals?: TypedArray;
163
+ texCoords?: TypedArray;
148
164
  material?: Material;
149
165
  mode: PrimitiveMode;
150
166
  object3d?: Object3d;
@@ -153,7 +169,10 @@ export interface Material {
153
169
  name: string;
154
170
  baseColorFactor?: number[];
155
171
  baseColorTexture?: Texture;
172
+ metallicFactor?: number;
173
+ roughnessFactor?: number;
156
174
  metallicRoughnessTexture?: Texture;
175
+ specularGlossinessTexture?: Texture;
157
176
  normalTexture?: NormalTexture;
158
177
  occlusionTexture?: OcclusionTexture;
159
178
  emissiveTexture?: Texture;
@@ -20,6 +20,8 @@ export declare function isEmpty(v: any): boolean;
20
20
  */
21
21
  export declare function isUndef(obj?: any): boolean;
22
22
  export declare function isUndefExt(obj: any, defVal: any): any;
23
+ export declare function fnv1a32(bytes: Uint8Array | Uint8ClampedArray): string;
24
+ export declare function normalizeUri(src: string, baseUri?: string): string;
23
25
  export declare function stamp(obj: any): number;
24
26
  export declare function isString(s: any): boolean;
25
27
  export declare function rgbToStringHTML(rgb: NumberArray3 | Vec3): string;
@@ -55,6 +57,7 @@ export declare function htmlColorToRgb(htmlColor: string): Vec3;
55
57
  export declare function stringTemplate(template: string, params?: any): string;
56
58
  /**
57
59
  * Replace template substrings between '${...}' tokens.
60
+ * Also supports escaped '\${...}' tokens emitted by GLSL bundlers.
58
61
  * @param {string} template - String with templates in "${" and "}"
59
62
  * @param {Object} params - Template named object with subsrtings.
60
63
  * @returns {string} -
@@ -74,8 +77,9 @@ export declare function parseHTML(htmlStr: string): HTMLElement[];
74
77
  export declare function print2d(id: string, text: string, x: number, y: number): void;
75
78
  export declare function isNumber(value: any): boolean;
76
79
  export declare function defaultString(str?: string, def?: string): string;
77
- export declare function createVector3(v?: number | Vec3 | Vec2 | NumberArray3 | NumberArray2 | null, def?: Vec3): Vec3;
78
- export declare function createVector4(v?: Vec4 | NumberArray4 | null, def?: Vec4): Vec4;
80
+ export declare function createVec2(v?: number | Vec2 | NumberArray2 | null, def?: Vec2): Vec2;
81
+ export declare function createVec3(v?: number | Vec3 | Vec2 | NumberArray3 | NumberArray2 | null, def?: Vec3): Vec3;
82
+ export declare function createVec4(v?: Vec4 | NumberArray4 | null, def?: Vec4): Vec4;
79
83
  export declare function createColorRGBA(c?: string | NumberArray4 | Vec4 | null, def?: Vec4): Vec4;
80
84
  export declare function createColorRGB(c?: string | NumberArray3 | Vec3 | null, def?: Vec3): Vec3;
81
85
  export declare function createExtent(e?: Extent | [[number, number], [number, number]] | null, def?: Extent): Extent;
@@ -193,6 +197,7 @@ export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array
193
197
  * @param {TypedArray | number[]} b
194
198
  */
195
199
  export declare function concatTypedArrays(a: TypedArray, b: TypedArray | number[]): TypedArray;
200
+ export declare function insertTypedArray<T extends TypedArray>(arr: T, starting: number, insert: T | number[]): T;
196
201
  /**
197
202
  * Concatenates two the same arrays
198
203
  * @param {TypedArray | number[]} [a=[]] - First array
@@ -238,7 +243,7 @@ export declare function spliceTypedArray<T extends TypedArray>(arr: T, starting:
238
243
  /**
239
244
  * Returns 64-bit triangle coordinate array from inside of the source triangle array.
240
245
  * @static
241
- * @param {TypedArray | number[]} sourceArr - Source array
246
+ * @param {TypedArray | number[]} srcArr - Source array
242
247
  * @param {number} gridSize - Source array square matrix size
243
248
  * @param {number} i0 - First row index source array matrix
244
249
  * @param {number} j0 - First column index
@@ -246,7 +251,7 @@ export declare function spliceTypedArray<T extends TypedArray>(arr: T, starting:
246
251
  * @return {Float64Array} Triangle coordinates array from the source array.
247
252
  * @TODO: optimization
248
253
  */
249
- export declare function getMatrixSubArray64(sourceArr: TypedArray | number[], gridSize: number, i0: number, j0: number, size: number): Float64Array;
254
+ export declare function getMatrixSubArray64(srcArr: TypedArray | number[], gridSize: number, i0: number, j0: number, size: number): Float64Array;
250
255
  /**
251
256
  * Returns 32-bit triangle coordinate array from inside of the source triangle array.
252
257
  * @static
@@ -262,7 +267,7 @@ export declare function getMatrixSubArray32(sourceArr: TypedArray | number[], gr
262
267
  * Returns two float32 triangle coordinate arrays from inside of the source triangle array.
263
268
  * @TODO: optimization
264
269
  */
265
- export declare function getMatrixSubArrayBoundsExt(sourceArr: TypedArray | number[], sourceArrHigh: TypedArray | number[], sourceArrLow: TypedArray | number[], noDataVertices: TypedArray | number[] | undefined, gridSize: number, i0: number, j0: number, size: number, outArr: TypedArray | number[], outArrHigh: TypedArray | number[], outArrLow: TypedArray | number[], outBounds: any, outNoDataVertices: TypedArray | number[]): void;
270
+ export declare function getMatrixSubArrayBoundsExt(srcArr: TypedArray | number[], noDataVertices: TypedArray | number[] | undefined, gridSize: number, i0: number, j0: number, size: number, srcRelativeCenter: Vec3, dstRelativeCenter: Vec3, outArr: TypedArray | number[], outArrHigh: TypedArray | number[], outArrLow: TypedArray | number[], outBounds: any, outNoDataVertices: TypedArray | number[]): void;
266
271
  export declare function cloneArray(items: any[]): any[];
267
272
  /**
268
273
  * Promise for load images
@@ -271,6 +276,8 @@ export declare function cloneArray(items: any[]): any[];
271
276
  * @returns {Promise<Image>} Returns promise.
272
277
  */
273
278
  export declare function loadImage(url: string): Promise<HTMLImageElement>;
279
+ export declare function ensureImageReady(image: HTMLImageElement): Promise<boolean>;
280
+ export declare function prepareTextureImage(image: HTMLImageElement): Promise<HTMLImageElement | HTMLCanvasElement | null>;
274
281
  /**
275
282
  * Gets image is loaded
276
283
  * @param {HTMLImageElement} image
@@ -0,0 +1,9 @@
1
+ export declare const OG_TEXTURE_RESOURCE_META_KEY: unique symbol;
2
+ export interface ITextureResourceMeta {
3
+ resourceKey?: string;
4
+ sourceUri?: string;
5
+ mimeType?: string;
6
+ byteLength?: number;
7
+ }
8
+ export declare function getTextureResourceMeta(target: object | null | undefined): ITextureResourceMeta | undefined;
9
+ export declare function setTextureResourceMeta(target: object | null | undefined, meta: ITextureResourceMeta | undefined): void;
@@ -6,6 +6,7 @@ export interface IBaseFramebufferParams {
6
6
  depthComponent?: string;
7
7
  size?: number;
8
8
  filter?: string;
9
+ sharedDepthFramebuffer?: BaseFramebuffer | null;
9
10
  }
10
11
  export declare class BaseFramebuffer {
11
12
  static __counter__: number;
@@ -13,6 +14,7 @@ export declare class BaseFramebuffer {
13
14
  handler: Handler;
14
15
  _fbo: WebGLFramebuffer | null;
15
16
  protected _depthRenderbuffer: WebGLRenderbuffer | null;
17
+ protected _sharedDepthFramebuffer: BaseFramebuffer | null;
16
18
  _width: number;
17
19
  _height: number;
18
20
  protected _depthComponent: string;
@@ -21,8 +23,13 @@ export declare class BaseFramebuffer {
21
23
  protected _useDepth: boolean;
22
24
  protected _filter: string;
23
25
  constructor(handler: Handler, options?: IBaseFramebufferParams);
26
+ static blitTo(destFramebuffer: BaseFramebuffer, sourceFramebuffer: BaseFramebuffer, glAttachmentIndex: number | null, glMask: number, glFilter: number): void;
27
+ blitDepthFrom(sourceFramebuffer: BaseFramebuffer, glFilter?: number): void;
24
28
  get width(): number;
25
29
  get height(): number;
30
+ get depthRenderbuffer(): WebGLRenderbuffer | null;
31
+ get sharedDepthFramebuffer(): BaseFramebuffer | null;
32
+ get sharedDepthRenderbuffer(): WebGLRenderbuffer | null;
26
33
  /**
27
34
  * Sets framebuffer viewport size.
28
35
  * @public
@@ -40,6 +47,34 @@ export declare class BaseFramebuffer {
40
47
  */
41
48
  isComplete(): boolean;
42
49
  checkStatus(): number;
50
+ /**
51
+ * Checks active framebuffer completeness and logs readable status on failure.
52
+ * @public
53
+ * @param {string} [message] - Warning message prefix.
54
+ * @returns {boolean} `true` when active framebuffer is complete.
55
+ */
56
+ validateComplete(message?: string): boolean;
57
+ /**
58
+ * Binds a 2D texture to the active framebuffer color attachment.
59
+ * @public
60
+ * @param {WebGLTexture} texture - Output texture.
61
+ * @param {number} [glAttachment=COLOR_ATTACHMENT0] - GL color attachment.
62
+ */
63
+ bindOutputTexture(texture: WebGLTexture, glAttachment?: number): void;
64
+ /**
65
+ * Binds a texture array layer to the active framebuffer color attachment.
66
+ * Activate framebuffer before calling this method.
67
+ * @public
68
+ * @param {WebGLTexture | null} texture - Output texture array.
69
+ * @param {number} layer - Array layer index.
70
+ * @param {number} [colorAttachmentIndex=0] - Color attachment index.
71
+ * @param {number} [level=0] - Mipmap level.
72
+ */
73
+ bindOutputTextureLayer(texture: WebGLTexture | null, layer: number, colorAttachmentIndex?: number, level?: number): void;
74
+ /**
75
+ * Converts framebuffer status enum to readable text.
76
+ */
77
+ statusToText(status: number): string;
43
78
  /**
44
79
  * Activate framebuffer frame to draw.
45
80
  * @public
@@ -5,8 +5,6 @@ import type { TypedArray } from "../utils/shared";
5
5
  import type { NumberArray4 } from "../math/Vec4";
6
6
  export interface ITargetParams {
7
7
  internalFormat?: string;
8
- format?: string;
9
- type?: string;
10
8
  attachment?: string;
11
9
  filter?: string;
12
10
  readAsync?: boolean;
@@ -20,8 +18,8 @@ export interface IFrameBufferParams extends IBaseFramebufferParams {
20
18
  type TypedArrayConstructor = Uint8ArrayConstructor | Float32ArrayConstructor;
21
19
  interface ITarget {
22
20
  internalFormat: string;
23
- format: string;
24
- type: string;
21
+ pixelFormat: string;
22
+ pixelType: string;
25
23
  attachment: string;
26
24
  filter: string;
27
25
  pixelBufferIndex: number;
@@ -52,6 +50,11 @@ export declare class Framebuffer extends BaseFramebuffer {
52
50
  pixelBuffers: IPixelBuffer[];
53
51
  protected _skipFrame: boolean;
54
52
  constructor(handler: Handler, options?: IFrameBufferParams);
53
+ static getTargetReadParams(internalFormat: string): {
54
+ pixelFormat: string;
55
+ pixelType: string;
56
+ TypeArrayConstructor: TypedArrayConstructor;
57
+ };
55
58
  static createTargets(targets?: ITargetParams[]): ITarget[];
56
59
  destroy(): void;
57
60
  /**
@@ -60,25 +63,23 @@ export declare class Framebuffer extends BaseFramebuffer {
60
63
  * @override
61
64
  */
62
65
  init(): void;
66
+ protected _attachExternalDepthRenderbuffer(depthRenderbuffer: WebGLRenderbuffer | null): void;
63
67
  /**
64
68
  * Check your constructor has targets like this
65
69
  * targets: [{
66
- * internalFormat: "RGBA",
67
- * type: "UNSIGNED_BYTE",
70
+ * internalFormat: "RGBA8",
68
71
  * attachment: "COLOR_ATTACHMENT",
69
72
  * readAsync: true
70
73
  * }],
71
74
  **/
72
75
  readPixelBuffersAsync: (callback?: (buf: this) => void) => void;
73
- getPixelBufferData(targetIndex?: number): TypedArray | null;
74
- protected _createPixelBuffer(target: ITarget): void;
75
76
  /**
76
- * Bind buffer texture.
77
- * @public
78
- * @param {WebGLTexture} texture - Output texture.
79
- * @param {number} [glAttachment=0] - color attachment index.
77
+ * Synchronously reads all configured async pixel buffers for the current framebuffer state.
78
+ * Use when the same-frame CPU readback is required.
80
79
  */
81
- bindOutputTexture(texture: WebGLTexture, glAttachment?: number): void;
80
+ readPixelBuffers(): void;
81
+ getPixelBufferData(targetIndex?: number): TypedArray | null;
82
+ protected _createPixelBuffer(target: ITarget): void;
82
83
  /**
83
84
  * Gets pixel RGBA color from framebuffer by coordinates.
84
85
  * @public