@openglobus/og 0.28.7 → 1.0.0-rc2

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 (220) hide show
  1. package/LICENSE.md +218 -4
  2. package/README.md +31 -18
  3. package/lib/Deferred.d.ts +2 -2
  4. package/lib/Events.d.ts +1 -1
  5. package/lib/Globe.d.ts +8 -5
  6. package/lib/Object3d.d.ts +17 -14
  7. package/lib/Popup.d.ts +2 -2
  8. package/lib/assets/LabelWorker.worker-DYd7xn3M.js.map +1 -0
  9. package/lib/assets/PlainSegmentWorker.worker-JsKldq-e.js.map +1 -0
  10. package/lib/assets/TerrainWorker.worker-CqUJvMOv.js.map +1 -0
  11. package/lib/bv/index.d.ts +2 -2
  12. package/lib/camera/Camera.d.ts +280 -27
  13. package/lib/camera/Frustum.d.ts +100 -15
  14. package/lib/camera/PlanetCamera.d.ts +93 -8
  15. package/lib/camera/index.d.ts +2 -2
  16. package/lib/control/CameraFrameComposer.d.ts +2 -2
  17. package/lib/control/CameraFrameHandler.d.ts +1 -1
  18. package/lib/control/CompassButton.d.ts +2 -2
  19. package/lib/control/EarthCoordinates.d.ts +5 -2
  20. package/lib/control/FramebufferPreview.d.ts +3 -3
  21. package/lib/control/GeoImageDragControl.d.ts +1 -1
  22. package/lib/control/LayerAnimation.d.ts +2 -2
  23. package/lib/control/LayerSwitcher.d.ts +3 -0
  24. package/lib/control/Lighting.d.ts +4 -2
  25. package/lib/control/Navigation.d.ts +15 -11
  26. package/lib/control/OrthoSwitcher.d.ts +18 -0
  27. package/lib/control/SimpleTouchNavigation.d.ts +44 -0
  28. package/lib/control/Sun.d.ts +4 -2
  29. package/lib/control/TouchNavigation.d.ts +4 -8
  30. package/lib/control/atmosphere/Atmosphere.d.ts +2 -0
  31. package/lib/control/atmosphere/AtmosphereConfig.d.ts +2 -6
  32. package/lib/control/cameraDepthHandler/CameraDepthHandler.d.ts +17 -3
  33. package/lib/control/cameraDepthHandler/camera_depth.d.ts +2 -2
  34. package/lib/control/drawing/LineStringDrawingScene.d.ts +1 -0
  35. package/lib/control/drawing/PolygonDrawingScene.d.ts +14 -14
  36. package/lib/control/elevationProfile/ElevationProfile.d.ts +1 -1
  37. package/lib/control/elevationProfile/ElevationProfileLegend.d.ts +1 -1
  38. package/lib/control/elevationProfile/ElevationProfileScene.d.ts +9 -12
  39. package/lib/control/elevationProfile/ElevationProfileView.d.ts +16 -5
  40. package/lib/control/entityEditor/EntityEditor.d.ts +19 -0
  41. package/lib/control/{geoObjectEditor/GeoObjectEditorDialog.d.ts → entityEditor/EntityEditorDialog.d.ts} +9 -8
  42. package/lib/control/{geoObjectEditor/GeoObjectEditorScene.d.ts → entityEditor/EntityEditorScene.d.ts} +12 -12
  43. package/lib/control/{geoObjectEditor → entityEditor}/colors.d.ts +2 -2
  44. package/lib/control/entityTree/EntityTree.d.ts +46 -0
  45. package/lib/control/entityTree/EntityTreeView.d.ts +24 -0
  46. package/lib/control/heightRuler/HeightRulerScene.d.ts +3 -2
  47. package/lib/control/index.d.ts +5 -3
  48. package/lib/control/ruler/RulerScene.d.ts +8 -8
  49. package/lib/control/selection/SelectionScene.d.ts +6 -6
  50. package/lib/control/timeline/TimelineControl.d.ts +2 -2
  51. package/lib/control/timeline/TimelineModel.d.ts +1 -1
  52. package/lib/control/timeline/TimelineView.d.ts +52 -13
  53. package/lib/control/visibleExtent/segment.d.ts +7 -0
  54. package/lib/ellipsoid/index.d.ts +4 -4
  55. package/lib/entity/Entity.d.ts +114 -100
  56. package/lib/entity/EntityCollection.d.ts +95 -70
  57. package/lib/entity/{BaseBillboard.d.ts → billboard/BaseBillboard.d.ts} +16 -17
  58. package/lib/entity/{BaseBillboardHandler.d.ts → billboard/BaseBillboardHandler.d.ts} +24 -9
  59. package/lib/entity/{Billboard.d.ts → billboard/Billboard.d.ts} +11 -7
  60. package/lib/entity/{BillboardHandler.d.ts → billboard/BillboardHandler.d.ts} +1 -1
  61. package/lib/entity/{GeoObject.d.ts → geoObject/GeoObject.d.ts} +7 -6
  62. package/lib/entity/{GeoObjectHandler.d.ts → geoObject/GeoObjectHandler.d.ts} +29 -11
  63. package/lib/entity/{InstanceData.d.ts → geoObject/InstanceData.d.ts} +18 -13
  64. package/lib/entity/{Geometry.d.ts → geometry/Geometry.d.ts} +10 -10
  65. package/lib/entity/{GeometryHandler.d.ts → geometry/GeometryHandler.d.ts} +7 -7
  66. package/lib/entity/index.d.ts +8 -8
  67. package/lib/entity/{Label.d.ts → label/Label.d.ts} +12 -13
  68. package/lib/entity/{LabelHandler.d.ts → label/LabelHandler.d.ts} +31 -7
  69. package/lib/entity/{LabelWorker.d.ts → label/LabelWorker.d.ts} +3 -3
  70. package/lib/entity/{PointCloud.d.ts → pointCloud/PointCloud.d.ts} +18 -12
  71. package/lib/entity/{PointCloudHandler.d.ts → pointCloud/PointCloudHandler.d.ts} +4 -4
  72. package/lib/entity/polyline/Polyline.d.ts +242 -0
  73. package/lib/entity/polyline/PolylineBatchRenderer.d.ts +443 -0
  74. package/lib/entity/{PolylineHandler.d.ts → polyline/PolylineHandler.d.ts} +19 -7
  75. package/lib/entity/{Ray.d.ts → ray/Ray.d.ts} +27 -9
  76. package/lib/entity/{RayHandler.d.ts → ray/RayHandler.d.ts} +18 -8
  77. package/lib/entity/{Strip.d.ts → strip/Strip.d.ts} +21 -17
  78. package/lib/entity/{StripHandler.d.ts → strip/StripHandler.d.ts} +11 -6
  79. package/lib/index.d.ts +47 -42
  80. package/lib/layer/BaseGeoImage.d.ts +20 -17
  81. package/lib/layer/CanvasTiles.d.ts +14 -12
  82. package/lib/layer/GeoImage.d.ts +1 -1
  83. package/lib/layer/GeoTexture2d.d.ts +2 -2
  84. package/lib/layer/KML.d.ts +19 -18
  85. package/lib/layer/Layer.d.ts +72 -53
  86. package/lib/layer/Vector.d.ts +47 -30
  87. package/lib/layer/WMS.d.ts +1 -1
  88. package/lib/layer/XYZ.d.ts +11 -12
  89. package/lib/layer/index.d.ts +12 -12
  90. package/lib/math/Line2.d.ts +1 -1
  91. package/lib/math/Line3.d.ts +1 -1
  92. package/lib/math/Mat3.d.ts +3 -13
  93. package/lib/math/Mat4.d.ts +16 -10
  94. package/lib/math/Plane.d.ts +1 -1
  95. package/lib/math/Quat.d.ts +14 -12
  96. package/lib/math/Ray.d.ts +4 -3
  97. package/lib/math/Vec2.d.ts +25 -17
  98. package/lib/math/Vec3.d.ts +33 -31
  99. package/lib/math/Vec4.d.ts +1 -1
  100. package/lib/math/coder.d.ts +1 -1
  101. package/lib/math/index.d.ts +13 -14
  102. package/lib/mercator.d.ts +4 -4
  103. package/lib/og.css +1 -1
  104. package/lib/og.es.js +1 -1
  105. package/lib/og.es.js.map +1 -1
  106. package/lib/quadTree/EntityCollectionNode.d.ts +10 -10
  107. package/lib/quadTree/EntityCollectionsTreeStrategy.d.ts +5 -5
  108. package/lib/quadTree/QuadTreeStrategy.d.ts +3 -4
  109. package/lib/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +4 -4
  110. package/lib/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +4 -4
  111. package/lib/renderer/AtmosphereDeferredShading.d.ts +12 -0
  112. package/lib/renderer/IDeferredShadingPass.d.ts +8 -0
  113. package/lib/renderer/ITransparencyPass.d.ts +8 -0
  114. package/lib/renderer/PhongDeferredShading.d.ts +16 -0
  115. package/lib/renderer/Renderer.d.ts +166 -99
  116. package/lib/renderer/RendererEvents.d.ts +15 -5
  117. package/lib/renderer/WOITPass.d.ts +14 -0
  118. package/lib/res/fonts/Ephesis-Regular.json +1 -0
  119. package/lib/res/fonts/Ephesis-Regular.png +0 -0
  120. package/lib/res/fonts/Karla-Bold.json +1 -0
  121. package/lib/res/fonts/Karla-Bold.png +0 -0
  122. package/lib/res/fonts/Karla-Italic.json +1 -0
  123. package/lib/res/fonts/Karla-Italic.png +0 -0
  124. package/lib/res/fonts/Karla-Light.json +1 -0
  125. package/lib/res/fonts/Karla-Light.png +0 -0
  126. package/lib/res/fonts/Karla-Medium.json +1 -0
  127. package/lib/res/fonts/Karla-Medium.png +0 -0
  128. package/lib/res/fonts/Roboto-Regular.json +1 -37147
  129. package/lib/res/fonts/Roboto-Regular.png +0 -0
  130. package/lib/res/fonts/arial.json +1 -4321
  131. package/lib/res/fonts/arial.png +0 -0
  132. package/lib/res/night-4326.png +0 -0
  133. package/lib/res/night.png +0 -0
  134. package/lib/scene/AltitudeNearPlaneStrategy.d.ts +17 -0
  135. package/lib/scene/Axes.d.ts +4 -3
  136. package/lib/scene/Planet.d.ts +244 -69
  137. package/lib/scene/{RenderNode.d.ts → Scene.d.ts} +49 -46
  138. package/lib/scene/SkyBox.d.ts +5 -3
  139. package/lib/scene/index.d.ts +2 -2
  140. package/lib/segment/Segment.d.ts +29 -15
  141. package/lib/segment/SegmentLonLat.d.ts +0 -1
  142. package/lib/shadeModeConstants.d.ts +7 -0
  143. package/lib/shaders/applyDeferredDepth.d.ts +2 -0
  144. package/lib/shaders/atmos/atmos.d.ts +3 -3
  145. package/lib/shaders/billboard/billboard.d.ts +4 -3
  146. package/lib/shaders/deferredShading/deferredShading.d.ts +2 -0
  147. package/lib/shaders/deferredShading/deferredShadingAtmos.d.ts +3 -0
  148. package/lib/shaders/depth.d.ts +2 -2
  149. package/lib/shaders/geo_object/geo_object.d.ts +8 -4
  150. package/lib/shaders/label/label.d.ts +4 -4
  151. package/lib/shaders/pointCloud.d.ts +2 -2
  152. package/lib/shaders/polyline/polyline.d.ts +7 -3
  153. package/lib/shaders/ray/ray.d.ts +3 -2
  154. package/lib/shaders/screenFrame.d.ts +2 -2
  155. package/lib/shaders/segment/segment.d.ts +7 -0
  156. package/lib/shaders/skybox.d.ts +2 -2
  157. package/lib/shaders/strip/strip.d.ts +3 -0
  158. package/lib/shaders/tone_mapping/toneMapping.d.ts +2 -2
  159. package/lib/shaders/weightedOITResolve.d.ts +2 -0
  160. package/lib/terrain/BilTerrain.d.ts +1 -1
  161. package/lib/terrain/EmptyTerrain.d.ts +5 -6
  162. package/lib/terrain/GlobusTerrain.d.ts +18 -23
  163. package/lib/terrain/RgbTerrain.d.ts +8 -8
  164. package/lib/terrain/index.d.ts +5 -5
  165. package/lib/tsconfig.tsbuildinfo +1 -1
  166. package/lib/ui/Button.d.ts +7 -5
  167. package/lib/ui/ButtonGroup.d.ts +1 -1
  168. package/lib/ui/Checkbox.d.ts +2 -2
  169. package/lib/ui/Color.d.ts +2 -2
  170. package/lib/ui/Dialog.d.ts +30 -3
  171. package/lib/ui/Input.d.ts +7 -2
  172. package/lib/ui/Slider.d.ts +5 -2
  173. package/lib/ui/ToggleButton.d.ts +2 -2
  174. package/lib/ui/View.d.ts +1 -1
  175. package/lib/ui/icons.d.ts +1 -1
  176. package/lib/ui/index.d.ts +9 -9
  177. package/lib/utils/FontAtlas.d.ts +57 -8
  178. package/lib/utils/GeoImageCreator.d.ts +2 -2
  179. package/lib/utils/ImagesCacheManager.d.ts +3 -3
  180. package/lib/utils/Loader.d.ts +2 -2
  181. package/lib/utils/PlainSegmentWorker.d.ts +2 -2
  182. package/lib/utils/TerrainWorker.d.ts +2 -2
  183. package/lib/utils/TextureAtlas.d.ts +7 -2
  184. package/lib/utils/TextureResourceManager.d.ts +162 -0
  185. package/lib/utils/VectorTileCreator.d.ts +1 -1
  186. package/lib/utils/colorSpace.d.ts +9 -0
  187. package/lib/utils/gltf/gltfParser.d.ts +9 -2
  188. package/lib/utils/gltf/types.d.ts +20 -2
  189. package/lib/utils/shared.d.ts +11 -5
  190. package/lib/utils/textureResourceMeta.d.ts +9 -0
  191. package/lib/webgl/BaseFramebuffer.d.ts +7 -0
  192. package/lib/webgl/Framebuffer.d.ts +9 -6
  193. package/lib/webgl/Handler.d.ts +81 -99
  194. package/lib/webgl/ShaderProgram.d.ts +190 -0
  195. package/lib/webgl/index.d.ts +2 -2
  196. package/lib/webgl/variableHandlers.d.ts +2 -1
  197. package/package.json +77 -76
  198. package/lib/assets/LabelWorker.worker-BT1uJgYn.js.map +0 -1
  199. package/lib/assets/PlainSegmentWorker.worker-CT1cj8jj.js.map +0 -1
  200. package/lib/assets/TerrainWorker.worker-DmikdfB2.js.map +0 -1
  201. package/lib/control/OldMouseNavigation.d.ts +0 -65
  202. package/lib/control/ZoomControl.d.ts +0 -28
  203. package/lib/control/geoObjectEditor/GeoObjectEditor.d.ts +0 -13
  204. package/lib/control/visibleExtent/drawnode.d.ts +0 -7
  205. package/lib/entity/Polyline.d.ts +0 -417
  206. package/lib/light/LightSource.d.ts +0 -36
  207. package/lib/res/fonts/Roboto-Regular.ttf.cfg +0 -1340
  208. package/lib/res/fonts/Roboto-Regular.ttf.png +0 -0
  209. package/lib/res/fonts/arial.ttf.cfg +0 -1570
  210. package/lib/res/fonts/arial.ttf.png +0 -0
  211. package/lib/scene/BaseNode.d.ts +0 -61
  212. package/lib/shaders/drawnode/drawnode.d.ts +0 -8
  213. package/lib/webgl/Program.d.ts +0 -161
  214. package/lib/webgl/ProgramController.d.ts +0 -87
  215. /package/lib/control/{geoObjectEditor → entityEditor}/ArrowEntity.d.ts +0 -0
  216. /package/lib/control/{geoObjectEditor → entityEditor}/AxisTrackEntity.d.ts +0 -0
  217. /package/lib/control/{geoObjectEditor → entityEditor}/MoveAxisEntity.d.ts +0 -0
  218. /package/lib/control/{geoObjectEditor → entityEditor}/MovePlaneEntity.d.ts +0 -0
  219. /package/lib/control/{geoObjectEditor → entityEditor}/RotateEntity.d.ts +0 -0
  220. /package/lib/entity/{LabelWorker.worker.d.ts → label/LabelWorker.worker.d.ts} +0 -0
@@ -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;
@@ -22,6 +22,21 @@ export interface GltfMetadata {
22
22
  texCoord?: number;
23
23
  };
24
24
  };
25
+ extensions?: {
26
+ KHR_materials_pbrSpecularGlossiness?: {
27
+ diffuseFactor?: number[];
28
+ diffuseTexture?: {
29
+ index: number;
30
+ texCoord?: number;
31
+ };
32
+ specularFactor?: number[];
33
+ glossinessFactor?: number;
34
+ specularGlossinessTexture?: {
35
+ index: number;
36
+ texCoord?: number;
37
+ };
38
+ };
39
+ };
25
40
  normalTexture?: {
26
41
  index: number;
27
42
  texCoord?: number;
@@ -80,7 +95,7 @@ export interface GltfPrimitive {
80
95
  }
81
96
  export type PrimitiveAttributes = {
82
97
  POSITION: number;
83
- NORMAL: number;
98
+ NORMAL?: number;
84
99
  } & Record<string, number>;
85
100
  export interface GltfNode {
86
101
  camera?: number;
@@ -143,7 +158,7 @@ export interface Primitive {
143
158
  name: string;
144
159
  indices?: ArrayBufferLike;
145
160
  vertices: ArrayBufferLike;
146
- normals: ArrayBufferLike;
161
+ normals?: ArrayBufferLike;
147
162
  texCoords?: ArrayBufferLike;
148
163
  material?: Material;
149
164
  mode: PrimitiveMode;
@@ -153,7 +168,10 @@ export interface Material {
153
168
  name: string;
154
169
  baseColorFactor?: number[];
155
170
  baseColorTexture?: Texture;
171
+ metallicFactor?: number;
172
+ roughnessFactor?: number;
156
173
  metallicRoughnessTexture?: Texture;
174
+ specularGlossinessTexture?: Texture;
157
175
  normalTexture?: NormalTexture;
158
176
  occlusionTexture?: OcclusionTexture;
159
177
  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;
@@ -74,8 +76,9 @@ export declare function parseHTML(htmlStr: string): HTMLElement[];
74
76
  export declare function print2d(id: string, text: string, x: number, y: number): void;
75
77
  export declare function isNumber(value: any): boolean;
76
78
  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;
79
+ export declare function createVec2(v?: number | Vec2 | NumberArray2 | null, def?: Vec2): Vec2;
80
+ export declare function createVec3(v?: number | Vec3 | Vec2 | NumberArray3 | NumberArray2 | null, def?: Vec3): Vec3;
81
+ export declare function createVec4(v?: Vec4 | NumberArray4 | null, def?: Vec4): Vec4;
79
82
  export declare function createColorRGBA(c?: string | NumberArray4 | Vec4 | null, def?: Vec4): Vec4;
80
83
  export declare function createColorRGB(c?: string | NumberArray3 | Vec3 | null, def?: Vec3): Vec3;
81
84
  export declare function createExtent(e?: Extent | [[number, number], [number, number]] | null, def?: Extent): Extent;
@@ -193,6 +196,7 @@ export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array
193
196
  * @param {TypedArray | number[]} b
194
197
  */
195
198
  export declare function concatTypedArrays(a: TypedArray, b: TypedArray | number[]): TypedArray;
199
+ export declare function insertTypedArray<T extends TypedArray>(arr: T, starting: number, insert: T | number[]): T;
196
200
  /**
197
201
  * Concatenates two the same arrays
198
202
  * @param {TypedArray | number[]} [a=[]] - First array
@@ -238,7 +242,7 @@ export declare function spliceTypedArray<T extends TypedArray>(arr: T, starting:
238
242
  /**
239
243
  * Returns 64-bit triangle coordinate array from inside of the source triangle array.
240
244
  * @static
241
- * @param {TypedArray | number[]} sourceArr - Source array
245
+ * @param {TypedArray | number[]} srcArr - Source array
242
246
  * @param {number} gridSize - Source array square matrix size
243
247
  * @param {number} i0 - First row index source array matrix
244
248
  * @param {number} j0 - First column index
@@ -246,7 +250,7 @@ export declare function spliceTypedArray<T extends TypedArray>(arr: T, starting:
246
250
  * @return {Float64Array} Triangle coordinates array from the source array.
247
251
  * @TODO: optimization
248
252
  */
249
- export declare function getMatrixSubArray64(sourceArr: TypedArray | number[], gridSize: number, i0: number, j0: number, size: number): Float64Array;
253
+ export declare function getMatrixSubArray64(srcArr: TypedArray | number[], gridSize: number, i0: number, j0: number, size: number): Float64Array;
250
254
  /**
251
255
  * Returns 32-bit triangle coordinate array from inside of the source triangle array.
252
256
  * @static
@@ -262,7 +266,7 @@ export declare function getMatrixSubArray32(sourceArr: TypedArray | number[], gr
262
266
  * Returns two float32 triangle coordinate arrays from inside of the source triangle array.
263
267
  * @TODO: optimization
264
268
  */
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;
269
+ 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
270
  export declare function cloneArray(items: any[]): any[];
267
271
  /**
268
272
  * Promise for load images
@@ -271,6 +275,8 @@ export declare function cloneArray(items: any[]): any[];
271
275
  * @returns {Promise<Image>} Returns promise.
272
276
  */
273
277
  export declare function loadImage(url: string): Promise<HTMLImageElement>;
278
+ export declare function ensureImageReady(image: HTMLImageElement): Promise<boolean>;
279
+ export declare function prepareTextureImage(image: HTMLImageElement): Promise<HTMLImageElement | HTMLCanvasElement | null>;
274
280
  /**
275
281
  * Gets image is loaded
276
282
  * @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
@@ -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,11 +63,11 @@ 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
  * }],