@openglobus/og 0.17.1 → 0.18.0

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 (490) hide show
  1. package/README.md +75 -46
  2. package/dist/@openglobus/og.esm.js +1 -20
  3. package/dist/@openglobus/og.esm.js.map +1 -1
  4. package/dist/@openglobus/og.umd.js +1 -20
  5. package/dist/@openglobus/og.umd.js.map +1 -1
  6. package/dist/@openglobus/res/fonts/Karla-Bold.json +5252 -0
  7. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.cfg +920 -0
  8. package/dist/@openglobus/res/fonts/Karla-Bold.ttf.png +0 -0
  9. package/dist/@openglobus/res/fonts/Karla-Light.json +5252 -0
  10. package/dist/@openglobus/res/fonts/Karla-Light.ttf.cfg +830 -0
  11. package/dist/@openglobus/res/fonts/Karla-Light.ttf.png +0 -0
  12. package/dist/@openglobus/res/fonts/Karla-Medium.json +5252 -0
  13. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.cfg +1196 -0
  14. package/dist/@openglobus/res/fonts/Karla-Medium.ttf.png +0 -0
  15. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.json +3332 -0
  16. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.cfg +1370 -0
  17. package/dist/@openglobus/res/fonts/NotoSansArabic-Regular.ttf.png +0 -0
  18. package/dist/@openglobus/res/fonts/Roboto-Regular.json +37147 -0
  19. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.cfg +1340 -0
  20. package/dist/@openglobus/res/fonts/Roboto-Regular.ttf.png +0 -0
  21. package/dist/@openglobus/res/fonts/arial.json +4321 -0
  22. package/dist/@openglobus/res/fonts/arial.ttf.cfg +1570 -0
  23. package/dist/@openglobus/res/fonts/arial.ttf.png +0 -0
  24. package/dist/@openglobus/res/night-4326.png +0 -0
  25. package/dist/@openglobus/res/night.png +0 -0
  26. package/dist/@openglobus/res/spec.png +0 -0
  27. package/package.json +25 -23
  28. package/src/{og/Clock.js → Clock.ts} +100 -78
  29. package/src/Deferred.ts +17 -0
  30. package/src/Events.ts +200 -0
  31. package/src/{og/Extent.js → Extent.ts} +324 -352
  32. package/src/Globe.ts +363 -0
  33. package/src/{og/ImageCanvas.js → ImageCanvas.ts} +244 -236
  34. package/src/Lock.ts +41 -0
  35. package/src/{og/LonLat.js → LonLat.ts} +50 -47
  36. package/src/{og/Object3d.js → Object3d.ts} +89 -55
  37. package/src/Popup.ts +228 -0
  38. package/src/{og/QueueArray.js → QueueArray.ts} +76 -75
  39. package/src/{og/Rectangle.js → Rectangle.ts} +115 -111
  40. package/src/Stack.ts +58 -0
  41. package/src/{og/astro/astro.js → astro/astro.ts} +49 -51
  42. package/src/{og/astro/earth.js → astro/earth.ts} +8 -9
  43. package/src/{og/astro/jd.js → astro/jd.ts} +92 -111
  44. package/src/{og/astro/orbit.js → astro/orbit.ts} +35 -37
  45. package/src/{og/astro/rotation.js → astro/rotation.ts} +4 -6
  46. package/src/{og/bv/Box.js → bv/Box.ts} +21 -17
  47. package/src/{og/bv/Sphere.js → bv/Sphere.ts} +21 -19
  48. package/src/bv/index.ts +4 -0
  49. package/src/{og/camera/Camera.js → camera/Camera.ts} +254 -197
  50. package/src/{og/camera/Frustum.js → camera/Frustum.ts} +137 -111
  51. package/src/{og/camera/PlanetCamera.js → camera/PlanetCamera.ts} +248 -185
  52. package/src/camera/index.ts +4 -0
  53. package/src/{og/cons.js → cons.ts} +14 -18
  54. package/src/{og/control/Atmosphere.js → control/Atmosphere.ts} +50 -50
  55. package/src/{og/control/CompassButton.js → control/CompassButton.ts} +27 -30
  56. package/src/{og/control/Control.js → control/Control.ts} +76 -70
  57. package/src/{og/control/DebugInfo.js → control/DebugInfo.ts} +130 -62
  58. package/src/{og/control/DrawingSwitcher.js → control/DrawingSwitcher.ts} +16 -22
  59. package/src/control/EarthCoordinates.ts +222 -0
  60. package/src/control/EarthNavigation.ts +293 -0
  61. package/src/{og/control/GeoImageDragControl.js → control/GeoImageDragControl.ts} +37 -29
  62. package/src/control/KeyboardNavigation.ts +168 -0
  63. package/src/{og/control/LayerAnimation.js → control/LayerAnimation.ts} +74 -90
  64. package/src/control/LayerSwitcher.ts +76 -0
  65. package/src/{og/control/Lighting.js → control/Lighting.ts} +158 -120
  66. package/src/control/MouseNavigation.ts +468 -0
  67. package/src/control/MouseWheelZoomControl.ts +269 -0
  68. package/src/{og/control/RulerSwitcher.js → control/RulerSwitcher.ts} +18 -20
  69. package/src/control/ScaleControl.ts +131 -0
  70. package/src/control/SegmentBoundVisualization.ts +50 -0
  71. package/src/control/ShowFps.ts +28 -0
  72. package/src/control/SimpleNavigation.ts +118 -0
  73. package/src/{og/control/SimpleSkyBackground.js → control/SimpleSkyBackground.ts} +36 -38
  74. package/src/{og/control/Sun.js → control/Sun.ts} +56 -64
  75. package/src/control/ToggleWireframe.ts +35 -0
  76. package/src/control/TouchNavigation.ts +368 -0
  77. package/src/control/ZoomControl.ts +111 -0
  78. package/src/control/drawing/DrawingControl.ts +45 -0
  79. package/src/{og/control/drawing/LineStringDrawingScene.js → control/drawing/LineStringDrawingScene.ts} +28 -35
  80. package/src/{og/control/drawing/PolygonDrawingScene.js → control/drawing/PolygonDrawingScene.ts} +148 -201
  81. package/src/{og/control/elevationProfile/ElevationProfile.js → control/elevationProfile/ElevationProfile.ts} +70 -36
  82. package/src/control/heightRuler/HeightRuler.ts +16 -0
  83. package/src/{og/control/heightRuler/HeightRulerScene.js → control/heightRuler/HeightRulerScene.ts} +92 -87
  84. package/src/{og/control/heightRuler/HeightRulerSwitcher.js → control/heightRuler/HeightRulerSwitcher.ts} +3 -3
  85. package/src/control/index.ts +45 -0
  86. package/src/control/ruler/Ruler.ts +35 -0
  87. package/src/{og/control/ruler/RulerScene.js → control/ruler/RulerScene.ts} +163 -121
  88. package/src/{og/control/selection/Selection.js → control/selection/Selection.ts} +23 -21
  89. package/src/{og/control/selection/SelectionScene.js → control/selection/SelectionScene.ts} +64 -50
  90. package/src/{og/control/timeline/TimelineControl.js → control/timeline/TimelineControl.ts} +37 -28
  91. package/src/{og/control/timeline/TimelineModel.js → control/timeline/TimelineModel.ts} +50 -35
  92. package/src/{og/control/timeline/TimelineView.js → control/timeline/TimelineView.ts} +162 -113
  93. package/src/{og/control/timeline/timelineUtils.js → control/timeline/timelineUtils.ts} +11 -10
  94. package/src/{og/control → control}/visibleExtent/Segment.js +5 -5
  95. package/src/{og/control → control}/visibleExtent/VisibleExtent.js +8 -15
  96. package/src/{og/control/visibleExtent/drawnode.js → control/visibleExtent/drawnode.ts} +1 -3
  97. package/src/{og/ellipsoid/Ellipsoid.js → ellipsoid/Ellipsoid.ts} +113 -59
  98. package/src/ellipsoid/index.ts +4 -0
  99. package/src/{og/ellipsoid/wgs84.js → ellipsoid/wgs84.ts} +1 -3
  100. package/src/{og/entity/BaseBillboard.js → entity/BaseBillboard.ts} +128 -102
  101. package/src/entity/BaseBillboardHandler.ts +772 -0
  102. package/src/{og/entity/Billboard.js → entity/Billboard.ts} +77 -47
  103. package/src/entity/BillboardHandler.ts +135 -0
  104. package/src/{og/entity/Entity.js → entity/Entity.ts} +285 -226
  105. package/src/{og/entity/EntityCollection.js → entity/EntityCollection.ts} +340 -247
  106. package/src/{og/entity/GeoObject.js → entity/GeoObject.ts} +122 -67
  107. package/src/{og/entity/GeoObjectHandler.js → entity/GeoObjectHandler.ts} +273 -198
  108. package/src/entity/Geometry.ts +486 -0
  109. package/src/{og/entity/GeometryHandler.js → entity/GeometryHandler.ts} +383 -541
  110. package/src/{og/entity/Label.js → entity/Label.ts} +131 -83
  111. package/src/{og/entity/LabelHandler.js → entity/LabelHandler.ts} +289 -255
  112. package/src/{og/entity/LabelWorker.js → entity/LabelWorker.ts} +26 -36
  113. package/src/{og/entity/PointCloud.js → entity/PointCloud.ts} +200 -164
  114. package/src/entity/PointCloudHandler.ts +125 -0
  115. package/src/{og/entity/Polyline.js → entity/Polyline.ts} +517 -539
  116. package/src/{og/entity/PolylineHandler.js → entity/PolylineHandler.ts} +29 -31
  117. package/src/{og/entity/Ray.js → entity/Ray.ts} +89 -60
  118. package/src/{og/entity/RayHandler.js → entity/RayHandler.ts} +201 -306
  119. package/src/{og/entity/Strip.js → entity/Strip.ts} +143 -100
  120. package/src/{og/entity/StripHandler.js → entity/StripHandler.ts} +76 -72
  121. package/src/entity/index.ts +12 -0
  122. package/src/index.ts +173 -0
  123. package/src/input/KeyboardHandler.ts +196 -0
  124. package/src/{og/input/MouseHandler.js → input/MouseHandler.ts} +46 -35
  125. package/src/input/TouchHandler.ts +54 -0
  126. package/src/{og/input/input.js → input/input.ts} +1 -3
  127. package/src/{og/layer/BaseGeoImage.js → layer/BaseGeoImage.ts} +174 -107
  128. package/src/{og/layer/CanvasTiles.js → layer/CanvasTiles.ts} +139 -105
  129. package/src/{og/layer/GeoImage.js → layer/GeoImage.ts} +62 -52
  130. package/src/layer/GeoTexture2d.ts +56 -0
  131. package/src/{og/layer/GeoVideo.js → layer/GeoVideo.ts} +53 -53
  132. package/src/{og/layer/KML.js → layer/KML.ts} +63 -74
  133. package/src/{og/layer/Layer.js → layer/Layer.ts} +399 -223
  134. package/src/{og/layer/Material.js → layer/Material.ts} +40 -35
  135. package/src/{og/layer/Vector.js → layer/Vector.ts} +319 -267
  136. package/src/{og/layer/WMS.js → layer/WMS.ts} +76 -64
  137. package/src/{og/layer/XYZ.js → layer/XYZ.ts} +123 -98
  138. package/src/layer/index.ts +12 -0
  139. package/src/{og/light/LightSource.js → light/LightSource.ts} +132 -93
  140. package/src/{og/math/Line2.js → math/Line2.ts} +11 -8
  141. package/src/{og/math/Line3.js → math/Line3.ts} +49 -27
  142. package/src/{og/math/Mat3.js → math/Mat3.ts} +43 -27
  143. package/src/{og/math/Mat4.js → math/Mat4.ts} +110 -77
  144. package/src/{og/math/Plane.js → math/Plane.ts} +28 -23
  145. package/src/{og/math/Quat.js → math/Quat.ts} +238 -222
  146. package/src/{og/math/Ray.js → math/Ray.ts} +59 -63
  147. package/src/{og/math/Vec2.js → math/Vec2.ts} +85 -76
  148. package/src/{og/math/Vec3.js → math/Vec3.ts} +141 -140
  149. package/src/{og/math/Vec4.js → math/Vec4.ts} +64 -53
  150. package/src/{og/math/coder.js → math/coder.ts} +30 -27
  151. package/src/math/index.ts +26 -0
  152. package/src/{og/math.js → math.ts} +46 -49
  153. package/src/{og/mercator.js → mercator.ts} +143 -149
  154. package/src/{og/proj/EPSG3857.js → proj/EPSG3857.ts} +1 -3
  155. package/src/{og/proj/EPSG4326.js → proj/EPSG4326.ts} +11 -13
  156. package/src/{og/proj/Proj.js → proj/Proj.ts} +27 -23
  157. package/src/{og/quadTree/EPSG4326QuadTreeStrategy.js → quadTree/EPSG4326QuadTreeStrategy.ts} +10 -13
  158. package/src/{og/quadTree/EarthQuadTreeStrategy.js → quadTree/EarthQuadTreeStrategy.ts} +11 -13
  159. package/src/quadTree/EntityCollectionNode.ts +395 -0
  160. package/src/{og/quadTree/MarsQuadTreeStrategy.js → quadTree/MarsQuadTreeStrategy.ts} +10 -13
  161. package/src/{og/quadTree/Node.js → quadTree/Node.ts} +283 -191
  162. package/src/{og/quadTree/QuadTreeStrategy.js → quadTree/QuadTreeStrategy.ts} +35 -29
  163. package/src/quadTree/Wgs84QuadTreeStrategy.ts +22 -0
  164. package/src/quadTree/index.ts +14 -0
  165. package/src/{og/quadTree/quadTree.js → quadTree/quadTree.ts} +75 -77
  166. package/src/{og/renderer/Renderer.js → renderer/Renderer.ts} +454 -298
  167. package/src/{og/renderer/RendererEvents.js → renderer/RendererEvents.ts} +347 -270
  168. package/src/{og/scene/Axes.js → scene/Axes.ts} +26 -22
  169. package/src/{og/scene/BaseNode.js → scene/BaseNode.ts} +53 -47
  170. package/src/{og/scene/Planet.js → scene/Planet.ts} +777 -595
  171. package/src/{og/scene/RenderNode.js → scene/RenderNode.ts} +105 -91
  172. package/src/{og/scene/SkyBox.js → scene/SkyBox.ts} +29 -25
  173. package/src/scene/index.ts +6 -0
  174. package/src/{og/segment/Segment.js → segment/Segment.ts} +497 -371
  175. package/src/{og/segment/SegmentLonLat.js → segment/SegmentLonLat.ts} +81 -87
  176. package/src/{og/segment/SegmentLonLatWgs84.js → segment/SegmentLonLatWgs84.ts} +9 -16
  177. package/src/{og/segment/Slice.js → segment/Slice.ts} +15 -9
  178. package/src/{og/segment/segmentHelper.js → segment/segmentHelper.ts} +57 -49
  179. package/src/{og/shaders/atmos.js → shaders/atmos.ts} +4 -6
  180. package/src/{og/shaders/billboard.js → shaders/billboard.ts} +3 -5
  181. package/src/{og/shaders/bloom.js → shaders/bloom.ts} +2 -4
  182. package/src/{og/shaders/blur.js → shaders/blur.ts} +4 -7
  183. package/src/{og/shaders/depth.js → shaders/depth.ts} +1 -3
  184. package/src/{og/shaders/drawnode.js → shaders/drawnode.ts} +19 -21
  185. package/src/{og/shaders/geoObject.js → shaders/geoObject.ts} +17 -19
  186. package/src/{og/shaders/label.js → shaders/label.ts} +4 -6
  187. package/src/{og/shaders/lumFilter.js → shaders/lumFilter.ts} +2 -4
  188. package/src/{og/shaders/pickingMask.js → shaders/pickingMask.ts} +2 -4
  189. package/src/{og/shaders/pointCloud.js → shaders/pointCloud.ts} +7 -10
  190. package/src/{og/shaders/polyline.js → shaders/polyline.ts} +3 -200
  191. package/src/{og/shaders/ray.js → shaders/ray.ts} +2 -4
  192. package/src/{og/shaders/screenFrame.js → shaders/screenFrame.ts} +2 -4
  193. package/src/{og/shaders/skybox.js → shaders/skybox.ts} +7 -9
  194. package/src/{og/shaders/toneMapping.js → shaders/toneMapping.ts} +2 -4
  195. package/src/{og/shaders/utils.js → shaders/utils.ts} +0 -2
  196. package/src/{og/terrain/BilTerrain.js → terrain/BilTerrain.ts} +38 -32
  197. package/src/terrain/EmptyTerrain.ts +230 -0
  198. package/src/{og/terrain/Geoid.js → terrain/Geoid.ts} +67 -41
  199. package/src/{og/terrain/GlobusTerrain.js → terrain/GlobusTerrain.ts} +159 -153
  200. package/src/{og/terrain/MapboxTerrain.js → terrain/MapboxTerrain.ts} +58 -61
  201. package/src/terrain/index.ts +6 -0
  202. package/src/ui/Button.ts +121 -0
  203. package/src/ui/ButtonGroup.ts +63 -0
  204. package/src/ui/Dialog.ts +244 -0
  205. package/src/ui/Slider.ts +188 -0
  206. package/src/ui/ToggleButton.ts +68 -0
  207. package/src/{og/ui/View.js → ui/View.ts} +66 -59
  208. package/src/utils/BaseWorker.ts +60 -0
  209. package/src/utils/FontAtlas.ts +356 -0
  210. package/src/{og/utils/GeoImageCreator.js → utils/GeoImageCreator.ts} +45 -29
  211. package/src/{og/utils/ImagesCacheManager.js → utils/ImagesCacheManager.ts} +85 -70
  212. package/src/utils/Loader.ts +247 -0
  213. package/src/{og/utils/NormalMapCreator.js → utils/NormalMapCreator.ts} +114 -77
  214. package/src/{og/utils/PlainSegmentWorker.js → utils/PlainSegmentWorker.ts} +41 -24
  215. package/src/{og/utils/TerrainWorker.js → utils/TerrainWorker.ts} +51 -36
  216. package/src/utils/TextureAtlas.ts +322 -0
  217. package/src/{og/utils/VectorTileCreator.js → utils/VectorTileCreator.ts} +67 -52
  218. package/src/{og/utils/colorTable.js → utils/colorTable.ts} +142 -144
  219. package/src/{og/utils/earcut.js → utils/earcut.ts} +664 -661
  220. package/src/{og/utils/objParser.js → utils/objParser.ts} +66 -37
  221. package/src/{og/utils/shared.js → utils/shared.ts} +267 -206
  222. package/src/utils/units.ts +78 -0
  223. package/src/webgl/BaseFramebuffer.ts +125 -0
  224. package/src/webgl/Framebuffer.ts +206 -0
  225. package/src/webgl/Handler.ts +1414 -0
  226. package/src/webgl/Multisample.ts +153 -0
  227. package/src/webgl/Program.ts +451 -0
  228. package/src/{og/webgl/ProgramController.js → webgl/ProgramController.ts} +44 -43
  229. package/src/webgl/index.ts +13 -0
  230. package/src/{og/webgl/types.js → webgl/types.ts} +29 -31
  231. package/src/webgl/variableHandlers.ts +114 -0
  232. package/src/og/Deferred.js +0 -11
  233. package/src/og/Events.js +0 -185
  234. package/src/og/Globe.js +0 -342
  235. package/src/og/Lock.js +0 -44
  236. package/src/og/Popup.js +0 -187
  237. package/src/og/Stack.js +0 -49
  238. package/src/og/bv/index.js +0 -4
  239. package/src/og/camera/index.js +0 -4
  240. package/src/og/control/EarthCoordinates.js +0 -214
  241. package/src/og/control/EarthNavigation.js +0 -258
  242. package/src/og/control/KeyboardNavigation.js +0 -149
  243. package/src/og/control/LayerSwitcher.js +0 -424
  244. package/src/og/control/MouseNavigation.js +0 -436
  245. package/src/og/control/MouseWheelZoomControl.js +0 -253
  246. package/src/og/control/ScaleControl.js +0 -119
  247. package/src/og/control/SegmentBoundVisualization.js +0 -54
  248. package/src/og/control/ShowFps.js +0 -40
  249. package/src/og/control/SimpleNavigation.js +0 -123
  250. package/src/og/control/ToggleWireframe.js +0 -35
  251. package/src/og/control/TouchNavigation.js +0 -350
  252. package/src/og/control/ZoomControl.js +0 -115
  253. package/src/og/control/drawing/DrawingControl.js +0 -51
  254. package/src/og/control/heightRuler/HeightRuler.js +0 -12
  255. package/src/og/control/index.js +0 -56
  256. package/src/og/control/ruler/Ruler.js +0 -39
  257. package/src/og/ellipsoid/index.js +0 -4
  258. package/src/og/entity/BillboardHandler.js +0 -883
  259. package/src/og/entity/Geometry.js +0 -320
  260. package/src/og/entity/PointCloudHandler.js +0 -122
  261. package/src/og/entity/index.js +0 -9
  262. package/src/og/index.js +0 -112
  263. package/src/og/input/KeyboardHandler.js +0 -128
  264. package/src/og/input/TouchHandler.js +0 -59
  265. package/src/og/layer/GeoTexture2d.js +0 -50
  266. package/src/og/layer/index.js +0 -11
  267. package/src/og/math/index.js +0 -23
  268. package/src/og/quadTree/EntityCollectionNode.js +0 -391
  269. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +0 -27
  270. package/src/og/quadTree/index.js +0 -14
  271. package/src/og/res/images.js +0 -8
  272. package/src/og/scene/index.js +0 -5
  273. package/src/og/terrain/EmptyTerrain.js +0 -174
  274. package/src/og/terrain/index.js +0 -6
  275. package/src/og/ui/Button.js +0 -107
  276. package/src/og/ui/ButtonGroup.js +0 -57
  277. package/src/og/ui/Dialog.js +0 -239
  278. package/src/og/ui/Slider.js +0 -170
  279. package/src/og/ui/ToggleButton.js +0 -51
  280. package/src/og/ui/UIhelpers.js +0 -155
  281. package/src/og/utils/BaseWorker.js +0 -46
  282. package/src/og/utils/FontAtlas.js +0 -218
  283. package/src/og/utils/Loader.js +0 -188
  284. package/src/og/utils/TextureAtlas.js +0 -291
  285. package/src/og/utils/functionComposition.js +0 -13
  286. package/src/og/utils/units.js +0 -78
  287. package/src/og/webgl/Framebuffer.js +0 -311
  288. package/src/og/webgl/Handler.js +0 -1168
  289. package/src/og/webgl/Multisample.js +0 -275
  290. package/src/og/webgl/Program.js +0 -407
  291. package/src/og/webgl/callbacks.js +0 -98
  292. package/src/og/webgl/index.js +0 -13
  293. package/src/og.jsdoc +0 -3
  294. package/types/Clock.d.ts +0 -99
  295. package/types/Deferred.d.ts +0 -6
  296. package/types/Events.d.ts +0 -78
  297. package/types/Extent.d.ts +0 -166
  298. package/types/Globe.d.ts +0 -108
  299. package/types/ImageCanvas.d.ts +0 -128
  300. package/types/Lock.d.ts +0 -12
  301. package/types/LonLat.d.ts +0 -127
  302. package/types/Object3d.d.ts +0 -35
  303. package/types/Popup.d.ts +0 -29
  304. package/types/QueueArray.d.ts +0 -19
  305. package/types/Rectangle.d.ts +0 -80
  306. package/types/Stack.d.ts +0 -19
  307. package/types/arial.d.ts +0 -49
  308. package/types/astro/astro.d.ts +0 -38
  309. package/types/astro/earth.d.ts +0 -7
  310. package/types/astro/jd.d.ts +0 -254
  311. package/types/bv/Box.d.ts +0 -30
  312. package/types/bv/Sphere.d.ts +0 -38
  313. package/types/bv/index.d.ts +0 -3
  314. package/types/camera/Camera.d.ts +0 -314
  315. package/types/camera/Frustum.d.ts +0 -133
  316. package/types/camera/PlanetCamera.d.ts +0 -219
  317. package/types/camera/index.d.ts +0 -3
  318. package/types/cons.d.ts +0 -40
  319. package/types/control/Atmosphere.d.ts +0 -15
  320. package/types/control/CompassButton.d.ts +0 -16
  321. package/types/control/Control.d.ts +0 -104
  322. package/types/control/DebugInfo.d.ts +0 -19
  323. package/types/control/DrawingSwitcher.d.ts +0 -13
  324. package/types/control/EarthCoordinates.d.ts +0 -44
  325. package/types/control/EarthNavigation.d.ts +0 -43
  326. package/types/control/GeoImageDragControl.d.ts +0 -14
  327. package/types/control/KeyboardNavigation.d.ts +0 -24
  328. package/types/control/LayerAnimation.d.ts +0 -73
  329. package/types/control/LayerSwitcher.d.ts +0 -64
  330. package/types/control/Lighting.d.ts +0 -41
  331. package/types/control/MouseNavigation.d.ts +0 -49
  332. package/types/control/MouseWheelZoomControl.d.ts +0 -46
  333. package/types/control/ScaleControl.d.ts +0 -23
  334. package/types/control/ShowFps.d.ts +0 -11
  335. package/types/control/SimpleNavigation.d.ts +0 -26
  336. package/types/control/SimpleSkyBackground.d.ts +0 -15
  337. package/types/control/Sun.d.ts +0 -53
  338. package/types/control/ToggleWireframe.d.ts +0 -12
  339. package/types/control/TouchNavigation.d.ts +0 -54
  340. package/types/control/ZoomControl.d.ts +0 -26
  341. package/types/control/drawing/DrawingControl.d.ts +0 -14
  342. package/types/control/drawing/LineStringDrawingScene.d.ts +0 -5
  343. package/types/control/drawing/PolygonDrawingScene.d.ts +0 -99
  344. package/types/control/heightRuler/HeightRuler.d.ts +0 -6
  345. package/types/control/heightRuler/HeightRulerScene.d.ts +0 -23
  346. package/types/control/index.d.ts +0 -27
  347. package/types/control/ruler/Ruler.d.ts +0 -13
  348. package/types/control/ruler/RulerScene.d.ts +0 -51
  349. package/types/control/selection/Selection.d.ts +0 -49
  350. package/types/control/selection/SelectionScene.d.ts +0 -32
  351. package/types/control/timeline/TimelineControl.d.ts +0 -10
  352. package/types/control/timeline/TimelineModel.d.ts +0 -33
  353. package/types/control/timeline/TimelineView.d.ts +0 -57
  354. package/types/control/timeline/timelineUtils.d.ts +0 -9
  355. package/types/ellipsoid/Ellipsoid.d.ts +0 -170
  356. package/types/ellipsoid/index.d.ts +0 -3
  357. package/types/ellipsoid/wgs84.d.ts +0 -6
  358. package/types/entity/BaseBillboard.d.ts +0 -215
  359. package/types/entity/Billboard.d.ts +0 -94
  360. package/types/entity/BillboardHandler.d.ts +0 -75
  361. package/types/entity/Entity.d.ts +0 -340
  362. package/types/entity/EntityCollection.d.ts +0 -303
  363. package/types/entity/GeoObject.d.ts +0 -117
  364. package/types/entity/GeoObjectHandler.d.ts +0 -41
  365. package/types/entity/Geometry.d.ts +0 -79
  366. package/types/entity/GeometryHandler.d.ts +0 -76
  367. package/types/entity/Label.d.ts +0 -190
  368. package/types/entity/LabelHandler.d.ts +0 -31
  369. package/types/entity/LabelWorker.d.ts +0 -9
  370. package/types/entity/PointCloud.d.ts +0 -174
  371. package/types/entity/PointCloudHandler.d.ts +0 -38
  372. package/types/entity/Polyline.d.ts +0 -307
  373. package/types/entity/PolylineHandler.d.ts +0 -18
  374. package/types/entity/Ray.d.ts +0 -122
  375. package/types/entity/RayHandler.d.ts +0 -63
  376. package/types/entity/Strip.d.ts +0 -119
  377. package/types/entity/StripHandler.d.ts +0 -38
  378. package/types/entity/index.d.ts +0 -8
  379. package/types/index.d.ts +0 -53
  380. package/types/input/KeyboardHandler.d.ts +0 -10
  381. package/types/input/MouseHandler.d.ts +0 -5
  382. package/types/input/TouchHandler.d.ts +0 -5
  383. package/types/input/input.d.ts +0 -42
  384. package/types/layer/BaseGeoImage.d.ts +0 -116
  385. package/types/layer/CanvasTiles.d.ts +0 -73
  386. package/types/layer/GeoImage.d.ts +0 -51
  387. package/types/layer/GeoTexture2d.d.ts +0 -7
  388. package/types/layer/GeoVideo.d.ts +0 -47
  389. package/types/layer/KML.d.ts +0 -93
  390. package/types/layer/Layer.d.ts +0 -320
  391. package/types/layer/Material.d.ts +0 -45
  392. package/types/layer/Vector.d.ts +0 -211
  393. package/types/layer/WMS.d.ts +0 -66
  394. package/types/layer/XYZ.d.ts +0 -122
  395. package/types/layer/index.d.ts +0 -10
  396. package/types/light/LightSource.d.ts +0 -178
  397. package/types/math/Line2.d.ts +0 -11
  398. package/types/math/Line3.d.ts +0 -10
  399. package/types/math/Mat3.d.ts +0 -65
  400. package/types/math/Mat4.d.ts +0 -176
  401. package/types/math/Plane.d.ts +0 -18
  402. package/types/math/Quat.d.ts +0 -379
  403. package/types/math/Ray.d.ts +0 -82
  404. package/types/math/Vec2.d.ts +0 -309
  405. package/types/math/Vec3.d.ts +0 -472
  406. package/types/math/Vec4.d.ts +0 -161
  407. package/types/math/coder.d.ts +0 -43
  408. package/types/math/index.d.ts +0 -11
  409. package/types/math.d.ts +0 -268
  410. package/types/mercator.d.ts +0 -92
  411. package/types/proj/EPSG3857.d.ts +0 -6
  412. package/types/proj/EPSG4326.d.ts +0 -6
  413. package/types/proj/Proj.d.ts +0 -42
  414. package/types/quadTree/EPSG4326QuadTreeStrategy.d.ts +0 -3
  415. package/types/quadTree/EarthQuadTreeStrategy.d.ts +0 -3
  416. package/types/quadTree/EntityCollectionNode.d.ts +0 -41
  417. package/types/quadTree/MarsQuadTreeStrategy.d.ts +0 -3
  418. package/types/quadTree/Node.d.ts +0 -58
  419. package/types/quadTree/QuadTreeStrategy.d.ts +0 -21
  420. package/types/quadTree/Wgs84QuadTreeStrategy.d.ts +0 -3
  421. package/types/quadTree/index.d.ts +0 -12
  422. package/types/quadTree/quadTree.d.ts +0 -40
  423. package/types/renderer/Renderer.d.ts +0 -291
  424. package/types/renderer/RendererEvents.d.ts +0 -255
  425. package/types/res/images.d.ts +0 -2
  426. package/types/scene/Axes.d.ts +0 -10
  427. package/types/scene/BaseNode.d.ts +0 -60
  428. package/types/scene/Planet.d.ts +0 -595
  429. package/types/scene/RenderNode.d.ts +0 -152
  430. package/types/scene/SkyBox.d.ts +0 -9
  431. package/types/scene/index.d.ts +0 -4
  432. package/types/segment/Segment.d.ts +0 -273
  433. package/types/segment/SegmentLonLat.d.ts +0 -22
  434. package/types/segment/SegmentLonLatWgs84.d.ts +0 -4
  435. package/types/segment/Slice.d.ts +0 -10
  436. package/types/segment/segmentHelper.d.ts +0 -13
  437. package/types/shaders/atmos.d.ts +0 -4
  438. package/types/shaders/billboard.d.ts +0 -3
  439. package/types/shaders/depth.d.ts +0 -2
  440. package/types/shaders/drawnode.d.ts +0 -8
  441. package/types/shaders/geoObject.d.ts +0 -3
  442. package/types/shaders/label.d.ts +0 -4
  443. package/types/shaders/pickingMask.d.ts +0 -2
  444. package/types/shaders/pointCloud.d.ts +0 -2
  445. package/types/shaders/polyline.d.ts +0 -3
  446. package/types/shaders/ray.d.ts +0 -2
  447. package/types/shaders/screenFrame.d.ts +0 -2
  448. package/types/shaders/skybox.d.ts +0 -2
  449. package/types/shaders/toneMapping.d.ts +0 -2
  450. package/types/shaders/utils.d.ts +0 -1
  451. package/types/terrain/BilTerrain.d.ts +0 -14
  452. package/types/terrain/EmptyTerrain.d.ts +0 -87
  453. package/types/terrain/Geoid.d.ts +0 -17
  454. package/types/terrain/GlobusTerrain.d.ts +0 -122
  455. package/types/terrain/MapboxTerrain.d.ts +0 -14
  456. package/types/terrain/index.d.ts +0 -5
  457. package/types/ui/Button.d.ts +0 -21
  458. package/types/ui/ButtonGroup.d.ts +0 -12
  459. package/types/ui/Dialog.d.ts +0 -41
  460. package/types/ui/Slider.d.ts +0 -33
  461. package/types/ui/ToggleButton.d.ts +0 -10
  462. package/types/ui/UIhelpers.d.ts +0 -13
  463. package/types/ui/View.d.ts +0 -33
  464. package/types/ui/icons.d.ts +0 -1
  465. package/types/utils/BaseWorker.d.ts +0 -14
  466. package/types/utils/FontAtlas.d.ts +0 -16
  467. package/types/utils/GeoImageCreator.d.ts +0 -30
  468. package/types/utils/ImagesCacheManager.d.ts +0 -10
  469. package/types/utils/Loader.d.ts +0 -31
  470. package/types/utils/NormalMapCreator.d.ts +0 -39
  471. package/types/utils/PlainSegmentWorker.d.ts +0 -8
  472. package/types/utils/TerrainWorker.d.ts +0 -7
  473. package/types/utils/TextureAtlas.d.ts +0 -113
  474. package/types/utils/VectorTileCreator.d.ts +0 -14
  475. package/types/utils/colorTable.d.ts +0 -143
  476. package/types/utils/earcut.d.ts +0 -6
  477. package/types/utils/functionComposition.d.ts +0 -5
  478. package/types/utils/objParser.d.ts +0 -8
  479. package/types/utils/shared.d.ts +0 -241
  480. package/types/utils/units.d.ts +0 -20
  481. package/types/webgl/Framebuffer.d.ts +0 -134
  482. package/types/webgl/Handler.d.ts +0 -403
  483. package/types/webgl/Multisample.d.ts +0 -91
  484. package/types/webgl/Program.d.ts +0 -163
  485. package/types/webgl/ProgramController.d.ts +0 -89
  486. package/types/webgl/callbacks.d.ts +0 -1
  487. package/types/webgl/index.d.ts +0 -6
  488. package/types/webgl/types.d.ts +0 -2
  489. /package/{src/og → dist/@openglobus/res/fonts}/arial.js +0 -0
  490. /package/src/{og/ui/icons.js → ui/icons.ts} +0 -0
@@ -1,1168 +0,0 @@
1
- "use strict";
2
-
3
- import { Clock } from "../Clock.js";
4
- import { cons } from "../cons.js";
5
- import { Events } from "../Events.js";
6
- import { ImageCanvas } from "../ImageCanvas.js";
7
- import { Vec2 } from "../math/Vec2.js";
8
- import { Stack } from "../Stack.js";
9
- import { getUrlParam, isEmpty } from "../utils/shared.js";
10
- import { ProgramController } from "./ProgramController.js";
11
-
12
- const vendorPrefixes = ["", "WEBKIT_", "MOZ_"];
13
-
14
- const CONTEXT_TYPE = ["webgl2", "webgl"];
15
-
16
- // Maximal mipmap levels
17
- const MAX_LEVELS = 2;
18
-
19
- /**
20
- * A WebGL handler for accessing low-level WebGL capabilities.
21
- * @class
22
- * @param {string | HTMLCanvasElement} canvasTarget - Canvas element target.
23
- * or undefined creates hidden canvas and handler bacomes hidden.
24
- * @param {Object} [params] - Handler options:
25
- * @param {number} [params.anisotropy] - Anisotropy filter degree. 8 is default.
26
- * @param {number} [params.width] - Hidden handler width. 256 is default.
27
- * @param {number} [params.height] - Hidden handler height. 256 is default.
28
- * @param {Array.<string>} [params.extensions] - Additional WebGL extension list. Available by default: EXT_texture_filter_anisotropic.
29
- */
30
- class Handler {
31
- constructor(canvasTarget, params = {}) {
32
-
33
- this.events = new Events(["visibilitychange", "resize"]);
34
- /**
35
- * Application default timer.
36
- * @public
37
- * @type {Clock}
38
- */
39
- this.defaultClock = new Clock();
40
-
41
- /**
42
- * Custom timers.
43
- * @protected
44
- * @type{Clock[]}
45
- */
46
- this._clocks = [];
47
-
48
- /**
49
- * Draw frame time in milliseconds.
50
- * @public
51
- * @readonly
52
- * @type {number}
53
- */
54
- this.deltaTime = 0;
55
-
56
- /**
57
- * WebGL rendering canvas element.
58
- * @public
59
- * @type {Object}
60
- */
61
- this.canvas = null;
62
-
63
- /**
64
- * WebGL context.
65
- * @public
66
- * @type {Object}
67
- */
68
- this.gl = null;
69
-
70
- /**
71
- * Shader program controller list.
72
- * @public
73
- * @type {Object.<og.webgl.ProgramController>}
74
- */
75
- this.programs = {};
76
-
77
- /**
78
- * Current active shader program controller.
79
- * @public
80
- * @type {ProgramController}
81
- */
82
- this.activeProgram = null;
83
-
84
- /**
85
- * Handler parameters.
86
- * @private
87
- * @type {Object}
88
- */
89
- this._params = params || {};
90
- this._params.anisotropy = this._params.anisotropy || 4;
91
- this._params.width = this._params.width || 256;
92
- this._params.height = this._params.height || 256;
93
- this._params.pixelRatio = getUrlParam('og_dpi') || this._params.pixelRatio || 1.0;
94
- this._params.context = this._params.context || {};
95
- this._params.extensions = this._params.extensions || [];
96
- this._oneByHeight = 1.0 / (this._params.height * this._params.pixelRatio);
97
-
98
- this._params.context.stencil = true;
99
-
100
- /**
101
- * Current WebGL extensions. Becomes here after context initialization.
102
- * @public
103
- * @type {Object}
104
- */
105
- this.extensions = {};
106
-
107
- /**
108
- * HTML Canvas target.
109
- * @private
110
- * @type {Object}
111
- */
112
- this._canvasTarget = canvasTarget;
113
-
114
- this._lastAnimationFrameTime = 0;
115
-
116
- this._initialized = false;
117
-
118
- /**
119
- * Animation frame function assigned from outside(Ex. from Renderer).
120
- * @private
121
- * @type {frameCallback}
122
- */
123
- this._frameCallback = function () {
124
- };
125
-
126
- this.transparentTexture = null;
127
-
128
- this.defaultTexture = null;
129
-
130
- this.framebufferStack = new Stack();
131
-
132
- this.createTexture = {
133
- "NEAREST": null,
134
- "LINEAR": null,
135
- "MIPMAP": null,
136
- "ANISOTROPIC": null
137
- };
138
-
139
- this.createTextureDefault = null;
140
-
141
- this.ONCANVASRESIZE = null;
142
-
143
- this._createCanvas();
144
-
145
- if (params.autoActivate || isEmpty(params.autoActivate)) {
146
- this.initialize();
147
- }
148
- }
149
-
150
- isInitialized() {
151
- return this._initialized;
152
- }
153
-
154
- _createCanvas() {
155
- if (this._canvasTarget) {
156
- if (this._canvasTarget instanceof HTMLElement) {
157
- this.canvas = this._canvasTarget;
158
- } else {
159
- this.canvas = document.getElementById(this._canvasTarget) || document.querySelector(this._canvasTarget);
160
- }
161
- } else {
162
- this.canvas = document.createElement("canvas");
163
- this.canvas.width = this._params.width;
164
- this.canvas.height = this._params.height;
165
- }
166
- }
167
-
168
- /**
169
- * The return value is null if the extension is not supported, or an extension object otherwise.
170
- * @param {Object} gl - WebGl context pointer.
171
- * @param {String} name - Extension name.
172
- * @returns {Object} -
173
- */
174
- static getExtension(gl, name) {
175
- let i, ext;
176
- for (i in vendorPrefixes) {
177
- ext = gl.getExtension(vendorPrefixes[i] + name);
178
- if (ext) {
179
- return ext;
180
- }
181
- }
182
- return null;
183
- }
184
-
185
- /**
186
- * Returns a drawing context on the canvas, or null if the context identifier is not supported.
187
- * @param {Object} canvas - HTML canvas object.
188
- * @param {Object} [contextAttributes] - See canvas.getContext contextAttributes.
189
- * @returns {Object} -
190
- */
191
- static getContext(canvas, contextAttributes) {
192
- let ctx = null;
193
-
194
- try {
195
- let urlParams = new URLSearchParams(location.search);
196
- let ver = urlParams.get('og_ver');
197
- if (ver) {
198
- ctx = canvas.getContext(ver, contextAttributes);
199
- ctx.type = ver;
200
- } else {
201
- for (let i = 0; i < CONTEXT_TYPE.length; i++) {
202
- ctx = canvas.getContext(CONTEXT_TYPE[i], contextAttributes);
203
- if (ctx) {
204
- ctx.type = CONTEXT_TYPE[i];
205
- break;
206
- }
207
- }
208
- }
209
- } catch (ex) {
210
- cons.logErr("exception during the GL context initialization");
211
- }
212
-
213
- if (!ctx) {
214
- cons.logErr("could not initialise WebGL");
215
- }
216
-
217
- return ctx;
218
- }
219
-
220
- /**
221
- * Sets animation frame function.
222
- * @public
223
- * @param {callback} callback - Frame callback.
224
- */
225
- setFrameCallback(callback) {
226
- callback && (this._frameCallback = callback);
227
- }
228
-
229
- /**
230
- * Creates empty texture.
231
- * @public
232
- * @param {Number} [width=1] - Specifies the width of the texture image..
233
- * @param {Number} [height=1] - Specifies the width of the texture image..
234
- * @param {String} [filter="NEAREST"] - Specifies GL_TEXTURE_MIN(MAX)_FILTER texture value.
235
- * @param {String} [internalFormat="RGBA"] - Specifies the color components in the texture.
236
- * @param {String} [format="RGBA"] - Specifies the format of the texel data.
237
- * @param {String} [type="UNSIGNED_BYTE"] - Specifies the data type of the texel data.
238
- * @param {Number} [levels=0] - Specifies the level-of-detail number. Level 0 is the base image level. Level n is the nth mipmap reduction image.
239
- * @returns {Object} - WebGL texture object.
240
- */
241
- createEmptyTexture2DExt(
242
- width = 1,
243
- height = 1,
244
- filter = "NEAREST",
245
- internalFormat = "RGBA",
246
- format = "RGBA",
247
- type = "UNSIGNED_BYTE",
248
- level = 0
249
- ) {
250
- let gl = this.gl;
251
- let texture = gl.createTexture();
252
- gl.bindTexture(gl.TEXTURE_2D, texture);
253
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
254
- gl.texImage2D(gl.TEXTURE_2D, level, gl[internalFormat.toUpperCase()], width, height, 0,
255
- gl[format.toUpperCase()], gl[type.toUpperCase()], null
256
- );
257
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl[filter.toUpperCase()]);
258
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl[filter.toUpperCase()]);
259
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
260
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
261
- gl.bindTexture(gl.TEXTURE_2D, null);
262
- return texture;
263
- }
264
-
265
- /**
266
- * Creates Empty NEAREST filtered texture.
267
- * @public
268
- * @param {number} width - Empty texture width.
269
- * @param {number} height - Empty texture height.
270
- * @returns {Object} - WebGL texture object.
271
- */
272
- createEmptyTexture_n(width, height, internalFormat) {
273
- let gl = this.gl;
274
- let texture = gl.createTexture();
275
- gl.bindTexture(gl.TEXTURE_2D, texture);
276
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
277
- gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat || gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
278
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
279
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
280
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
281
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
282
- gl.bindTexture(gl.TEXTURE_2D, null);
283
- return texture;
284
- }
285
-
286
- /**
287
- * Creates empty LINEAR filtered texture.
288
- * @public
289
- * @param {number} width - Empty texture width.
290
- * @param {number} height - Empty texture height.
291
- * @returns {Object} - WebGL texture object.
292
- */
293
- createEmptyTexture_l(width, height, internalFormat) {
294
- let gl = this.gl;
295
- let texture = gl.createTexture();
296
- gl.bindTexture(gl.TEXTURE_2D, texture);
297
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
298
- gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat || gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
299
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
300
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
301
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
302
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
303
- gl.bindTexture(gl.TEXTURE_2D, null);
304
- return texture;
305
- }
306
-
307
- /**
308
- * Creates NEAREST filter texture.
309
- * @public
310
- * @param {HTMLCanvasElement | Image} image - Image or Canvas object.
311
- * @returns {Object} - WebGL texture object.
312
- */
313
- createTexture_n_webgl1(image, internalFormat, texture) {
314
- let gl = this.gl;
315
- texture = texture || gl.createTexture();
316
- gl.bindTexture(gl.TEXTURE_2D, texture);
317
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
318
- gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat || gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
319
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
320
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
321
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
322
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
323
- gl.bindTexture(gl.TEXTURE_2D, null);
324
- return texture;
325
- }
326
-
327
- /**
328
- * Creates LINEAR filter texture.
329
- * @public
330
- * @param {Object} image - Image or Canvas object.
331
- * @returns {Object} - WebGL texture object.
332
- */
333
- createTexture_l_webgl1(image, internalFormat, texture) {
334
- let gl = this.gl;
335
- texture = texture || gl.createTexture();
336
- gl.bindTexture(gl.TEXTURE_2D, texture);
337
- gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat || gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
338
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
339
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
340
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
341
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
342
- gl.bindTexture(gl.TEXTURE_2D, null);
343
- return texture;
344
- }
345
-
346
- /**
347
- * Creates MIPMAP filter texture.
348
- * @public
349
- * @param {Object} image - Image or Canvas object.
350
- * @returns {Object} - WebGL texture object.
351
- */
352
- createTexture_mm_webgl1(image, internalFormat, texture) {
353
- let gl = this.gl;
354
- texture = texture || gl.createTexture();
355
- gl.bindTexture(gl.TEXTURE_2D, texture);
356
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
357
- gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat || gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
358
- gl.generateMipmap(gl.TEXTURE_2D);
359
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
360
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
361
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
362
- gl.bindTexture(gl.TEXTURE_2D, null);
363
- return texture;
364
- }
365
-
366
- /**
367
- * Creates ANISOTROPY filter texture.
368
- * @public
369
- * @param {Object} image - Image or Canvas object.
370
- * @returns {Object} - WebGL texture object.
371
- */
372
- createTexture_a_webgl1(image, internalFormat, texture) {
373
- let gl = this.gl;
374
- texture = texture || gl.createTexture();
375
- gl.bindTexture(gl.TEXTURE_2D, texture);
376
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
377
- gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat || gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
378
- gl.generateMipmap(gl.TEXTURE_2D);
379
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
380
- gl.texParameterf(gl.TEXTURE_2D, this.extensions.EXT_texture_filter_anisotropic.TEXTURE_MAX_ANISOTROPY_EXT, this._params.anisotropy);
381
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
382
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
383
- gl.bindTexture(gl.TEXTURE_2D, null);
384
- return texture;
385
- }
386
-
387
- /**
388
- * Creates NEAREST filter texture.
389
- * @public
390
- * @param {Object} image - Image or Canvas object.
391
- * @returns {Object} - WebGL texture object.
392
- */
393
- createTexture_n_webgl2(image, internalFormat, texture) {
394
- let gl = this.gl;
395
- texture = texture || gl.createTexture();
396
- gl.bindTexture(gl.TEXTURE_2D, texture);
397
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
398
- //gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
399
- gl.texStorage2D(gl.TEXTURE_2D, 1, internalFormat || gl.RGBA8, image.width, image.height);
400
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, gl.RGBA, gl.UNSIGNED_BYTE, image);
401
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
402
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
403
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
404
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
405
- gl.bindTexture(gl.TEXTURE_2D, null);
406
- return texture;
407
- }
408
-
409
- /**
410
- * Creates LINEAR filter texture.
411
- * @public
412
- * @param {Object} image - Image or Canvas object.
413
- * @returns {Object} - WebGL texture object.
414
- */
415
- createTexture_l_webgl2(image, internalFormat, texture) {
416
- let gl = this.gl;
417
- texture = texture || gl.createTexture();
418
- gl.bindTexture(gl.TEXTURE_2D, texture);
419
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
420
- //gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
421
- gl.texStorage2D(gl.TEXTURE_2D, 1, internalFormat || gl.RGBA8, image.width, image.height);
422
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, gl.RGBA, gl.UNSIGNED_BYTE, image);
423
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
424
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
425
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
426
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
427
- gl.bindTexture(gl.TEXTURE_2D, null);
428
- return texture;
429
- }
430
-
431
- /**
432
- * Creates MIPMAP filter texture.
433
- * @public
434
- * @param {Object} image - Image or Canvas object.
435
- * @returns {Object} - WebGL texture object.
436
- */
437
- createTexture_mm_webgl2(image, internalFormat, texture) {
438
- let gl = this.gl;
439
- texture = texture || gl.createTexture();
440
- gl.bindTexture(gl.TEXTURE_2D, texture);
441
- //gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
442
- gl.texStorage2D(gl.TEXTURE_2D, MAX_LEVELS, internalFormat || gl.RGBA8, image.width, image.height);
443
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, gl.RGBA, gl.UNSIGNED_BYTE, image);
444
- gl.generateMipmap(gl.TEXTURE_2D);
445
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
446
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
447
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
448
- gl.bindTexture(gl.TEXTURE_2D, null);
449
- return texture;
450
- }
451
-
452
- /**
453
- * Creates ANISOTROPY filter texture.
454
- * @public
455
- * @param {Object} image - Image or Canvas object.
456
- * @returns {Object} - WebGL texture object.
457
- */
458
- createTexture_a_webgl2(image, internalFormat, texture) {
459
- let gl = this.gl;
460
- texture = texture || gl.createTexture();
461
- gl.bindTexture(gl.TEXTURE_2D, texture);
462
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
463
- //gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);
464
- gl.texStorage2D(gl.TEXTURE_2D, MAX_LEVELS, internalFormat || gl.RGBA8, image.width, image.height);
465
- gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, gl.RGBA, gl.UNSIGNED_BYTE, image);
466
- gl.generateMipmap(gl.TEXTURE_2D);
467
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
468
- gl.texParameterf(gl.TEXTURE_2D, this.extensions.EXT_texture_filter_anisotropic.TEXTURE_MAX_ANISOTROPY_EXT, this._params.anisotropy);
469
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
470
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
471
- gl.bindTexture(gl.TEXTURE_2D, null);
472
- return texture;
473
- }
474
-
475
- /**
476
- * Creates cube texture.
477
- * @public
478
- * @param {Object.<string>} params - Face image urls:
479
- * @param {string} params.px - Positive X or right image url.
480
- * @param {string} params.nx - Negative X or left image url.
481
- * @param {string} params.py - Positive Y or up image url.
482
- * @param {string} params.ny - Negative Y or bottom image url.
483
- * @param {string} params.pz - Positive Z or face image url.
484
- * @param {string} params.nz - Negative Z or back image url.
485
- * @returns {Object} - WebGL texture object.
486
- */
487
- loadCubeMapTexture(params) {
488
- let gl = this.gl;
489
- let texture = gl.createTexture();
490
- gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
491
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
492
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
493
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
494
- gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
495
-
496
- let faces = [
497
- [params.px, gl.TEXTURE_CUBE_MAP_POSITIVE_X],
498
- [params.nx, gl.TEXTURE_CUBE_MAP_NEGATIVE_X],
499
- [params.py, gl.TEXTURE_CUBE_MAP_POSITIVE_Y],
500
- [params.ny, gl.TEXTURE_CUBE_MAP_NEGATIVE_Y],
501
- [params.pz, gl.TEXTURE_CUBE_MAP_POSITIVE_Z],
502
- [params.nz, gl.TEXTURE_CUBE_MAP_NEGATIVE_Z]
503
- ];
504
-
505
- let imageCanvas = new ImageCanvas();
506
- imageCanvas.fillEmpty();
507
- let emptyImage = imageCanvas.getImage();
508
-
509
- for (let i = 0; i < faces.length; i++) {
510
- let face = faces[i][1];
511
- gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
512
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
513
- gl.texImage2D(face, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, emptyImage);
514
- }
515
-
516
- for (let i = 0; i < faces.length; i++) {
517
- let face = faces[i][1];
518
- let image = new Image();
519
- image.crossOrigin = "";
520
- image.onload = (function (texture, face, image) {
521
- return function () {
522
- gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
523
- //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
524
- gl.texImage2D(face, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
525
- };
526
- })(texture, face, image);
527
- image.src = faces[i][0];
528
- }
529
- return texture;
530
- }
531
-
532
- /**
533
- * Adds shader program to the handler.
534
- * @public
535
- * @param {Program} program - Shader program.
536
- * @param {boolean} [notActivate] - If it's true program will not compile.
537
- * @return {Program} -
538
- */
539
- addProgram(program, notActivate) {
540
- if (!this.programs[program.name]) {
541
- let sc = new ProgramController(this, program);
542
- this.programs[program.name] = sc;
543
- this._initProgramController(sc);
544
- if (notActivate) {
545
- sc._activated = false;
546
- }
547
- } else {
548
- console.log(
549
- "og.webgl.Handler:284 - shader program: '" + program.name + "' is allready exists."
550
- );
551
- }
552
- return program;
553
- }
554
-
555
- /**
556
- * Removes shader program from handler.
557
- * @public
558
- * @param {String} name - Shader program name.
559
- */
560
- removeProgram(name) {
561
- this.programs[name] && this.programs[name].remove();
562
- }
563
-
564
- /**
565
- * Adds shader programs to the handler.
566
- * @public
567
- * @param {Array.<Program>} programsArr - Shader program array.
568
- */
569
- addPrograms(programsArr) {
570
- for (let i = 0; i < programsArr.length; i++) {
571
- this.addProgram(programsArr[i]);
572
- }
573
- }
574
-
575
- /**
576
- * Used in addProgram
577
- * @private
578
- * @param {ProgramController} sc - Program controller
579
- */
580
- _initProgramController(sc) {
581
- if (this._initialized) {
582
- sc.initialize();
583
- if (!this.activeProgram) {
584
- this.activeProgram = sc;
585
- sc.activate();
586
- } else {
587
- sc.deactivate();
588
- this.activeProgram._program.enableAttribArrays();
589
- this.activeProgram._program.use();
590
- }
591
- }
592
- }
593
-
594
- /**
595
- * Used in init function.
596
- * @private
597
- */
598
- _initPrograms() {
599
- for (let p in this.programs) {
600
- this._initProgramController(this.programs[p]);
601
- }
602
- }
603
-
604
- /**
605
- * Initialize additional WebGL extensions.
606
- * @public
607
- * @param {string} extensionStr - Extension name.
608
- * @param {boolean} showLog - Show logging.
609
- * @return {Object} -
610
- */
611
- initializeExtension(extensionStr, showLog) {
612
- if (!(this.extensions && this.extensions[extensionStr])) {
613
- let ext = Handler.getExtension(this.gl, extensionStr);
614
- if (ext) {
615
- this.extensions[extensionStr] = ext;
616
- } else if (showLog) {
617
- console.log(
618
- "og.webgl.Handler: extension '" + extensionStr + "' doesn't initialize."
619
- );
620
- }
621
- }
622
- return this.extensions && this.extensions[extensionStr];
623
- }
624
-
625
- /**
626
- * Main function that initialize handler.
627
- * @public
628
- */
629
- initialize() {
630
-
631
- if (this._initialized) return;
632
-
633
- this.gl = Handler.getContext(this.canvas, this._params.context);
634
-
635
- if (this.gl) {
636
- this._initialized = true;
637
-
638
- /** Sets default extensions */
639
- this._params.extensions.push("EXT_texture_filter_anisotropic");
640
-
641
- if (this.gl.type === "webgl") {
642
- this._params.extensions.push("OES_standard_derivatives");
643
- this._params.extensions.push("OES_element_index_uint");
644
- this._params.extensions.push("WEBGL_depth_texture");
645
- this._params.extensions.push("ANGLE_instanced_arrays");
646
- //this._params.extensions.push("WEBGL_draw_buffers");
647
- //this._params.extensions.push("EXT_frag_depth");
648
- } else {
649
- this._params.extensions.push("EXT_color_buffer_float");
650
- this._params.extensions.push("OES_texture_float_linear");
651
- //this._params.extensions.push("WEBGL_draw_buffers");
652
- }
653
-
654
- let i = this._params.extensions.length;
655
- while (i--) {
656
- this.initializeExtension(this._params.extensions[i], true);
657
- }
658
-
659
- if (this.gl.type === "webgl") {
660
- this.createTexture_n = this.createTexture_n_webgl1.bind(this);
661
- this.createTexture_l = this.createTexture_l_webgl1.bind(this);
662
- this.createTexture_mm = this.createTexture_mm_webgl1.bind(this);
663
- this.createTexture_a = this.createTexture_a_webgl1.bind(this);
664
- } else {
665
- this.createTexture_n = this.createTexture_n_webgl2.bind(this);
666
- this.createTexture_l = this.createTexture_l_webgl2.bind(this);
667
- this.createTexture_mm = this.createTexture_mm_webgl2.bind(this);
668
- this.createTexture_a = this.createTexture_a_webgl2.bind(this);
669
- }
670
-
671
- this.createTexture["NEAREST"] = this.createTexture_n;
672
- this.createTexture["LINEAR"] = this.createTexture_l;
673
- this.createTexture["MIPMAP"] = this.createTexture_mm;
674
- this.createTexture["ANISOTROPIC"] = this.createTexture_a;
675
-
676
- if (!this.extensions.EXT_texture_filter_anisotropic) {
677
- this.createTextureDefault = this.createTexture_mm;
678
- } else {
679
- this.createTextureDefault = this.createTexture_a;
680
- }
681
-
682
- /** Initilalize shaders and rendering parameters*/
683
- this._initPrograms();
684
- this._setDefaults();
685
-
686
- this.intersectionObserver = new IntersectionObserver((entries) => {
687
- this._toggleVisibilityChange(entries[0].isIntersecting === true);
688
- }, { threshold: 0 });
689
- this.intersectionObserver.observe(this.canvas);
690
-
691
- this.resizeObserver = new ResizeObserver(entries => {
692
- this._toggleVisibilityChange(entries[0].contentRect.width !== 0 && entries[0].contentRect.height !== 0);
693
- });
694
- this.resizeObserver.observe(this.canvas);
695
-
696
- document.addEventListener("visibilitychange", () => {
697
- this._toggleVisibilityChange(document.visibilityState === 'visible');
698
- });
699
- }
700
- }
701
-
702
- _toggleVisibilityChange(visibility) {
703
- if (visibility) {
704
- this.start();
705
- this.ONCANVASRESIZE && this.ONCANVASRESIZE();
706
- this.events.dispatch(this.events.visibilitychange, true);
707
- } else {
708
- this.events.dispatch(this.events.visibilitychange, false);
709
- this.stop();
710
- }
711
- }
712
-
713
- /**
714
- * Sets default gl render parameters. Used in init function.
715
- * @private
716
- */
717
- _setDefaults() {
718
- let gl = this.gl;
719
- gl.depthFunc(gl.LESS);
720
- gl.enable(gl.DEPTH_TEST);
721
- this.setSize(
722
- this.canvas.clientWidth || this._params.width,
723
- this.canvas.clientHeight || this._params.height
724
- );
725
- gl.frontFace(gl.CCW);
726
- gl.cullFace(gl.BACK);
727
- gl.enable(gl.CULL_FACE);
728
- gl.disable(gl.BLEND);
729
- this.createDefaultTexture({ color: "rgba(0,0,0,0.0)" }, (t) => {
730
- this.transparentTexture = t;
731
- });
732
- this.createDefaultTexture({ color: "rgba(255, 255, 255, 1.0)" }, (t) => {
733
- this.defaultTexture = t;
734
- });
735
- }
736
-
737
- /**
738
- * Creates STREAM_DRAW ARRAY buffer.
739
- * @public
740
- * @param {Array.<number>} array - Input array.
741
- * @param {number} itemSize - Array item size.
742
- * @param {number} numItems - Items quantity.
743
- * @param {number} [usage=STATIC_DRAW] - Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
744
- * @return {Object} -
745
- */
746
- createStreamArrayBuffer(itemSize, numItems, usage, bites = 4) {
747
- let buffer = this.gl.createBuffer();
748
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
749
- this.gl.bufferData(
750
- this.gl.ARRAY_BUFFER,
751
- numItems * itemSize * bites,
752
- usage || this.gl.STREAM_DRAW
753
- );
754
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
755
- buffer.itemSize = itemSize;
756
- buffer.numItems = numItems;
757
- return buffer;
758
- }
759
-
760
- /**
761
- * Load stream ARRAY buffer.
762
- * @public
763
- * @param {Array.<number>} array - Input array.
764
- * @param {number} itemSize - Array item size.
765
- * @param {number} numItems - Items quantity.
766
- * @param {number} [usage=STATIC_DRAW] - Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
767
- * @return {Object} -
768
- */
769
- setStreamArrayBuffer(buffer, array, offset = 0) {
770
- let gl = this.gl;
771
- gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
772
- gl.bufferSubData(this.gl.ARRAY_BUFFER, offset, array);
773
- gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
774
- return buffer;
775
- }
776
-
777
- /**
778
- * Creates ARRAY buffer.
779
- * @public
780
- * @param {Array.<number>} array - Input array.
781
- * @param {number} itemSize - Array item size.
782
- * @param {number} numItems - Items quantity.
783
- * @param {number} [usage=STATIC_DRAW] - Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
784
- * @return {Object} -
785
- */
786
- createArrayBuffer(array, itemSize, numItems, usage) {
787
- let buffer = this.gl.createBuffer();
788
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
789
- this.gl.bufferData(this.gl.ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
790
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
791
- buffer.itemSize = itemSize;
792
- buffer.numItems = numItems;
793
- return buffer;
794
- }
795
-
796
- /**
797
- * Creates ARRAY buffer specific length.
798
- * @public
799
- * @param {Array.<number>} array - Input array.
800
- * @param {number} itemSize - Array item size.
801
- * @param {number} numItems - Items quantity.
802
- * @param {number} [usage=STATIC_DRAW] - Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
803
- * @return {Object} -
804
- */
805
- createArrayBufferLength(size, usage) {
806
- let buffer = this.gl.createBuffer();
807
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
808
- this.gl.bufferData(this.gl.ARRAY_BUFFER, size, usage || this.gl.STATIC_DRAW);
809
- this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
810
- buffer.itemSize = 1;
811
- buffer.numItems = size;
812
- return buffer;
813
- }
814
-
815
- /**
816
- * Creates ELEMENT ARRAY buffer.
817
- * @public
818
- * @param {Array.<number>} array - Input array.
819
- * @param {number} itemSize - Array item size.
820
- * @param {number} numItems - Items quantity.
821
- * @param {number} [usage=STATIC_DRAW] - Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
822
- * @return {Object} -
823
- */
824
- createElementArrayBuffer(array, itemSize, numItems, usage) {
825
- let buffer = this.gl.createBuffer();
826
- this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
827
- this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
828
- this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null);
829
- buffer.itemSize = itemSize;
830
- buffer.numItems = numItems || array.length;
831
- return buffer;
832
- }
833
-
834
- /**
835
- * Sets handler canvas size.
836
- * @public
837
- * @param {number} w - Canvas width.
838
- * @param {number} h - Canvas height.
839
- */
840
- setSize(w, h) {
841
- this._params.width = w;
842
- this._params.height = h;
843
- this.canvas.width = w * this._params.pixelRatio;
844
- this.canvas.height = h * this._params.pixelRatio;
845
-
846
- this._oneByHeight = 1.0 / this.canvas.height;
847
-
848
- this.gl && this.gl.viewport(0, 0, w, h);
849
- this.ONCANVASRESIZE && this.ONCANVASRESIZE(this.canvas);
850
- this.events.dispatch(this.events.resize, this);
851
- }
852
-
853
- get pixelRatio() {
854
- return this._params.pixelRatio;
855
- }
856
-
857
- set pixelRatio(pr) {
858
- this._params.pixelRatio = pr;
859
- this.setSize(this._params.width, this._params.height);
860
- }
861
-
862
- /**
863
- * Returns context screen width.
864
- * @public
865
- * @returns {number} -
866
- */
867
- getWidth() {
868
- return this.canvas.width;
869
- }
870
-
871
- /**
872
- * Returns context screen height.
873
- * @public
874
- * @returns {number} -
875
- */
876
- getHeight() {
877
- return this.canvas.height;
878
- }
879
-
880
- /**
881
- * Returns canvas aspect ratio.
882
- * @public
883
- * @returns {number} -
884
- */
885
- getClientAspect() {
886
- return this.canvas.clientWidth / this.canvas.clientHeight;
887
- }
888
-
889
- /**
890
- * Returns screen center coordinates.
891
- * @public
892
- * @returns {number} -
893
- */
894
- getCenter() {
895
- let c = this.canvas;
896
- return new Vec2(Math.round(c.width * 0.5), Math.round(c.height * 0.5));
897
- }
898
-
899
- /**
900
- * Draw single frame.
901
- * @public
902
- * @param {number} now - Frame current time milliseconds.
903
- */
904
- drawFrame() {
905
- /** Calculating frame time */
906
- let now = window.performance.now();
907
- this.deltaTime = now - this._lastAnimationFrameTime;
908
- this._lastAnimationFrameTime = now;
909
-
910
- this.defaultClock._tick(this.deltaTime);
911
-
912
- for (let i = 0; i < this._clocks.length; i++) {
913
- this._clocks[i]._tick(this.deltaTime);
914
- }
915
-
916
- /** Canvas resize checking */
917
- let canvas = this.canvas;
918
-
919
- if (Math.floor(canvas.clientWidth * this._params.pixelRatio) !== canvas.width || Math.floor(canvas.clientHeight * this._params.pixelRatio) !== canvas.height) {
920
- if (canvas.clientWidth === 0 || canvas.clientHeight === 0) {
921
- this.stop();
922
- } else if (!document.hidden) {
923
- this.start();
924
- this.setSize(canvas.clientWidth, canvas.clientHeight);
925
- }
926
- }
927
-
928
- /** Draw frame */
929
- this._frameCallback();
930
- }
931
-
932
- /**
933
- * Clearing gl frame.
934
- * @public
935
- */
936
- clearFrame() {
937
- let gl = this.gl;
938
- this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
939
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
940
- }
941
-
942
- /**
943
- * Starts animation loop.
944
- * @public
945
- */
946
- start() {
947
- if (!this._requestAnimationFrameId && this._initialized) {
948
- this._animationFrameCallback();
949
- }
950
- }
951
-
952
- stop() {
953
- if (this._requestAnimationFrameId) {
954
- window.cancelAnimationFrame(this._requestAnimationFrameId);
955
- this._requestAnimationFrameId = null;
956
- }
957
- }
958
-
959
- isStopped() {
960
- return !this._requestAnimationFrameId;
961
- }
962
-
963
- /**
964
- * Check is gl context type equals webgl2
965
- * @public
966
- */
967
- isWebGl2() {
968
- return this.gl.type === "webgl2"
969
- }
970
-
971
- /**
972
- * Make animation.
973
- * @private
974
- */
975
- _animationFrameCallback() {
976
- this._requestAnimationFrameId = window.requestAnimationFrame(() => {
977
- this.drawFrame();
978
- this._requestAnimationFrameId && this._animationFrameCallback();
979
- });
980
- }
981
-
982
- /**
983
- * Creates default texture object
984
- * @public
985
- * @param {Object} [params] - Texture parameters:
986
- * @param {callback} [success] - Creation callback
987
- */
988
- createDefaultTexture(params, success) {
989
- let imgCnv;
990
- let texture;
991
- const is2 = this.isWebGl2();
992
-
993
- if (params && params.color) {
994
- imgCnv = new ImageCanvas(2, 2);
995
- imgCnv.fillColor(params.color);
996
- texture = this.createTexture_n(imgCnv._canvas);
997
- texture.default = true;
998
- success(texture);
999
- } else if (params && params.url) {
1000
- let img = new Image();
1001
- let that = this;
1002
- img.onload = function () {
1003
- texture = that.createTexture(this);
1004
- texture.default = true;
1005
- success(texture);
1006
- };
1007
- img.src = params.url;
1008
- } else {
1009
- imgCnv = new ImageCanvas(2, 2);
1010
- imgCnv.fillColor("#C5C5C5");
1011
- texture = this.createTexture_n(imgCnv._canvas);
1012
- texture.default = true;
1013
- success(texture);
1014
- }
1015
- }
1016
-
1017
- deleteTexture(texture) {
1018
- if (texture && !texture.default) {
1019
- this.gl.deleteTexture(texture);
1020
- }
1021
- }
1022
-
1023
- /**
1024
- * @public
1025
- */
1026
- destroy() {
1027
- let gl = this.gl;
1028
-
1029
- this.stop();
1030
-
1031
- //
1032
- // Dispose shaders
1033
- //
1034
- for (let p in this.programs) {
1035
- this.removeProgram(p);
1036
- }
1037
-
1038
- gl.deleteTexture(this.transparentTexture);
1039
- this.transparentTexture = null;
1040
-
1041
- gl.deleteTexture(this.defaultTexture);
1042
- this.defaultTexture = null;
1043
-
1044
- this.framebufferStack = null;
1045
- this.framebufferStack = new Stack();
1046
-
1047
- //
1048
- // Destroy canvas
1049
- //
1050
- if (this.canvas.parentNode) {
1051
- this.canvas.parentNode.removeChild(this.canvas);
1052
- }
1053
- this.canvas.width = 1;
1054
- this.canvas.height = 1;
1055
- this.canvas = null;
1056
-
1057
- //
1058
- // Clear attrib pointers
1059
- //
1060
- let numAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
1061
- let tmp = gl.createBuffer();
1062
- gl.bindBuffer(gl.ARRAY_BUFFER, tmp);
1063
- for (let ii = 0; ii < numAttribs; ++ii) {
1064
- gl.disableVertexAttribArray(ii);
1065
- gl.vertexAttribPointer(ii, 4, gl.FLOAT, false, 0, 0);
1066
- gl.vertexAttrib1f(ii, 0);
1067
- }
1068
- gl.deleteBuffer(tmp);
1069
-
1070
- //
1071
- // Clear all possible textures
1072
- //
1073
- let numTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);
1074
- for (let ii = 0; ii < numTextureUnits; ++ii) {
1075
- gl.activeTexture(gl.TEXTURE0 + ii);
1076
- gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);
1077
- gl.bindTexture(gl.TEXTURE_2D, null);
1078
- }
1079
-
1080
- //
1081
- // Hard reset
1082
- //
1083
- gl.activeTexture(gl.TEXTURE0);
1084
- gl.useProgram(null);
1085
- gl.bindBuffer(gl.ARRAY_BUFFER, null);
1086
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);
1087
- gl.bindFramebuffer(gl.FRAMEBUFFER, null);
1088
- gl.bindRenderbuffer(gl.RENDERBUFFER, null);
1089
- gl.disable(gl.BLEND);
1090
- gl.disable(gl.CULL_FACE);
1091
- gl.disable(gl.DEPTH_TEST);
1092
- gl.disable(gl.DITHER);
1093
- gl.disable(gl.SCISSOR_TEST);
1094
- gl.blendColor(0, 0, 0, 0);
1095
- gl.blendEquation(gl.FUNC_ADD);
1096
- gl.blendFunc(gl.ONE, gl.ZERO);
1097
- gl.clearColor(0, 0, 0, 0);
1098
- gl.clearDepth(1);
1099
- gl.clearStencil(-1);
1100
-
1101
- this.gl = null;
1102
-
1103
- this._initialized = false;
1104
- }
1105
-
1106
- addClock(clock) {
1107
- if (!clock.__handler) {
1108
- clock.__handler = this;
1109
- this._clocks.push(clock);
1110
- }
1111
- }
1112
-
1113
- addClocks(clockArr) {
1114
- for (let i = 0; i < clockArr.length; i++) {
1115
- this.addClock(clockArr[i]);
1116
- }
1117
- }
1118
-
1119
- removeClock(clock) {
1120
- if (clock.__handler) {
1121
- let c = this._clocks;
1122
- let i = c.length;
1123
- while (i--) {
1124
- if (c[i].equal(clock)) {
1125
- clock.__handler = null;
1126
- c.splice(i, 1);
1127
- break;
1128
- }
1129
- }
1130
- }
1131
- }
1132
-
1133
- // var loadTextureData = function(textureName, callback) {
1134
- // const xhr = new XMLHttpRequest();
1135
- // xhr.open('GET', textureName);
1136
- // xhr.responseType = 'arraybuffer';
1137
- // xhr.onload = (event) => {
1138
- // const data = new DataView(xhr.response);
1139
- // const array =
1140
- // new Float32Array(data.byteLength / Float32Array.BYTES_PER_ELEMENT);
1141
- // for (let i = 0; i < array.length; ++i) {
1142
- // array[i] = data.getFloat32(i * Float32Array.BYTES_PER_ELEMENT, true);
1143
- // }
1144
- // callback(array);
1145
- // };
1146
- // xhr.send();
1147
- // }
1148
-
1149
- // loadTextureData('transmittance.dat', (data) => {
1150
- //
1151
- // let gl = this.renderer.handler.gl;
1152
- //
1153
- // const texture = gl.createTexture();
1154
- // gl.activeTexture(gl.TEXTURE0);
1155
- // gl.bindTexture(gl.TEXTURE_2D, texture);
1156
- // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
1157
- // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
1158
- // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
1159
- // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
1160
- // gl.texImage2D(gl.TEXTURE_2D, 0, gl.getExtension('OES_texture_float_linear') ? gl.RGBA32F : gl.RGBA16F,
1161
- // TRANSMITTANCE_TEXTURE_WIDTH, TRANSMITTANCE_TEXTURE_HEIGHT, 0, gl.RGBA,
1162
- // gl.FLOAT, data);
1163
- //
1164
- // this.transmittanceTextureBrn = texture;
1165
- // });
1166
- }
1167
-
1168
- export { Handler };