@xeokit/xeokit-sdk 2.5.2-beta-10 → 2.5.2-beta-11

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 (450) hide show
  1. package/package.json +1 -1
  2. package/src/src/extras/ContextMenu/ContextMenu.js +907 -0
  3. package/src/src/extras/ContextMenu/index.js +1 -0
  4. package/src/src/extras/MarqueePicker/MarqueePicker.js +352 -0
  5. package/src/src/extras/MarqueePicker/MarqueePickerMouseControl.js +174 -0
  6. package/src/src/extras/MarqueePicker/index.js +2 -0
  7. package/src/src/extras/PointerLens/PointerLens.js +312 -0
  8. package/src/src/extras/PointerLens/index.js +1 -0
  9. package/src/src/extras/collision/ObjectsKdTree3.js +149 -0
  10. package/src/src/extras/collision/index.js +1 -0
  11. package/src/src/extras/index.js +4 -0
  12. package/src/src/index.js +3 -0
  13. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +731 -0
  14. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +84 -0
  15. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +435 -0
  16. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +406 -0
  17. package/src/src/plugins/AngleMeasurementsPlugin/index.js +3 -0
  18. package/src/src/plugins/AnnotationsPlugin/Annotation.js +368 -0
  19. package/src/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +583 -0
  20. package/src/src/plugins/AnnotationsPlugin/index.js +1 -0
  21. package/src/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +333 -0
  22. package/src/src/plugins/AxisGizmoPlugin/index.js +1 -0
  23. package/src/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +977 -0
  24. package/src/src/plugins/BCFViewpointsPlugin/index.js +1 -0
  25. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +29 -0
  26. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +751 -0
  27. package/src/src/plugins/CityJSONLoaderPlugin/index.js +1 -0
  28. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +963 -0
  29. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +84 -0
  30. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +399 -0
  31. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +505 -0
  32. package/src/src/plugins/DistanceMeasurementsPlugin/index.js +3 -0
  33. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +639 -0
  34. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +436 -0
  35. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +247 -0
  36. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +167 -0
  37. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +1 -0
  38. package/src/src/plugins/FastNavPlugin/FastNavPlugin.js +429 -0
  39. package/src/src/plugins/FastNavPlugin/index.js +1 -0
  40. package/src/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +140 -0
  41. package/src/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +421 -0
  42. package/src/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +669 -0
  43. package/src/src/plugins/GLTFLoaderPlugin/index.js +2 -0
  44. package/src/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +58 -0
  45. package/src/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +563 -0
  46. package/src/src/plugins/LASLoaderPlugin/index.js +1 -0
  47. package/src/src/plugins/LASLoaderPlugin/loadLASHeader.js +183 -0
  48. package/src/src/plugins/NavCubePlugin/CubeTextureCanvas.js +290 -0
  49. package/src/src/plugins/NavCubePlugin/NavCubePlugin.js +753 -0
  50. package/src/src/plugins/NavCubePlugin/index.js +1 -0
  51. package/src/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +145 -0
  52. package/src/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +777 -0
  53. package/src/src/plugins/OBJLoaderPlugin/index.js +1 -0
  54. package/src/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +33 -0
  55. package/src/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +274 -0
  56. package/src/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +313 -0
  57. package/src/src/plugins/STLLoaderPlugin/index.js +2 -0
  58. package/src/src/plugins/SectionPlanesPlugin/Control.js +1328 -0
  59. package/src/src/plugins/SectionPlanesPlugin/Overview.js +249 -0
  60. package/src/src/plugins/SectionPlanesPlugin/Plane.js +169 -0
  61. package/src/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +404 -0
  62. package/src/src/plugins/SectionPlanesPlugin/index.js +1 -0
  63. package/src/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +134 -0
  64. package/src/src/plugins/SkyboxesPlugin/index.js +1 -0
  65. package/src/src/plugins/StoreyViewsPlugin/Storey.js +84 -0
  66. package/src/src/plugins/StoreyViewsPlugin/StoreyMap.js +57 -0
  67. package/src/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +773 -0
  68. package/src/src/plugins/StoreyViewsPlugin/index.js +1 -0
  69. package/src/src/plugins/TreeViewPlugin/RenderService.js +169 -0
  70. package/src/src/plugins/TreeViewPlugin/TreeViewNode.js +101 -0
  71. package/src/src/plugins/TreeViewPlugin/TreeViewPlugin.js +1370 -0
  72. package/src/src/plugins/TreeViewPlugin/index.js +1 -0
  73. package/src/src/plugins/ViewCullPlugin/ViewCullPlugin.js +295 -0
  74. package/src/src/plugins/ViewCullPlugin/index.js +1 -0
  75. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +58 -0
  76. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +942 -0
  77. package/src/src/plugins/WebIFCLoaderPlugin/index.js +1 -0
  78. package/src/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +95 -0
  79. package/src/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +1194 -0
  80. package/src/src/plugins/XKTLoaderPlugin/index.js +2 -0
  81. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +169 -0
  82. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +660 -0
  83. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +663 -0
  84. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +230 -0
  85. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +223 -0
  86. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +283 -0
  87. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +246 -0
  88. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +301 -0
  89. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +439 -0
  90. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +563 -0
  91. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +518 -0
  92. package/src/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +2 -0
  93. package/src/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +238 -0
  94. package/src/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +1279 -0
  95. package/src/src/plugins/XML3DLoaderPlugin/index.js +1 -0
  96. package/src/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +11 -0
  97. package/src/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +2060 -0
  98. package/src/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +2155 -0
  99. package/src/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +1002 -0
  100. package/src/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +64 -0
  101. package/src/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +153 -0
  102. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +267 -0
  103. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +553 -0
  104. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +991 -0
  105. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +49 -0
  106. package/src/src/plugins/index.js +21 -0
  107. package/src/src/plugins/lib/culling/ObjectCullStates.js +208 -0
  108. package/src/src/plugins/lib/earcut.js +677 -0
  109. package/src/src/plugins/lib/html/Dot.js +179 -0
  110. package/src/src/plugins/lib/html/Label.js +174 -0
  111. package/src/src/plugins/lib/html/Wire.js +220 -0
  112. package/src/src/viewer/Configs.js +127 -0
  113. package/src/src/viewer/Plugin.js +233 -0
  114. package/src/src/viewer/Viewer.js +542 -0
  115. package/src/src/viewer/index.js +5 -0
  116. package/src/src/viewer/localization/LocaleService.js +475 -0
  117. package/src/src/viewer/metadata/IFCObjectDefaultColors.js +163 -0
  118. package/src/src/viewer/metadata/IFCObjectDefaults.js +17 -0
  119. package/src/src/viewer/metadata/MetaModel.js +414 -0
  120. package/src/src/viewer/metadata/MetaObject.js +223 -0
  121. package/src/src/viewer/metadata/MetaScene.js +336 -0
  122. package/src/src/viewer/metadata/Property.js +55 -0
  123. package/src/src/viewer/metadata/PropertySet.js +77 -0
  124. package/src/src/viewer/scene/Bitmap/Bitmap.js +473 -0
  125. package/src/src/viewer/scene/Bitmap/index.js +1 -0
  126. package/src/src/viewer/scene/CameraControl/CameraControl.js +1750 -0
  127. package/src/src/viewer/scene/CameraControl/lib/CameraUpdater.js +312 -0
  128. package/src/src/viewer/scene/CameraControl/lib/controllers/PanController.js +112 -0
  129. package/src/src/viewer/scene/CameraControl/lib/controllers/PickController.js +265 -0
  130. package/src/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +384 -0
  131. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +122 -0
  132. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +183 -0
  133. package/src/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +68 -0
  134. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +345 -0
  135. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +376 -0
  136. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +288 -0
  137. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +235 -0
  138. package/src/src/viewer/scene/Component.js +915 -0
  139. package/src/src/viewer/scene/Entity.js +502 -0
  140. package/src/src/viewer/scene/ImagePlane/ImagePlane.js +570 -0
  141. package/src/src/viewer/scene/ImagePlane/index.js +1 -0
  142. package/src/src/viewer/scene/LineSet/LineSet.js +163 -0
  143. package/src/src/viewer/scene/LineSet/index.js +1 -0
  144. package/src/src/viewer/scene/camera/Camera.js +912 -0
  145. package/src/src/viewer/scene/camera/CameraFlightAnimation.js +669 -0
  146. package/src/src/viewer/scene/camera/CameraPath.js +194 -0
  147. package/src/src/viewer/scene/camera/CameraPathAnimation.js +326 -0
  148. package/src/src/viewer/scene/camera/CustomProjection.js +149 -0
  149. package/src/src/viewer/scene/camera/Frustum.js +316 -0
  150. package/src/src/viewer/scene/camera/Ortho.js +286 -0
  151. package/src/src/viewer/scene/camera/Perspective.js +304 -0
  152. package/src/src/viewer/scene/camera/index.js +2 -0
  153. package/src/src/viewer/scene/canvas/Canvas.js +490 -0
  154. package/src/src/viewer/scene/canvas/Spinner.js +323 -0
  155. package/src/src/viewer/scene/constants/constants.js +371 -0
  156. package/src/src/viewer/scene/core.js +268 -0
  157. package/src/src/viewer/scene/geometry/Geometry.js +33 -0
  158. package/src/src/viewer/scene/geometry/ReadableGeometry.js +682 -0
  159. package/src/src/viewer/scene/geometry/VBOGeometry.js +319 -0
  160. package/src/src/viewer/scene/geometry/builders/buildBoxGeometry.js +238 -0
  161. package/src/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +106 -0
  162. package/src/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +271 -0
  163. package/src/src/viewer/scene/geometry/builders/buildGridGeometry.js +102 -0
  164. package/src/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +168 -0
  165. package/src/src/viewer/scene/geometry/builders/buildSphereGeometry.js +161 -0
  166. package/src/src/viewer/scene/geometry/builders/buildTorusGeometry.js +172 -0
  167. package/src/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +1721 -0
  168. package/src/src/viewer/scene/geometry/builders/index.js +8 -0
  169. package/src/src/viewer/scene/geometry/index.js +4 -0
  170. package/src/src/viewer/scene/geometry/loaders/index.js +2 -0
  171. package/src/src/viewer/scene/geometry/loaders/load3DSGeometry.js +103 -0
  172. package/src/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +130 -0
  173. package/src/src/viewer/scene/index.js +21 -0
  174. package/src/src/viewer/scene/input/Input.js +1333 -0
  175. package/src/src/viewer/scene/libs/k3d.js +1032 -0
  176. package/src/src/viewer/scene/lights/AmbientLight.js +175 -0
  177. package/src/src/viewer/scene/lights/CubeTexture.js +156 -0
  178. package/src/src/viewer/scene/lights/DirLight.js +314 -0
  179. package/src/src/viewer/scene/lights/Light.js +29 -0
  180. package/src/src/viewer/scene/lights/LightMap.js +77 -0
  181. package/src/src/viewer/scene/lights/PointLight.js +395 -0
  182. package/src/src/viewer/scene/lights/ReflectionMap.js +79 -0
  183. package/src/src/viewer/scene/lights/Shadow.js +138 -0
  184. package/src/src/viewer/scene/lights/index.js +5 -0
  185. package/src/src/viewer/scene/marker/Marker.js +383 -0
  186. package/src/src/viewer/scene/marker/SpriteMarker.js +356 -0
  187. package/src/src/viewer/scene/marker/index.js +2 -0
  188. package/src/src/viewer/scene/materials/EdgeMaterial.js +359 -0
  189. package/src/src/viewer/scene/materials/EmphasisMaterial.js +613 -0
  190. package/src/src/viewer/scene/materials/Fresnel.js +222 -0
  191. package/src/src/viewer/scene/materials/LambertMaterial.js +378 -0
  192. package/src/src/viewer/scene/materials/LinesMaterial.js +169 -0
  193. package/src/src/viewer/scene/materials/Material.js +39 -0
  194. package/src/src/viewer/scene/materials/MetallicMaterial.js +820 -0
  195. package/src/src/viewer/scene/materials/PhongMaterial.js +860 -0
  196. package/src/src/viewer/scene/materials/PointsMaterial.js +409 -0
  197. package/src/src/viewer/scene/materials/SpecularMaterial.js +807 -0
  198. package/src/src/viewer/scene/materials/Texture.js +513 -0
  199. package/src/src/viewer/scene/materials/index.js +8 -0
  200. package/src/src/viewer/scene/math/Frustum.js +118 -0
  201. package/src/src/viewer/scene/math/buildEdgeIndices.js +162 -0
  202. package/src/src/viewer/scene/math/geometryCompressionUtils.js +365 -0
  203. package/src/src/viewer/scene/math/index.js +3 -0
  204. package/src/src/viewer/scene/math/math.js +5386 -0
  205. package/src/src/viewer/scene/math/rtcCoords.js +139 -0
  206. package/src/src/viewer/scene/mementos/CameraMemento.js +200 -0
  207. package/src/src/viewer/scene/mementos/ModelMemento.js +263 -0
  208. package/src/src/viewer/scene/mementos/ObjectsMemento.js +259 -0
  209. package/src/src/viewer/scene/mementos/index.js +3 -0
  210. package/src/src/viewer/scene/mesh/Mesh.js +2202 -0
  211. package/src/src/viewer/scene/mesh/draw/DrawRenderer.js +996 -0
  212. package/src/src/viewer/scene/mesh/draw/DrawShaderSource.js +1570 -0
  213. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +259 -0
  214. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +159 -0
  215. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +286 -0
  216. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +262 -0
  217. package/src/src/viewer/scene/mesh/index.js +1 -0
  218. package/src/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +217 -0
  219. package/src/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +157 -0
  220. package/src/src/viewer/scene/mesh/pick/PickMeshRenderer.js +223 -0
  221. package/src/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +151 -0
  222. package/src/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +200 -0
  223. package/src/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +124 -0
  224. package/src/src/viewer/scene/mesh/shadow/ShadowRenderer.js +214 -0
  225. package/src/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +98 -0
  226. package/src/src/viewer/scene/metriqs/Metriqs.js +259 -0
  227. package/src/src/viewer/scene/model/ENTITY_FLAGS.js +21 -0
  228. package/src/src/viewer/scene/model/PerformanceModel.js +26 -0
  229. package/src/src/viewer/scene/model/RENDER_PASSES.js +34 -0
  230. package/src/src/viewer/scene/model/SceneModel.js +4018 -0
  231. package/src/src/viewer/scene/model/SceneModelEntity.js +715 -0
  232. package/src/src/viewer/scene/model/SceneModelMesh.js +341 -0
  233. package/src/src/viewer/scene/model/SceneModelTexture.js +38 -0
  234. package/src/src/viewer/scene/model/SceneModelTextureSet.js +59 -0
  235. package/src/src/viewer/scene/model/SceneModelTransform.js +404 -0
  236. package/src/src/viewer/scene/model/VBOSceneModel.js +26 -0
  237. package/src/src/viewer/scene/model/calculateUniquePositions.js +126 -0
  238. package/src/src/viewer/scene/model/compression.js +227 -0
  239. package/src/src/viewer/scene/model/dtx/BindableDataTexture.js +31 -0
  240. package/src/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +27 -0
  241. package/src/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +891 -0
  242. package/src/src/viewer/scene/model/dtx/lines/DTXLinesState.js +46 -0
  243. package/src/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +411 -0
  244. package/src/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +49 -0
  245. package/src/src/viewer/scene/model/dtx/lines/rebucketPositions.js +208 -0
  246. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +389 -0
  247. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +65 -0
  248. package/src/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +1322 -0
  249. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +46 -0
  250. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +250 -0
  251. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +518 -0
  252. package/src/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +54 -0
  253. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +619 -0
  254. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +464 -0
  255. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +414 -0
  256. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +422 -0
  257. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +345 -0
  258. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +436 -0
  259. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +462 -0
  260. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +436 -0
  261. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +455 -0
  262. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +440 -0
  263. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +307 -0
  264. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +465 -0
  265. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +466 -0
  266. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +427 -0
  267. package/src/src/viewer/scene/model/index.js +5 -0
  268. package/src/src/viewer/scene/model/rebucketPositions.js +354 -0
  269. package/src/src/viewer/scene/model/vbo/ScratchMemory.js +63 -0
  270. package/src/src/viewer/scene/model/vbo/VBORenderer.js +646 -0
  271. package/src/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +699 -0
  272. package/src/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +19 -0
  273. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +316 -0
  274. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +114 -0
  275. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +99 -0
  276. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +124 -0
  277. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +311 -0
  278. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +309 -0
  279. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +24 -0
  280. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js +20 -0
  281. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +718 -0
  282. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +24 -0
  283. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +168 -0
  284. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +136 -0
  285. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +156 -0
  286. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +148 -0
  287. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +144 -0
  288. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +107 -0
  289. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +146 -0
  290. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +309 -0
  291. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +303 -0
  292. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +24 -0
  293. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +1257 -0
  294. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +131 -0
  295. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +135 -0
  296. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
  297. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +375 -0
  298. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +34 -0
  299. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +238 -0
  300. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +270 -0
  301. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  302. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +235 -0
  303. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +139 -0
  304. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +125 -0
  305. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  306. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +144 -0
  307. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +130 -0
  308. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +121 -0
  309. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +131 -0
  310. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +107 -0
  311. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +136 -0
  312. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +311 -0
  313. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +308 -0
  314. package/src/src/viewer/scene/model/vbo/float16.js +760 -0
  315. package/src/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +704 -0
  316. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +148 -0
  317. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +26 -0
  318. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +139 -0
  319. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +127 -0
  320. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +331 -0
  321. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +316 -0
  322. package/src/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +728 -0
  323. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +174 -0
  324. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +156 -0
  325. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +149 -0
  326. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +170 -0
  327. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +152 -0
  328. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +26 -0
  329. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +174 -0
  330. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +119 -0
  331. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +154 -0
  332. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +330 -0
  333. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +311 -0
  334. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +150 -0
  335. package/src/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +1190 -0
  336. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +136 -0
  337. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +137 -0
  338. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
  339. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +376 -0
  340. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +253 -0
  341. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +278 -0
  342. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  343. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +244 -0
  344. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +130 -0
  345. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +29 -0
  346. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +138 -0
  347. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +128 -0
  348. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  349. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +149 -0
  350. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +136 -0
  351. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +130 -0
  352. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +145 -0
  353. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +113 -0
  354. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +139 -0
  355. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +342 -0
  356. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +325 -0
  357. package/src/src/viewer/scene/nodes/Node.js +1383 -0
  358. package/src/src/viewer/scene/nodes/index.js +1 -0
  359. package/src/src/viewer/scene/paths/CubicBezierCurve.js +194 -0
  360. package/src/src/viewer/scene/paths/Curve.js +183 -0
  361. package/src/src/viewer/scene/paths/Path.js +239 -0
  362. package/src/src/viewer/scene/paths/QuadraticBezierCurve.js +161 -0
  363. package/src/src/viewer/scene/paths/SplineCurve.js +133 -0
  364. package/src/src/viewer/scene/paths/index.js +5 -0
  365. package/src/src/viewer/scene/postfx/SAO.js +543 -0
  366. package/src/src/viewer/scene/scene/Scene.js +2802 -0
  367. package/src/src/viewer/scene/sectionPlane/SectionPlane.js +198 -0
  368. package/src/src/viewer/scene/sectionPlane/SectionPlaneCache.js +101 -0
  369. package/src/src/viewer/scene/sectionPlane/index.js +1 -0
  370. package/src/src/viewer/scene/skybox/Skybox.js +123 -0
  371. package/src/src/viewer/scene/skybox/index.js +1 -0
  372. package/src/src/viewer/scene/stats.js +44 -0
  373. package/src/src/viewer/scene/utils/Cache.js +29 -0
  374. package/src/src/viewer/scene/utils/FileLoader.js +161 -0
  375. package/src/src/viewer/scene/utils/Loader.js +55 -0
  376. package/src/src/viewer/scene/utils/LoadingManager.js +86 -0
  377. package/src/src/viewer/scene/utils/Map.js +45 -0
  378. package/src/src/viewer/scene/utils/Queue.js +56 -0
  379. package/src/src/viewer/scene/utils/WorkerPool.js +73 -0
  380. package/src/src/viewer/scene/utils/index.js +6 -0
  381. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +650 -0
  382. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +1 -0
  383. package/src/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +31 -0
  384. package/src/src/viewer/scene/utils/textureTranscoders/index.js +2 -0
  385. package/src/src/viewer/scene/utils.js +453 -0
  386. package/src/src/viewer/scene/viewport/Viewport.js +212 -0
  387. package/src/src/viewer/scene/webgl/ArrayBuf.js +121 -0
  388. package/src/src/viewer/scene/webgl/Attribute.js +23 -0
  389. package/src/src/viewer/scene/webgl/Drawable.js +270 -0
  390. package/src/src/viewer/scene/webgl/FrameContext.js +313 -0
  391. package/src/src/viewer/scene/webgl/PickResult.js +364 -0
  392. package/src/src/viewer/scene/webgl/Pickable.js +69 -0
  393. package/src/src/viewer/scene/webgl/Program.js +181 -0
  394. package/src/src/viewer/scene/webgl/RenderBuffer.js +378 -0
  395. package/src/src/viewer/scene/webgl/RenderBufferManager.js +34 -0
  396. package/src/src/viewer/scene/webgl/RenderFlags.js +203 -0
  397. package/src/src/viewer/scene/webgl/RenderState.js +40 -0
  398. package/src/src/viewer/scene/webgl/Renderer.js +1781 -0
  399. package/src/src/viewer/scene/webgl/Sampler.js +18 -0
  400. package/src/src/viewer/scene/webgl/Shader.js +49 -0
  401. package/src/src/viewer/scene/webgl/Texture2D.js +442 -0
  402. package/src/src/viewer/scene/webgl/convertConstant.js +244 -0
  403. package/src/src/viewer/scene/webgl/getExtension.js +32 -0
  404. package/src/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +214 -0
  405. package/src/src/viewer/scene/webgl/occlusion/OcclusionTester.js +426 -0
  406. package/src/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +324 -0
  407. package/src/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +376 -0
  408. package/src/src/viewer/scene/webgl/webglEnums.js +61 -0
  409. package/src/src/viewer/scene/webglInfo.js +47 -0
  410. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +131 -0
  411. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +135 -0
  412. package/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +12 -0
  413. package/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +375 -0
  414. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +34 -0
  415. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +238 -0
  416. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +270 -0
  417. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  418. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +235 -0
  419. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +139 -0
  420. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +125 -0
  421. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  422. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +144 -0
  423. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +130 -0
  424. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +121 -0
  425. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +131 -0
  426. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +107 -0
  427. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +136 -0
  428. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +311 -0
  429. package/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +308 -0
  430. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +136 -0
  431. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +137 -0
  432. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +12 -0
  433. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +376 -0
  434. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +253 -0
  435. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +278 -0
  436. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +126 -0
  437. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +244 -0
  438. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +130 -0
  439. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +29 -0
  440. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +138 -0
  441. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +128 -0
  442. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +561 -0
  443. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +149 -0
  444. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +136 -0
  445. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +130 -0
  446. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +145 -0
  447. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +113 -0
  448. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +139 -0
  449. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +342 -0
  450. package/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +325 -0
@@ -0,0 +1,175 @@
1
+ import {math} from '../math/math.js';
2
+ import {Light} from './Light.js';
3
+
4
+ /**
5
+ * @desc An ambient light source of fixed color and intensity that illuminates all {@link Mesh}es equally.
6
+ *
7
+ * * {@link AmbientLight#color} multiplies by {@link PhongMaterial#ambient} at each position of each {@link ReadableGeometry} surface.
8
+ * * {@link AmbientLight#color} multiplies by {@link LambertMaterial#color} uniformly across each triangle of each {@link ReadableGeometry} (ie. flat shaded).
9
+ * * {@link AmbientLight}s, {@link DirLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.
10
+ *
11
+ * ## Usage
12
+ *
13
+ * In the example below we'll destroy the {@link Scene}'s default light sources then create an AmbientLight and a couple of {@link @DirLight}s:
14
+ *
15
+ * [[Run this example](/examples/#lights_AmbientLight)]
16
+ *
17
+ * ````javascript
18
+ * import {Viewer, Mesh, buildTorusGeometry,
19
+ * ReadableGeometry, PhongMaterial, Texture, AmbientLight} from "xeokit-sdk.es.js";
20
+ *
21
+ * // Create a Viewer and arrange the camera
22
+ *
23
+ * const viewer = new Viewer({
24
+ * canvasId: "myCanvas"
25
+ * });
26
+ *
27
+ * viewer.scene.camera.eye = [0, 0, 5];
28
+ * viewer.scene.camera.look = [0, 0, 0];
29
+ * viewer.scene.camera.up = [0, 1, 0];
30
+ *
31
+ * // Replace the Scene's default lights with a single custom AmbientLight
32
+ *
33
+ * viewer.scene.clearLights();
34
+ *
35
+ * new AmbientLight(viewer.scene, {
36
+ * color: [0.0, 0.3, 0.7],
37
+ * intensity: 1.0
38
+ * });
39
+ *
40
+ * new DirLight(viewer.scene, {
41
+ * id: "keyLight",
42
+ * dir: [0.8, -0.6, -0.8],
43
+ * color: [1.0, 0.3, 0.3],
44
+ * intensity: 1.0,
45
+ * space: "view"
46
+ * });
47
+ *
48
+ * new DirLight(viewer.scene, {
49
+ * id: "fillLight",
50
+ * dir: [-0.8, -0.4, -0.4],
51
+ * color: [0.3, 1.0, 0.3],
52
+ * intensity: 1.0,
53
+ * space: "view"
54
+ * });
55
+ *
56
+ * new DirLight(viewer.scene, {
57
+ * id: "rimLight",
58
+ * dir: [0.2, -0.8, 0.8],
59
+ * color: [0.6, 0.6, 0.6],
60
+ * intensity: 1.0,
61
+ * space: "view"
62
+ * });
63
+ *
64
+ * // Create a mesh with torus shape and PhongMaterial
65
+ *
66
+ * new Mesh(viewer.scene, {
67
+ * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({
68
+ * center: [0, 0, 0],
69
+ * radius: 1.5,
70
+ * tube: 0.5,
71
+ * radialSegments: 32,
72
+ * tubeSegments: 24,
73
+ * arc: Math.PI * 2.0
74
+ * }),
75
+ * material: new PhongMaterial(viewer.scene, {
76
+ * ambient: [1.0, 1.0, 1.0],
77
+ * shininess: 30,
78
+ * diffuseMap: new Texture(viewer.scene, {
79
+ * src: "textures/diffuse/uvGrid2.jpg"
80
+ * })
81
+ * })
82
+ * });
83
+ *
84
+ * // Adjust the color of our AmbientLight
85
+ *
86
+ * var ambientLight = viewer.scene.lights["myAmbientLight"];
87
+ * ambientLight.color = [1.0, 0.8, 0.8];
88
+ *````
89
+ */
90
+ class AmbientLight extends Light {
91
+
92
+ /**
93
+ @private
94
+ */
95
+ get type() {
96
+ return "AmbientLight";
97
+ }
98
+
99
+ /**
100
+ * @param {Component} owner Owner component. When destroyed, the owner will destroy this AmbientLight as well.
101
+ * @param {*} [cfg] AmbientLight configuration
102
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.
103
+ * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8]] The color of this AmbientLight.
104
+ * @param {Number} [cfg.intensity=[1.0]] The intensity of this AmbientLight, as a factor in range ````[0..1]````.
105
+ */
106
+ constructor(owner, cfg = {}) {
107
+ super(owner, cfg);
108
+ this._state = {
109
+ type: "ambient",
110
+ color: math.vec3([0.7, 0.7, 0.7]),
111
+ intensity: 1.0
112
+ };
113
+ this.color = cfg.color;
114
+ this.intensity = cfg.intensity;
115
+ this.scene._lightCreated(this);
116
+ }
117
+
118
+ /**
119
+ * Sets the RGB color of this AmbientLight.
120
+ *
121
+ * Default value is ````[0.7, 0.7, 0.8]````.
122
+ *
123
+ * @param {Number[]} color The AmbientLight's RGB color.
124
+ */
125
+ set color(color) {
126
+ this._state.color.set(color || [0.7, 0.7, 0.8]);
127
+ this.glRedraw();
128
+ }
129
+
130
+ /**
131
+ * Gets the RGB color of this AmbientLight.
132
+ *
133
+ * Default value is ````[0.7, 0.7, 0.8]````.
134
+ *
135
+ * @returns {Number[]} The AmbientLight's RGB color.
136
+ */
137
+ get color() {
138
+ return this._state.color;
139
+ }
140
+
141
+ /**
142
+ * Sets the intensity of this AmbientLight.
143
+ *
144
+ * Default value is ````1.0```` for maximum intensity.
145
+ *
146
+ * @param {Number} intensity The AmbientLight's intensity.
147
+ */
148
+ set intensity(intensity) {
149
+ this._state.intensity = intensity !== undefined ? intensity : 1.0;
150
+ this.glRedraw();
151
+ }
152
+
153
+ /**
154
+ * Gets the intensity of this AmbientLight.
155
+ *
156
+ * Default value is ````1.0```` for maximum intensity.
157
+ *
158
+ * @returns {Number} The AmbientLight's intensity.
159
+ */
160
+ get intensity() {
161
+ return this._state.intensity;
162
+ }
163
+
164
+ /**
165
+ * Destroys this AmbientLight.
166
+ */
167
+ destroy() {
168
+
169
+ super.destroy();
170
+
171
+ this.scene._lightDestroyed(this);
172
+ }
173
+ }
174
+
175
+ export {AmbientLight};
@@ -0,0 +1,156 @@
1
+ import {Component} from '../Component.js';
2
+ import {RenderState} from '../webgl/RenderState.js';
3
+ import {Texture2D} from '../webgl/Texture2D.js';
4
+ import {stats} from '../stats.js';
5
+ import {ClampToEdgeWrapping, LinearEncoding, LinearFilter, LinearMipmapLinearFilter, sRGBEncoding} from "../constants/constants.js";
6
+
7
+ function ensureImageSizePowerOfTwo(image) {
8
+ if (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height)) {
9
+ const canvas = document.createElement("canvas");
10
+ canvas.width = nextHighestPowerOfTwo(image.width);
11
+ canvas.height = nextHighestPowerOfTwo(image.height);
12
+ const ctx = canvas.getContext("2d");
13
+ ctx.drawImage(image,
14
+ 0, 0, image.width, image.height,
15
+ 0, 0, canvas.width, canvas.height);
16
+ image = canvas;
17
+ }
18
+ return image;
19
+ }
20
+
21
+ function isPowerOfTwo(x) {
22
+ return (x & (x - 1)) === 0;
23
+ }
24
+
25
+ function nextHighestPowerOfTwo(x) {
26
+ --x;
27
+ for (let i = 1; i < 32; i <<= 1) {
28
+ x = x | x >> i;
29
+ }
30
+ return x + 1;
31
+ }
32
+
33
+ /**
34
+ * @desc A cube texture map.
35
+ */
36
+ class CubeTexture extends Component {
37
+
38
+ /**
39
+ @private
40
+ */
41
+ get type() {
42
+ return "CubeTexture";
43
+ }
44
+
45
+ /**
46
+ * @constructor
47
+ * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.
48
+ * @param {*} [cfg] Configs
49
+ * @param {String} [cfg.id] Optional ID for this CubeTexture, unique among all components in the parent scene, generated automatically when omitted.
50
+ * @param {String[]} [cfg.src=null] Paths to six image files to load into this CubeTexture.
51
+ * @param {Boolean} [cfg.flipY=false] Flips this CubeTexture's source data along its vertical axis when true.
52
+ * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}.
53
+ */
54
+ constructor(owner, cfg = {}) {
55
+
56
+ super(owner, cfg);
57
+
58
+ const gl = this.scene.canvas.gl;
59
+
60
+ this._state = new RenderState({
61
+ texture: new Texture2D({gl, target: gl.TEXTURE_CUBE_MAP}),
62
+ flipY: this._checkFlipY(cfg.minFilter),
63
+ encoding: this._checkEncoding(cfg.encoding),
64
+ minFilter: LinearMipmapLinearFilter,
65
+ magFilter: LinearFilter,
66
+ wrapS: ClampToEdgeWrapping,
67
+ wrapT: ClampToEdgeWrapping,
68
+ mipmaps: true
69
+ });
70
+
71
+ this._src = cfg.src;
72
+ this._images = [];
73
+
74
+ this._loadSrc(cfg.src);
75
+
76
+ stats.memory.textures++;
77
+ }
78
+
79
+ _checkFlipY(value) {
80
+ return !!value;
81
+ }
82
+
83
+ _checkEncoding(value) {
84
+ value = value || LinearEncoding;
85
+ if (value !== LinearEncoding && value !== sRGBEncoding) {
86
+ this.error("Unsupported value for 'encoding' - supported values are LinearEncoding and sRGBEncoding. Defaulting to LinearEncoding.");
87
+ value = LinearEncoding;
88
+ }
89
+ return value;
90
+ }
91
+
92
+ _webglContextRestored() {
93
+ const gl = this.scene.canvas.gl;
94
+ this._state.texture = null;
95
+ // if (this._images.length > 0) {
96
+ // this._state.texture = new xeokit.renderer.Texture2D(gl, gl.TEXTURE_CUBE_MAP);
97
+ // this._state.texture.setImage(this._images, this._state);
98
+ // this._state.texture.setProps(this._state);
99
+ // } else
100
+ if (this._src) {
101
+ this._loadSrc(this._src);
102
+ }
103
+ }
104
+
105
+ _loadSrc(src) {
106
+ const self = this;
107
+ const gl = this.scene.canvas.gl;
108
+ this._images = [];
109
+ let loadFailed = false;
110
+ let numLoaded = 0;
111
+ for (let i = 0; i < src.length; i++) {
112
+ const image = new Image();
113
+ image.onload = (function () {
114
+ let _image = image;
115
+ const index = i;
116
+ return function () {
117
+ if (loadFailed) {
118
+ return;
119
+ }
120
+ _image = ensureImageSizePowerOfTwo(_image);
121
+ self._images[index] = _image;
122
+ numLoaded++;
123
+ if (numLoaded === 6) {
124
+ let texture = self._state.texture;
125
+ if (!texture) {
126
+ texture = new Texture2D({gl, target: gl.TEXTURE_CUBE_MAP});
127
+ self._state.texture = texture;
128
+ }
129
+ texture.setImage(self._images, self._state);
130
+ self.fire("loaded", self._src, false);
131
+ self.glRedraw();
132
+ }
133
+ };
134
+ })();
135
+ image.onerror = function () {
136
+ loadFailed = true;
137
+ };
138
+ image.src = src[i];
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Destroys this CubeTexture
144
+ *
145
+ */
146
+ destroy() {
147
+ super.destroy();
148
+ if (this._state.texture) {
149
+ this._state.texture.destroy();
150
+ }
151
+ stats.memory.textures--;
152
+ this._state.destroy();
153
+ }
154
+ }
155
+
156
+ export {CubeTexture};
@@ -0,0 +1,314 @@
1
+ import {Light} from './Light.js';
2
+ import {RenderState} from '../webgl/RenderState.js';
3
+ import {RenderBuffer} from '../webgl/RenderBuffer.js';
4
+ import {math} from '../math/math.js';
5
+
6
+ /**
7
+ * @desc A directional light source that illuminates all {@link Mesh}es equally from a given direction.
8
+ *
9
+ * * Has an emission direction vector in {@link DirLight#dir}, but no position.
10
+ * * Defined in either *World* or *View* coordinate space. When in World-space, {@link DirLight#dir} is relative to the
11
+ * World coordinate system, and will appear to move as the {@link Camera} moves. When in View-space, {@link DirLight#dir} is
12
+ * relative to the View coordinate system, and will behave as if fixed to the viewer's head.
13
+ * * {@link AmbientLight}s, {@link DirLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.
14
+ *
15
+ * ## Usage
16
+ *
17
+ * In the example below we'll replace the {@link Scene}'s default light sources with three View-space DirLights.
18
+ *
19
+ * [[Run this example](/examples/#lights_DirLight_view)]
20
+ *
21
+ * ````javascript
22
+ * import {Viewer, Mesh, buildSphereGeometry,
23
+ * buildPlaneGeometry, ReadableGeometry,
24
+ * PhongMaterial, Texture, DirLight} from "xeokit-sdk.es.js";
25
+ *
26
+ * // Create a Viewer and arrange the camera
27
+ *
28
+ * const viewer = new Viewer({
29
+ * canvasId: "myCanvas"
30
+ * });
31
+ *
32
+ * viewer.scene.camera.eye = [0, 0, 5];
33
+ * viewer.scene.camera.look = [0, 0, 0];
34
+ * viewer.scene.camera.up = [0, 1, 0];
35
+ *
36
+ * // Replace the Scene's default lights with three custom view-space DirLights
37
+ *
38
+ * viewer.scene.clearLights();
39
+ *
40
+ * new DirLight(viewer.scene, {
41
+ * id: "keyLight",
42
+ * dir: [0.8, -0.6, -0.8],
43
+ * color: [1.0, 0.3, 0.3],
44
+ * intensity: 1.0,
45
+ * space: "view"
46
+ * });
47
+ *
48
+ * new DirLight(viewer.scene, {
49
+ * id: "fillLight",
50
+ * dir: [-0.8, -0.4, -0.4],
51
+ * color: [0.3, 1.0, 0.3],
52
+ * intensity: 1.0,
53
+ * space: "view"
54
+ * });
55
+ *
56
+ * new DirLight(viewer.scene, {
57
+ * id: "rimLight",
58
+ * dir: [0.2, -0.8, 0.8],
59
+ * color: [0.6, 0.6, 0.6],
60
+ * intensity: 1.0,
61
+ * space: "view"
62
+ * });
63
+ *
64
+ *
65
+ * // Create a sphere and ground plane
66
+ *
67
+ * new Mesh(viewer.scene, {
68
+ * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({
69
+ * radius: 2.0
70
+ * }),
71
+ * material: new PhongMaterial(viewer.scene, {
72
+ * diffuse: [0.7, 0.7, 0.7],
73
+ * specular: [1.0, 1.0, 1.0],
74
+ * emissive: [0, 0, 0],
75
+ * alpha: 1.0,
76
+ * ambient: [1, 1, 0],
77
+ * diffuseMap: new Texture(viewer.scene, {
78
+ * src: "textures/diffuse/uvGrid2.jpg"
79
+ * })
80
+ * })
81
+ * });
82
+ *
83
+ * new Mesh(viewer.scene, {
84
+ * geometry: buildPlaneGeometry(ReadableGeometry, viewer.scene, {
85
+ * xSize: 30,
86
+ * zSize: 30
87
+ * }),
88
+ * material: new PhongMaterial(viewer.scene, {
89
+ * diffuseMap: new Texture(viewer.scene, {
90
+ * src: "textures/diffuse/uvGrid2.jpg"
91
+ * }),
92
+ * backfaces: true
93
+ * }),
94
+ * position: [0, -2.1, 0]
95
+ * });
96
+ * ````
97
+ */
98
+ class DirLight extends Light {
99
+
100
+ /**
101
+ @private
102
+ */
103
+ get type() {
104
+ return "DirLight";
105
+ }
106
+
107
+ /**
108
+ * @param {Component} owner Owner component. When destroyed, the owner will destroy this DirLight as well.
109
+ * @param {*} [cfg] The DirLight configuration
110
+ * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.
111
+ * @param {Number[]} [cfg.dir=[1.0, 1.0, 1.0]] A unit vector indicating the direction that the light is shining, given in either World or View space, depending on the value of the ````space```` parameter.
112
+ * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8 ]] The color of this DirLight.
113
+ * @param {Number} [cfg.intensity=1.0] The intensity of this DirLight, as a factor in range ````[0..1]````.
114
+ * @param {String} [cfg.space="view"] The coordinate system the DirLight is defined in - ````"view"```` or ````"space"````.
115
+ * @param {Boolean} [cfg.castsShadow=false] Flag which indicates if this DirLight casts a castsShadow.
116
+ */
117
+ constructor(owner, cfg = {}) {
118
+
119
+ super(owner, cfg);
120
+
121
+ this._shadowRenderBuf = null;
122
+ this._shadowViewMatrix = null;
123
+ this._shadowProjMatrix = null;
124
+ this._shadowViewMatrixDirty = true;
125
+ this._shadowProjMatrixDirty = true;
126
+
127
+ const camera = this.scene.camera;
128
+ const canvas = this.scene.canvas;
129
+
130
+ this._onCameraViewMatrix = camera.on("viewMatrix", () => {
131
+ this._shadowViewMatrixDirty = true;
132
+ });
133
+
134
+ this._onCameraProjMatrix = camera.on("projMatrix", () => {
135
+ this._shadowProjMatrixDirty = true;
136
+ });
137
+
138
+ this._onCanvasBoundary = canvas.on("boundary", () => {
139
+ this._shadowProjMatrixDirty = true;
140
+ });
141
+
142
+ this._state = new RenderState({
143
+
144
+ type: "dir",
145
+ dir: math.vec3([1.0, 1.0, 1.0]),
146
+ color: math.vec3([0.7, 0.7, 0.8]),
147
+ intensity: 1.0,
148
+ space: cfg.space || "view",
149
+ castsShadow: false,
150
+
151
+ getShadowViewMatrix: () => {
152
+ if (this._shadowViewMatrixDirty) {
153
+ if (!this._shadowViewMatrix) {
154
+ this._shadowViewMatrix = math.identityMat4();
155
+ }
156
+ const camera = this.scene.camera;
157
+ const dir = this._state.dir;
158
+ const look = camera.look;
159
+ const eye = [look[0] - dir[0], look[1] - dir[1], look[2] - dir[2]];
160
+ const up = [0, 1, 0];
161
+ math.lookAtMat4v(eye, look, up, this._shadowViewMatrix);
162
+ this._shadowViewMatrixDirty = false;
163
+ }
164
+ return this._shadowViewMatrix;
165
+ },
166
+
167
+ getShadowProjMatrix: () => {
168
+ if (this._shadowProjMatrixDirty) { // TODO: Set when canvas resizes
169
+ if (!this._shadowProjMatrix) {
170
+ this._shadowProjMatrix = math.identityMat4();
171
+ }
172
+ math.orthoMat4c(-40, 40, -40, 40, -40.0, 80, this._shadowProjMatrix); // left, right, bottom, top, near, far, dest
173
+ this._shadowProjMatrixDirty = false;
174
+ }
175
+ return this._shadowProjMatrix;
176
+ },
177
+
178
+ getShadowRenderBuf: () => {
179
+ if (!this._shadowRenderBuf) {
180
+ this._shadowRenderBuf = new RenderBuffer(this.scene.canvas.canvas, this.scene.canvas.gl, {size: [1024, 1024]}); // Super old mobile devices have a limit of 1024x1024 textures
181
+ }
182
+ return this._shadowRenderBuf;
183
+ }
184
+ });
185
+
186
+ this.dir = cfg.dir;
187
+ this.color = cfg.color;
188
+ this.intensity = cfg.intensity;
189
+ this.castsShadow = cfg.castsShadow;
190
+
191
+ this.scene._lightCreated(this);
192
+ }
193
+
194
+ /**
195
+ * Sets the direction in which the DirLight is shining.
196
+ *
197
+ * Default value is ````[1.0, 1.0, 1.0]````.
198
+ *
199
+ * @param {Number[]} value The direction vector.
200
+ */
201
+ set dir(value) {
202
+ this._state.dir.set(value || [1.0, 1.0, 1.0]);
203
+ this._shadowViewMatrixDirty = true;
204
+ this.glRedraw();
205
+ }
206
+
207
+ /**
208
+ * Gets the direction in which the DirLight is shining.
209
+ *
210
+ * Default value is ````[1.0, 1.0, 1.0]````.
211
+ *
212
+ * @returns {Number[]} The direction vector.
213
+ */
214
+ get dir() {
215
+ return this._state.dir;
216
+ }
217
+
218
+ /**
219
+ * Sets the RGB color of this DirLight.
220
+ *
221
+ * Default value is ````[0.7, 0.7, 0.8]````.
222
+ *
223
+ * @param {Number[]} color The DirLight's RGB color.
224
+ */
225
+ set color(color) {
226
+ this._state.color.set(color || [0.7, 0.7, 0.8]);
227
+ this.glRedraw();
228
+ }
229
+
230
+ /**
231
+ * Gets the RGB color of this DirLight.
232
+ *
233
+ * Default value is ````[0.7, 0.7, 0.8]````.
234
+ *
235
+ * @returns {Number[]} The DirLight's RGB color.
236
+ */
237
+ get color() {
238
+ return this._state.color;
239
+ }
240
+
241
+ /**
242
+ * Sets the intensity of this DirLight.
243
+ *
244
+ * Default intensity is ````1.0```` for maximum intensity.
245
+ *
246
+ * @param {Number} intensity The DirLight's intensity
247
+ */
248
+ set intensity(intensity) {
249
+ intensity = intensity !== undefined ? intensity : 1.0;
250
+ this._state.intensity = intensity;
251
+ this.glRedraw();
252
+ }
253
+
254
+ /**
255
+ * Gets the intensity of this DirLight.
256
+ *
257
+ * Default value is ````1.0```` for maximum intensity.
258
+ *
259
+ * @returns {Number} The DirLight's intensity.
260
+ */
261
+ get intensity() {
262
+ return this._state.intensity;
263
+ }
264
+
265
+ /**
266
+ * Sets if this DirLight casts a shadow.
267
+ *
268
+ * Default value is ````false````.
269
+ *
270
+ * @param {Boolean} castsShadow Set ````true```` to cast shadows.
271
+ */
272
+ set castsShadow(castsShadow) {
273
+ castsShadow = !!castsShadow;
274
+ if (this._state.castsShadow === castsShadow) {
275
+ return;
276
+ }
277
+ this._state.castsShadow = castsShadow;
278
+ this._shadowViewMatrixDirty = true;
279
+ this.glRedraw();
280
+ }
281
+
282
+ /**
283
+ * Gets if this DirLight casts a shadow.
284
+ *
285
+ * Default value is ````false````.
286
+ *
287
+ * @returns {Boolean} ````true```` if this DirLight casts shadows.
288
+ */
289
+ get castsShadow() {
290
+ return this._state.castsShadow;
291
+ }
292
+
293
+ /**
294
+ * Destroys this DirLight.
295
+ */
296
+ destroy() {
297
+
298
+ const camera = this.scene.camera;
299
+ const canvas = this.scene.canvas;
300
+ camera.off(this._onCameraViewMatrix);
301
+ camera.off(this._onCameraProjMatrix);
302
+ canvas.off(this._onCanvasBoundary);
303
+
304
+ super.destroy();
305
+ this._state.destroy();
306
+ if (this._shadowRenderBuf) {
307
+ this._shadowRenderBuf.destroy();
308
+ }
309
+ this.scene._lightDestroyed(this);
310
+ this.glRedraw();
311
+ }
312
+ }
313
+
314
+ export {DirLight};
@@ -0,0 +1,29 @@
1
+ import {Component} from '../Component.js';
2
+
3
+ /**
4
+ * @desc A dynamic light source within a {@link Scene}.
5
+ *
6
+ * These are registered by {@link Light#id} in {@link Scene#lights}.
7
+ */
8
+ class Light extends Component {
9
+
10
+ /**
11
+ @private
12
+ */
13
+ get type() {
14
+ return "Light";
15
+ }
16
+
17
+ /**
18
+ * @private
19
+ */
20
+ get isLight() {
21
+ return true;
22
+ }
23
+
24
+ constructor(owner, cfg = {}) {
25
+ super(owner, cfg);
26
+ }
27
+ }
28
+
29
+ export {Light};