@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
@@ -2,26 +2,41 @@ import { Camera } from "../camera/Camera";
2
2
  import { Control } from "../control/Control";
3
3
  import type { IBaseInputState, RendererEventsHandler } from "./RendererEvents";
4
4
  import { EntityCollection } from "../entity/EntityCollection";
5
- import { Framebuffer, Multisample } from "../webgl/index";
5
+ import { Framebuffer, Multisample, ShaderProgram } from "../webgl/index";
6
6
  import { FontAtlas } from "../utils/FontAtlas";
7
7
  import { Handler } from "../webgl/Handler";
8
- import type { WebGLBufferExt } from "../webgl/Handler";
9
- import { LabelWorker } from "../entity/LabelWorker";
10
- import { RenderNode } from "../scene/RenderNode";
8
+ import type { WebGLBufferExt, WebGLTextureExt } from "../webgl/Handler";
9
+ import { LabelWorker } from "../entity/label/LabelWorker";
10
+ import { Scene } from "../scene/Scene";
11
+ import type { IDeferredShadingPass } from "./IDeferredShadingPass";
12
+ import type { ITransparencyPass } from "./ITransparencyPass";
13
+ import { ProjectorManager } from "./projectors/ProjectorManager";
14
+ import { CascadeShadowManager } from "./cascadeShadows/CascadeShadowManager";
15
+ import { ShadowManager } from "./shadows/ShadowManager";
16
+ import { TextureResourceManager } from "../utils/TextureResourceManager";
17
+ import type { RendererTextureRequest } from "../utils/TextureResourceManager";
11
18
  import { TextureAtlas } from "../utils/TextureAtlas";
12
19
  import { Vec2 } from "../math/Vec2";
13
20
  import { Vec3 } from "../math/Vec3";
14
21
  import type { NumberArray3 } from "../math/Vec3";
15
22
  import { Vec4 } from "../math/Vec4";
23
+ import type { NumberArray4 } from "../math/Vec4";
16
24
  export interface IRendererParams {
17
25
  controls?: Control[];
18
26
  msaa?: number;
19
27
  autoActivate?: boolean;
28
+ deferredDisabled?: boolean;
20
29
  fontsSrc?: string;
21
30
  gamma?: number;
22
31
  exposure?: number;
32
+ frameOpacity?: number;
33
+ toneMapping?: string;
23
34
  dpi?: number;
24
35
  clearColor?: [number, number, number, number];
36
+ lightPosition?: NumberArray3;
37
+ lightAmbient?: NumberArray3;
38
+ lightDiffuse?: NumberArray3;
39
+ lightSpecular?: NumberArray4;
25
40
  }
26
41
  interface IPickingObject {
27
42
  _pickingColor?: Vec3;
@@ -33,37 +48,52 @@ interface IFrameCallbackHandler {
33
48
  sender: any;
34
49
  }
35
50
  /**
36
- * Represents high level WebGL context interface that starts WebGL handler working in real time.
51
+ * High-level WebGL interface that runs the WebGL handler in real time.
37
52
  * @class
38
- * @param {Handler} handler - WebGL handler context.
39
- * @param {Object} [params] - Renderer parameters:
40
- * @fires RendererEventsHandler<RendererEventsType>#draw
41
- * @fires RendererEventsHandler<RendererEventsType>#resize
42
- * @fires RendererEventsHandler<RendererEventsType>#mousemove
43
- * @fires RendererEventsHandler<RendererEventsType>#mousestop
44
- * @fires RendererEventsHandler<RendererEventsType>#lclick
45
- * @fires RendererEventsHandler<RendererEventsType>#rclick
46
- * @fires RendererEventsHandler<RendererEventsType>#mclick
47
- * @fires RendererEventsHandler<RendererEventsType>#ldblclick
48
- * @fires RendererEventsHandler<RendererEventsType>#rdblclick
49
- * @fires RendererEventsHandler<RendererEventsType>#mdblclick
50
- * @fires RendererEventsHandler<RendererEventsType>#lup
51
- * @fires RendererEventsHandler<RendererEventsType>#rup
52
- * @fires RendererEventsHandler<RendererEventsType>#mup
53
- * @fires RendererEventsHandler<RendererEventsType>#ldown
54
- * @fires RendererEventsHandler<RendererEventsType>#rdown
55
- * @fires RendererEventsHandler<RendererEventsType>#mdown
56
- * @fires RendererEventsHandler<RendererEventsType>#lhold
57
- * @fires RendererEventsHandler<RendererEventsType>#rhold
58
- * @fires RendererEventsHandler<RendererEventsType>#mhold
59
- * @fires RendererEventsHandler<RendererEventsType>#mousewheel
60
- * @fires RendererEventsHandler<RendererEventsType>#touchstart
61
- * @fires RendererEventsHandler<RendererEventsType>#touchend
62
- * @fires RendererEventsHandler<RendererEventsType>#touchcancel
63
- * @fires RendererEventsHandler<RendererEventsType>#touchmove
64
- * @fires RendererEventsHandler<RendererEventsType>#doubletouch
65
- * @fires RendererEventsHandler<RendererEventsType>#touchleave
66
- * @fires RendererEventsHandler<RendererEventsType>#touchenter
53
+ * @param {Handler | string | HTMLCanvasElement} handler - WebGL handler instance or canvas target selector/element.
54
+ * @param {IRendererParams} [params={}] - Renderer parameters:
55
+ * - controls: Control instances to add to the renderer
56
+ * - msaa: MSAA (Multi-Sample Anti-Aliasing) level
57
+ * - autoActivate: Start rendering automatically after creation
58
+ * - deferredDisabled: Disable deferred shading pipeline and render deferred objects with forward shaders
59
+ * - fontsSrc: Path to font resources
60
+ * - gamma: Gamma correction value
61
+ * - exposure: HDR exposure value
62
+ * - frameOpacity: Scene objects opacity used with transparentBackground to achieve an AR effect
63
+ * - toneMapping: HDR tone mapping operator
64
+ * - dpi: Device pixel ratio
65
+ * - clearColor: RGBA clear color array
66
+ * - lightPosition: Light position `[x, y, z]`
67
+ * - lightAmbient: Light ambient color `[r, g, b]`
68
+ * - lightDiffuse: Light diffuse color `[r, g, b]`
69
+ * - lightSpecular: Light specular `[r, g, b, shininess]`
70
+ * @fires predraw - Triggered before each frame is rendered.
71
+ * @fires resize - Triggered when the canvas is resized.
72
+ * @fires mousemove - Triggered when the mouse moves over the canvas.
73
+ * @fires mousestop - Triggered when the mouse stops moving.
74
+ * @fires lclick - Triggered on left mouse button click.
75
+ * @fires rclick - Triggered on right mouse button click.
76
+ * @fires mclick - Triggered on middle mouse button click.
77
+ * @fires ldblclick - Triggered on left mouse button double-click.
78
+ * @fires rdblclick - Triggered on right mouse button double-click.
79
+ * @fires mdblclick - Triggered on middle mouse button double-click.
80
+ * @fires lup - Triggered when the left mouse button is released.
81
+ * @fires rup - Triggered when the right mouse button is released.
82
+ * @fires mup - Triggered when the middle mouse button is released.
83
+ * @fires ldown - Triggered when the left mouse button is pressed.
84
+ * @fires rdown - Triggered when the right mouse button is pressed.
85
+ * @fires mdown - Triggered when the middle mouse button is pressed.
86
+ * @fires lhold - Triggered while the left mouse button is held.
87
+ * @fires rhold - Triggered while the right mouse button is held.
88
+ * @fires mhold - Triggered while the middle mouse button is held.
89
+ * @fires mousewheel - Triggered on mouse wheel scroll.
90
+ * @fires touchstart - Triggered on touch start.
91
+ * @fires touchend - Triggered on the touch end.
92
+ * @fires touchcancel - Triggered on touch cancel.
93
+ * @fires touchmove - Triggered on touch move.
94
+ * @fires doubletouch - Triggered on double touch.
95
+ * @fires touchleave - Triggered when touch leaves the canvas.
96
+ * @fires touchenter - Triggered when touch enters the canvas.
67
97
  */
68
98
  export interface HTMLDivElementExt extends HTMLDivElement {
69
99
  attributions?: HTMLElement;
@@ -75,6 +105,9 @@ declare class Renderer {
75
105
  * @type {HTMLElement | null}
76
106
  */
77
107
  div: HTMLDivElementExt | null;
108
+ protected _topLeftContainer: HTMLDivElement;
109
+ protected _topRightContainer: HTMLDivElement;
110
+ protected _bottomRightContainer: HTMLDivElement;
78
111
  /**
79
112
  * WebGL handler context.
80
113
  * @public
@@ -84,19 +117,20 @@ declare class Renderer {
84
117
  exposure: number;
85
118
  gamma: number;
86
119
  whitepoint: number;
120
+ protected _toneMapping: string;
87
121
  brightThreshold: number;
88
122
  /**
89
123
  * Render nodes drawing queue.
90
124
  * @public
91
- * @type {Array.<RenderNode>}
125
+ * @type {Array.<Scene>}
92
126
  */
93
- _renderNodesArr: RenderNode[];
127
+ _scenesArr: Scene[];
94
128
  /**
95
129
  * Render nodes store for the comfortable access by the node name.
96
130
  * @public
97
- * @type {Object.<RenderNode>}
131
+ * @type {Object.<Scene>}
98
132
  */
99
- renderNodes: Record<string, RenderNode>;
133
+ scenes: Record<string, Scene>;
100
134
  /**
101
135
  * Current active camera.
102
136
  * @public
@@ -104,7 +138,7 @@ declare class Renderer {
104
138
  */
105
139
  activeCamera: Camera;
106
140
  /**
107
- * Renderer events. Represents interface for setting events like mousemove, draw, keypress etc.
141
+ * Renderer events. Represents interface for setting events like mousemove, predraw, keypress etc.
108
142
  * @public
109
143
  * @type {RendererEvents}
110
144
  */
@@ -133,7 +167,7 @@ declare class Renderer {
133
167
  */
134
168
  protected _pickingCallbacks: IFrameCallbackHandler[];
135
169
  /**
136
- * Picking objects(labels and billboards) framebuffer.
170
+ * Picking objects (labels and billboards) framebuffer.
137
171
  * @public
138
172
  * @type {Framebuffer}
139
173
  */
@@ -146,15 +180,18 @@ declare class Renderer {
146
180
  depthFramebuffer: Framebuffer | null;
147
181
  protected _msaa: number;
148
182
  protected _internalFormat: string;
149
- protected _format: string;
150
- protected _type: string;
183
+ protected _depthComponent: string;
151
184
  protected _depthRefreshRequired: boolean;
152
- sceneFramebuffer: Framebuffer | Multisample | null;
153
- protected blitFramebuffer: Framebuffer | null;
185
+ forwardFramebuffer: Multisample | null;
186
+ protected hdrFramebuffer: Framebuffer | null;
187
+ deferredDisabled: boolean;
188
+ frameOpacity: number;
189
+ deferredShadingPass: IDeferredShadingPass;
190
+ transparencyPass: ITransparencyPass;
154
191
  protected toneMappingFramebuffer: Framebuffer | null;
155
192
  protected _initialized: boolean;
156
193
  /**
157
- * Texture atlas for the billboards images.
194
+ * Texture atlas for the billboard images.
158
195
  * @public
159
196
  * @type {TextureAtlas}
160
197
  */
@@ -166,99 +203,140 @@ declare class Renderer {
166
203
  */
167
204
  fontAtlas: FontAtlas;
168
205
  /**
169
- * Texture atlas for the rays, polylines and strips entities.
206
+ * Texture atlas for the rays, polylines, and strips entities.
170
207
  * @public
171
208
  * @type {TextureAtlas}
172
209
  */
173
210
  strokeTextureAtlas: TextureAtlas;
174
211
  protected _entityCollections: EntityCollection[][];
175
212
  protected _currentOutput: string;
176
- protected _fnScreenFrame: Function | null;
177
213
  labelWorker: LabelWorker;
178
214
  screenDepthFramebuffer: Framebuffer | null;
179
215
  screenFramePositionBuffer: WebGLBufferExt | null;
180
216
  screenTexture: Record<string, WebGLTexture>;
181
217
  outputTexture: WebGLTexture | null;
182
- protected _readPickingBuffer: () => void;
183
218
  clearColor: Float32Array;
219
+ protected _textureResourceManager: TextureResourceManager;
220
+ _lightPosition: Float32Array;
221
+ _lightAmbient: Float32Array;
222
+ _lightDiffuse: Float32Array;
223
+ _lightSpecular: Float32Array;
224
+ projectors: ProjectorManager;
225
+ cascadeShadowManager: CascadeShadowManager;
226
+ shadows: ShadowManager;
184
227
  constructor(handler: Handler | string | HTMLCanvasElement, params?: IRendererParams);
185
228
  enableBlendOneSrcAlpha(): void;
229
+ set lightAmbient(lightAmbient: NumberArray3 | Float32Array);
230
+ get lightAmbient(): NumberArray3;
231
+ set lightDiffuse(lightDiffuse: NumberArray3 | Float32Array);
232
+ get lightDiffuse(): NumberArray3;
233
+ set lightSpecular(lightSpecular: NumberArray4 | Float32Array);
234
+ get lightSpecular(): NumberArray4;
235
+ /**
236
+ * Sets HDR tone mapping operator and recompiles tone mapping shader.
237
+ * @public
238
+ * @param {string} operator - Tone mapping operator name.
239
+ */
240
+ setToneMapping(operator: string): this;
241
+ /**
242
+ * Returns HDR tone mapping operator.
243
+ * @public
244
+ * @returns {string}
245
+ */
246
+ getToneMapping(): string;
186
247
  enableBlendDefault(): void;
248
+ enableBlendWoit(): void;
249
+ /**
250
+ * Sets depth compare and clear value for the camera (reverse-Z vs classic).
251
+ * Pass null to restore the classic depth state:
252
+ * depthFunc(LESS), clearDepth(1), and clip-control NEGATIVE_ONE_TO_ONE.
253
+ */
254
+ applyDepthForCamera(camera?: Camera | null): void;
187
255
  setRelativeCenter(c?: Vec3): void;
188
256
  /**
189
- * Sets renderer events activity.
190
- * @param {Boolean} activity - Events activity.
257
+ * Enables or disables renderer events.
258
+ * @public
259
+ * @param {boolean} activity - Events activity flag.
191
260
  */
192
261
  setEventsActivity(activity: boolean): void;
193
262
  addDepthCallback(sender: any, callback: Function): number;
194
263
  removeDepthCallback(id: number): void;
195
264
  /**
196
- * Adds picking rendering callback function.
197
- * @param {object} sender - Callback context.
198
- * @param {Function} callback - Rendering callback.
199
- * @returns {Number} Handler id
265
+ * Adds a picking render callback.
266
+ * @public
267
+ * @param {any} sender - Callback context.
268
+ * @param {Function} callback - Render callback function.
269
+ * @returns {number} Callback ID.
200
270
  */
201
271
  addPickingCallback(sender: any, callback: Function): number;
202
272
  /**
203
- * Removes picking rendering callback function.
204
- * @param {Number} id - Handler id to remove.
273
+ * Removes a picking render callback.
274
+ * @public
275
+ * @param {number} id - Callback ID to remove.
205
276
  */
206
277
  removePickingCallback(id: number): void;
207
278
  getPickingObject<T>(r: number, g: number, b: number): T;
208
279
  getPickingObjectArr<T>(arr: NumberArray3 | Uint8Array): T;
209
280
  getPickingObject3v<T>(vec: Vec3 | Vec4): T;
210
281
  /**
211
- * Assign picking color to the object.
282
+ * Assigns a picking color to an object.
212
283
  * @public
213
- * @param {Object} obj - Object that presume to be picked.
284
+ * @param {Object} obj - Object that receives a picking color.
214
285
  */
215
286
  assignPickingColor<T>(obj: T & IPickingObject): void;
216
287
  /**
217
- * Removes picking color from object.
288
+ * Removes the picking color from an object.
218
289
  * @public
219
- * @param {Object} obj - Object to remove picking color.
290
+ * @param {Object} obj - Object to clear the picking color from.
220
291
  */
221
292
  clearPickingColor<T>(obj: T & IPickingObject): void;
293
+ get viewportWidth(): number;
294
+ get viewportHeight(): number;
295
+ get internalFormat(): string;
296
+ get depthComponent(): string;
222
297
  /**
223
- * Get the client width.
298
+ * Returns the canvas client width.
224
299
  * @public
225
- * @returns {number} -
300
+ * @returns {number}
226
301
  */
227
302
  getWidth(): number;
228
303
  /**
229
- * Get the client height.
304
+ * Returns the canvas client height.
230
305
  * @public
231
- * @returns {number} -
306
+ * @returns {number}
232
307
  */
233
308
  getHeight(): number;
234
309
  /**
235
- * Get center of the canvas
310
+ * Returns the canvas viewport center.
236
311
  * @public
237
- * @returns {Vec2} -
312
+ * @returns {Vec2}
238
313
  */
239
- getCenter(): Vec2;
314
+ getViewportCenter(): Vec2;
240
315
  /**
241
- * Get center of the screen viewport
316
+ * Adds a control to the renderer.
242
317
  * @public
243
- * @returns {Vec2} -
244
- */
245
- getClientCenter(): Vec2;
246
- /**
247
- * Add the given control to the renderer.
248
318
  * @param {Control} control - Control.
249
319
  */
250
320
  addControl(control: Control): void;
251
321
  /**
252
- * Add the given controls array to the planet node.
322
+ * Adds an array of controls to the renderer.
323
+ * @public
253
324
  * @param {Array.<Control>} cArr - Control array.
254
325
  */
255
326
  addControls(cArr: Control[]): void;
256
327
  /**
257
- * Remove control from the renderer.
258
- * @param {Control} control - Control.
328
+ * Removes a control from the renderer.
329
+ * @public
330
+ * @param {Control} control - Control.
259
331
  */
260
332
  removeControl(control: Control): void;
261
333
  isInitialized(): boolean;
334
+ protected _appendControlContainers(): void;
335
+ acquireTexture(params: RendererTextureRequest): WebGLTextureExt | null;
336
+ releaseTexture(texture: WebGLTextureExt | null | undefined): void;
337
+ topLeftContainer(): HTMLDivElement;
338
+ topRightContainer(): HTMLDivElement;
339
+ bottomRightContainer(): HTMLDivElement;
262
340
  /**
263
341
  * Renderer initialization.
264
342
  * @public
@@ -269,42 +347,43 @@ declare class Renderer {
269
347
  setCurrentScreen(screenName: string): void;
270
348
  _resizeStart(): void;
271
349
  _resizeEnd(): void;
272
- removeNode(renderNode: RenderNode): void;
350
+ removeNode(scene: Scene): void;
273
351
  /**
274
- * Adds render node to the renderer.
352
+ * Adds a scene to the renderer.
275
353
  * @public
276
- * @param {RenderNode} renderNode - Render node.
354
+ * @param {Scene} scene - Scene.
277
355
  */
278
- addNode(renderNode: RenderNode): void;
279
- protected _initializeRenderNodes(): void;
356
+ addScene(scene: Scene): void;
357
+ protected _initializeScenes(): void;
280
358
  /**
281
- * Adds render node to the renderer before specific node.
359
+ * Adds a scene to the renderer before a specific node.
282
360
  * @public
283
- * @param {RenderNode} renderNode - Render node.
284
- * @param {RenderNode} renderNodeBefore - Insert before the renderNodeBefore node.
361
+ * @param {Scene} scene - Render node.
362
+ * @param {Scene} sceneBefore - Insert before the sceneBefore node.
285
363
  */
286
- addNodeBefore(renderNode: RenderNode, renderNodeBefore: RenderNode): void;
364
+ addSceneBefore(scene: Scene, sceneBefore: Scene): void;
287
365
  /**
288
- * Adds render nodes array to the renderer.
366
+ * Adds scenes to the renderer.
289
367
  * @public
290
- * @param {Array.<RenderNode>} nodesArr - Render nodes array.
368
+ * @param {Array.<Scene>} nodesArr - Render nodes array.
291
369
  */
292
- addNodes(nodesArr: RenderNode[]): void;
293
- getMaxMSAA(internalFormat: string): any;
370
+ addScenes(nodesArr: Scene[]): void;
371
+ getMaxMSAA(internalFormat: string): number;
294
372
  getMSAA(): number;
295
373
  /**
296
- * TODO: replace with cache friendly linked list by BillboardHandler, LabelHandler etc.
374
+ * TODO: replace with cache-friendly linked list by BillboardHandler, LabelHandler etc.
297
375
  */
298
376
  enqueueEntityCollectionsToDraw(ecArr: EntityCollection[], depthOrder?: number): void;
299
377
  /**
300
378
  * Forces the depth buffer to be refreshed in the next frame.
301
- * Has effect for terrain altitude estimate precision.
379
+ * Has an effect for terrain altitude estimate precision.
302
380
  */
303
381
  markForDepthRefresh(): void;
304
- /**
305
- * @protected
306
- */
307
- protected _drawEntityCollections(depthOrder: number): void;
382
+ protected _drawGBufferEntityCollections(depthOrder: number): void;
383
+ protected _drawForwardEntityCollections(depthOrder: number): void;
384
+ protected _drawLabelsForwardEntityCollections(depthOrder: number): void;
385
+ protected _drawTransparentEntityCollections(depthOrder: number): void;
386
+ protected _drawTransparentEntityCollectionsForward(depthOrder: number): void;
308
387
  protected _drawPickingEntityCollections(depthOrder: number): void;
309
388
  protected _drawDepthEntityCollections(depthOrder: number): void;
310
389
  protected _clearEntityCollectionQueue(depthOrder: number): void;
@@ -313,9 +392,7 @@ declare class Renderer {
313
392
  * @public
314
393
  */
315
394
  draw(): void;
316
- getImageDataURL(type?: string, quality?: number): string;
317
- protected _screenFrameMSAA(): void;
318
- protected _screenFrameNoMSAA(): void;
395
+ protected _screenFrame(): void;
319
396
  /**
320
397
  * Draw picking objects framebuffer.
321
398
  * @private
@@ -323,8 +400,7 @@ declare class Renderer {
323
400
  protected _drawPickingBuffer(depthOrder: number): void;
324
401
  protected _drawDepthBuffer(depthOrder: number): void;
325
402
  protected _readDepthBuffer(callback?: () => void): void;
326
- protected _readPickingBuffer_webgl1(): void;
327
- protected _readPickingBuffer_webgl2(): void;
403
+ protected _readPickingBuffer(): void;
328
404
  readPickingColor(x: number, y: number, outColor: NumberArray3 | Uint8Array): void;
329
405
  readDepth(x: number, y: number, outDepth: NumberArray3 | Float32Array): void;
330
406
  /**
@@ -351,5 +427,24 @@ declare class Renderer {
351
427
  */
352
428
  start(): void;
353
429
  destroy(): void;
430
+ /**
431
+ * Adds a shader program to the renderer if it has not been added yet.
432
+ * @public
433
+ * @param {ShaderProgram} program - ShaderProgram instance.
434
+ */
435
+ addProgram(program: ShaderProgram): void;
436
+ /**
437
+ * Adds one or more programs to the renderer.
438
+ * Supports both individual programs and nested program arrays.
439
+ * @public
440
+ * @param {...(ShaderProgram | ShaderProgram[])} programs - ShaderProgram list.
441
+ */
442
+ addPrograms(...programs: (ShaderProgram | ShaderProgram[])[]): void;
443
+ /**
444
+ * Alias for {@link Renderer.addPrograms}.
445
+ * @public
446
+ * @param {...(ShaderProgram | ShaderProgram[])} programs - ShaderProgram list.
447
+ */
448
+ addShaders(...programs: (ShaderProgram | ShaderProgram[])[]): void;
354
449
  }
355
450
  export { Renderer };
@@ -7,13 +7,18 @@ import { Renderer } from "./Renderer";
7
7
  import { PointerHandler, type PointerEventExt } from "../input/PointerHandler";
8
8
  import { Vec2 } from "../math/Vec2";
9
9
  import { Vec3 } from "../math/Vec3";
10
+ import { Ray } from "../math/Ray";
10
11
  export type RendererEventsHandler = RendererEvents & EventsHandler<RendererEventsType>;
11
12
  export declare function createRendererEvents(renderer: Renderer): RendererEvents;
12
13
  export type RendererEventsType = [
13
14
  "projchanged",
14
15
  "changerelativecenter",
16
+ "predraw",
15
17
  "draw",
16
- "drawtransparent",
18
+ "forwardpass",
19
+ "postforwardpass",
20
+ "transparentpass",
21
+ "gbufferpass",
17
22
  "postdraw",
18
23
  "resize",
19
24
  "resizeend",
@@ -66,6 +71,12 @@ export interface IBaseInputState {
66
71
  prev_y: number;
67
72
  /** Screen touch position world direction. */
68
73
  direction: Vec3;
74
+ /**
75
+ * World-space picking ray.
76
+ * Perspective: origin is camera.eye.
77
+ * Orthographic: origin is per-pixel on the view plane, direction is camera forward.
78
+ */
79
+ ray: Ray;
69
80
  /** Current touched(picking) object. */
70
81
  pickingObject: any | null;
71
82
  /** Renderer instance. */
@@ -106,9 +117,9 @@ export interface IMouseState extends IBaseInputState {
106
117
  middleButtonClick: boolean;
107
118
  /** Mouse has just stopped now. */
108
119
  justStopped: boolean;
109
- /** Mose double click delay response time.*/
120
+ /** Mouse double-click delay response time. */
110
121
  doubleClickDelay: number;
111
- /** Mose click delay response time.*/
122
+ /** Mouse click delay response time. */
112
123
  clickDelay: number;
113
124
  /** Mouse wheel. */
114
125
  wheelDelta: number;
@@ -125,9 +136,9 @@ export interface ITouchState extends IBaseInputState {
125
136
  touchCancel: boolean;
126
137
  /** Touched twice.*/
127
138
  doubleTouch: boolean;
128
- /** Double touching responce delay.*/
139
+ /** Double-touch response delay. */
129
140
  doubleTouchDelay: number;
130
- /** Double touching responce radius in screen pixels.*/
141
+ /** Double-touch response radius in screen pixels. */
131
142
  doubleTouchRadius: number;
132
143
  /** Currently touching.*/
133
144
  touching: boolean;
@@ -0,0 +1,14 @@
1
+ import { Framebuffer } from "../webgl/Framebuffer";
2
+ import type { ITransparencyPass } from "./ITransparencyPass";
3
+ import type { Renderer } from "./Renderer";
4
+ export declare class WOITPass implements ITransparencyPass {
5
+ protected _renderer: Renderer;
6
+ protected _framebuffer: Framebuffer | null;
7
+ constructor(renderer: Renderer);
8
+ init(): void;
9
+ beginPass(): void;
10
+ endPass(): void;
11
+ resolve(): void;
12
+ resize(width: number, height: number): void;
13
+ dispose(): void;
14
+ }
@@ -0,0 +1,34 @@
1
+ import type { Planet } from "../../scene/Planet";
2
+ import type { ShaderProgram } from "../../webgl/ShaderProgram";
3
+ import type { Renderer } from "../Renderer";
4
+ import { CascadeShadowMap } from "./CascadeShadowMap";
5
+ export declare class CascadeShadowManager {
6
+ protected _renderer: Renderer;
7
+ protected _planet: Planet | null;
8
+ protected _cascadeShadowMaps: CascadeShadowMap[];
9
+ protected _activeCascadeShadowMaps: CascadeShadowMap[];
10
+ protected _viewProjData: Float32Array;
11
+ protected _eyeRelData: Float32Array;
12
+ protected _paramsData: Float32Array;
13
+ protected _splitsData: Float32Array;
14
+ protected _viewForwardData: Float32Array;
15
+ protected _layerData: Int32Array;
16
+ protected _updateActiveCascadeShadowMaps: boolean;
17
+ protected _initialized: boolean;
18
+ constructor(renderer: Renderer);
19
+ get activeCount(): number;
20
+ get active(): CascadeShadowMap[];
21
+ init(): void;
22
+ bindPlanet(planet: Planet): void;
23
+ unbindPlanet(): void;
24
+ add(cascadeShadowMap: CascadeShadowMap): number;
25
+ update(cascadeShadowMap: CascadeShadowMap): boolean;
26
+ remove(cascadeShadowMap: CascadeShadowMap): boolean;
27
+ clear(): void;
28
+ destroy(): void;
29
+ bindForward(program: ShaderProgram, textureUnitStart?: number): number;
30
+ protected _initCascadeShadowMap(cascadeShadowMap: CascadeShadowMap): void;
31
+ protected _collectActiveCascadeShadowMaps(): CascadeShadowMap[];
32
+ protected _getActiveCascadeShadowMaps(): CascadeShadowMap[];
33
+ protected _onDraw: () => void;
34
+ }