@xeokit/xeokit-sdk 2.5.2-beta-13 → 2.5.2-beta-17

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 (418) hide show
  1. package/dist/xeokit-sdk.cjs.js +31 -10
  2. package/dist/xeokit-sdk.es.js +31 -10
  3. package/dist/xeokit-sdk.es5.js +68 -66
  4. package/dist/xeokit-sdk.min.cjs.js +1 -1
  5. package/dist/xeokit-sdk.min.es.js +1 -1
  6. package/dist/xeokit-sdk.min.es5.js +1 -1
  7. package/package.json +1 -1
  8. package/src/viewer/metadata/MetaModel.js +16 -1
  9. package/src/viewer/metadata/MetaScene.js +15 -9
  10. package/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +0 -663
  11. package/src/src/extras/ContextMenu/ContextMenu.js +0 -907
  12. package/src/src/extras/ContextMenu/index.js +0 -1
  13. package/src/src/extras/MarqueePicker/MarqueePicker.js +0 -352
  14. package/src/src/extras/MarqueePicker/MarqueePickerMouseControl.js +0 -174
  15. package/src/src/extras/MarqueePicker/index.js +0 -2
  16. package/src/src/extras/PointerLens/PointerLens.js +0 -312
  17. package/src/src/extras/PointerLens/index.js +0 -1
  18. package/src/src/extras/collision/ObjectsKdTree3.js +0 -149
  19. package/src/src/extras/collision/index.js +0 -1
  20. package/src/src/extras/index.js +0 -4
  21. package/src/src/index.js +0 -3
  22. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +0 -731
  23. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +0 -84
  24. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsMouseControl.js +0 -435
  25. package/src/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +0 -406
  26. package/src/src/plugins/AngleMeasurementsPlugin/index.js +0 -3
  27. package/src/src/plugins/AnnotationsPlugin/Annotation.js +0 -368
  28. package/src/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +0 -583
  29. package/src/src/plugins/AnnotationsPlugin/index.js +0 -1
  30. package/src/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +0 -333
  31. package/src/src/plugins/AxisGizmoPlugin/index.js +0 -1
  32. package/src/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +0 -977
  33. package/src/src/plugins/BCFViewpointsPlugin/index.js +0 -1
  34. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONDefaultDataSource.js +0 -29
  35. package/src/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +0 -751
  36. package/src/src/plugins/CityJSONLoaderPlugin/index.js +0 -1
  37. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +0 -963
  38. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +0 -84
  39. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsMouseControl.js +0 -399
  40. package/src/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +0 -505
  41. package/src/src/plugins/DistanceMeasurementsPlugin/index.js +0 -3
  42. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesControl.js +0 -639
  43. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/FaceAlignedSectionPlanesPlugin.js +0 -436
  44. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Overview.js +0 -247
  45. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/Plane.js +0 -167
  46. package/src/src/plugins/FaceAlignedSectionPlanesPlugin/index.js +0 -1
  47. package/src/src/plugins/FastNavPlugin/FastNavPlugin.js +0 -429
  48. package/src/src/plugins/FastNavPlugin/index.js +0 -1
  49. package/src/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +0 -140
  50. package/src/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +0 -421
  51. package/src/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js +0 -669
  52. package/src/src/plugins/GLTFLoaderPlugin/index.js +0 -2
  53. package/src/src/plugins/LASLoaderPlugin/LASDefaultDataSource.js +0 -58
  54. package/src/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +0 -563
  55. package/src/src/plugins/LASLoaderPlugin/index.js +0 -1
  56. package/src/src/plugins/LASLoaderPlugin/loadLASHeader.js +0 -183
  57. package/src/src/plugins/NavCubePlugin/CubeTextureCanvas.js +0 -290
  58. package/src/src/plugins/NavCubePlugin/NavCubePlugin.js +0 -753
  59. package/src/src/plugins/NavCubePlugin/index.js +0 -1
  60. package/src/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +0 -145
  61. package/src/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +0 -777
  62. package/src/src/plugins/OBJLoaderPlugin/index.js +0 -1
  63. package/src/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +0 -33
  64. package/src/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +0 -274
  65. package/src/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +0 -313
  66. package/src/src/plugins/STLLoaderPlugin/index.js +0 -2
  67. package/src/src/plugins/SectionPlanesPlugin/Control.js +0 -1328
  68. package/src/src/plugins/SectionPlanesPlugin/Overview.js +0 -249
  69. package/src/src/plugins/SectionPlanesPlugin/Plane.js +0 -169
  70. package/src/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +0 -404
  71. package/src/src/plugins/SectionPlanesPlugin/index.js +0 -1
  72. package/src/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +0 -134
  73. package/src/src/plugins/SkyboxesPlugin/index.js +0 -1
  74. package/src/src/plugins/StoreyViewsPlugin/Storey.js +0 -84
  75. package/src/src/plugins/StoreyViewsPlugin/StoreyMap.js +0 -57
  76. package/src/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +0 -773
  77. package/src/src/plugins/StoreyViewsPlugin/index.js +0 -1
  78. package/src/src/plugins/TreeViewPlugin/RenderService.js +0 -169
  79. package/src/src/plugins/TreeViewPlugin/TreeViewNode.js +0 -101
  80. package/src/src/plugins/TreeViewPlugin/TreeViewPlugin.js +0 -1370
  81. package/src/src/plugins/TreeViewPlugin/index.js +0 -1
  82. package/src/src/plugins/ViewCullPlugin/ViewCullPlugin.js +0 -295
  83. package/src/src/plugins/ViewCullPlugin/index.js +0 -1
  84. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCDefaultDataSource.js +0 -58
  85. package/src/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +0 -942
  86. package/src/src/plugins/WebIFCLoaderPlugin/index.js +0 -1
  87. package/src/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +0 -95
  88. package/src/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +0 -1194
  89. package/src/src/plugins/XKTLoaderPlugin/index.js +0 -2
  90. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +0 -169
  91. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +0 -660
  92. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV11.js +0 -663
  93. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +0 -230
  94. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +0 -223
  95. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +0 -283
  96. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +0 -246
  97. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +0 -301
  98. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +0 -439
  99. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +0 -563
  100. package/src/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +0 -518
  101. package/src/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +0 -2
  102. package/src/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +0 -238
  103. package/src/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +0 -1279
  104. package/src/src/plugins/XML3DLoaderPlugin/index.js +0 -1
  105. package/src/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +0 -11
  106. package/src/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +0 -2060
  107. package/src/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +0 -2155
  108. package/src/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +0 -1002
  109. package/src/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +0 -64
  110. package/src/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +0 -153
  111. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +0 -267
  112. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +0 -553
  113. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +0 -991
  114. package/src/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +0 -49
  115. package/src/src/plugins/index.js +0 -21
  116. package/src/src/plugins/lib/culling/ObjectCullStates.js +0 -208
  117. package/src/src/plugins/lib/earcut.js +0 -677
  118. package/src/src/plugins/lib/html/Dot.js +0 -179
  119. package/src/src/plugins/lib/html/Label.js +0 -174
  120. package/src/src/plugins/lib/html/Wire.js +0 -220
  121. package/src/src/viewer/Configs.js +0 -127
  122. package/src/src/viewer/Plugin.js +0 -233
  123. package/src/src/viewer/Viewer.js +0 -542
  124. package/src/src/viewer/index.js +0 -5
  125. package/src/src/viewer/localization/LocaleService.js +0 -475
  126. package/src/src/viewer/metadata/IFCObjectDefaultColors.js +0 -163
  127. package/src/src/viewer/metadata/IFCObjectDefaults.js +0 -17
  128. package/src/src/viewer/metadata/MetaModel.js +0 -414
  129. package/src/src/viewer/metadata/MetaObject.js +0 -223
  130. package/src/src/viewer/metadata/MetaScene.js +0 -336
  131. package/src/src/viewer/metadata/Property.js +0 -55
  132. package/src/src/viewer/metadata/PropertySet.js +0 -77
  133. package/src/src/viewer/scene/Bitmap/Bitmap.js +0 -473
  134. package/src/src/viewer/scene/Bitmap/index.js +0 -1
  135. package/src/src/viewer/scene/CameraControl/CameraControl.js +0 -1750
  136. package/src/src/viewer/scene/CameraControl/lib/CameraUpdater.js +0 -312
  137. package/src/src/viewer/scene/CameraControl/lib/controllers/PanController.js +0 -112
  138. package/src/src/viewer/scene/CameraControl/lib/controllers/PickController.js +0 -265
  139. package/src/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +0 -384
  140. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +0 -122
  141. package/src/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +0 -183
  142. package/src/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +0 -68
  143. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +0 -345
  144. package/src/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +0 -376
  145. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +0 -288
  146. package/src/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +0 -235
  147. package/src/src/viewer/scene/Component.js +0 -915
  148. package/src/src/viewer/scene/Entity.js +0 -502
  149. package/src/src/viewer/scene/ImagePlane/ImagePlane.js +0 -570
  150. package/src/src/viewer/scene/ImagePlane/index.js +0 -1
  151. package/src/src/viewer/scene/LineSet/LineSet.js +0 -163
  152. package/src/src/viewer/scene/LineSet/index.js +0 -1
  153. package/src/src/viewer/scene/camera/Camera.js +0 -912
  154. package/src/src/viewer/scene/camera/CameraFlightAnimation.js +0 -669
  155. package/src/src/viewer/scene/camera/CameraPath.js +0 -194
  156. package/src/src/viewer/scene/camera/CameraPathAnimation.js +0 -326
  157. package/src/src/viewer/scene/camera/CustomProjection.js +0 -149
  158. package/src/src/viewer/scene/camera/Frustum.js +0 -316
  159. package/src/src/viewer/scene/camera/Ortho.js +0 -286
  160. package/src/src/viewer/scene/camera/Perspective.js +0 -304
  161. package/src/src/viewer/scene/camera/index.js +0 -2
  162. package/src/src/viewer/scene/canvas/Canvas.js +0 -490
  163. package/src/src/viewer/scene/canvas/Spinner.js +0 -323
  164. package/src/src/viewer/scene/constants/constants.js +0 -371
  165. package/src/src/viewer/scene/core.js +0 -268
  166. package/src/src/viewer/scene/geometry/Geometry.js +0 -33
  167. package/src/src/viewer/scene/geometry/ReadableGeometry.js +0 -682
  168. package/src/src/viewer/scene/geometry/VBOGeometry.js +0 -319
  169. package/src/src/viewer/scene/geometry/builders/buildBoxGeometry.js +0 -238
  170. package/src/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +0 -106
  171. package/src/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +0 -271
  172. package/src/src/viewer/scene/geometry/builders/buildGridGeometry.js +0 -102
  173. package/src/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +0 -168
  174. package/src/src/viewer/scene/geometry/builders/buildSphereGeometry.js +0 -161
  175. package/src/src/viewer/scene/geometry/builders/buildTorusGeometry.js +0 -172
  176. package/src/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +0 -1721
  177. package/src/src/viewer/scene/geometry/builders/index.js +0 -8
  178. package/src/src/viewer/scene/geometry/index.js +0 -4
  179. package/src/src/viewer/scene/geometry/loaders/index.js +0 -2
  180. package/src/src/viewer/scene/geometry/loaders/load3DSGeometry.js +0 -103
  181. package/src/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +0 -130
  182. package/src/src/viewer/scene/index.js +0 -21
  183. package/src/src/viewer/scene/input/Input.js +0 -1333
  184. package/src/src/viewer/scene/libs/k3d.js +0 -1032
  185. package/src/src/viewer/scene/lights/AmbientLight.js +0 -175
  186. package/src/src/viewer/scene/lights/CubeTexture.js +0 -156
  187. package/src/src/viewer/scene/lights/DirLight.js +0 -314
  188. package/src/src/viewer/scene/lights/Light.js +0 -29
  189. package/src/src/viewer/scene/lights/LightMap.js +0 -77
  190. package/src/src/viewer/scene/lights/PointLight.js +0 -395
  191. package/src/src/viewer/scene/lights/ReflectionMap.js +0 -79
  192. package/src/src/viewer/scene/lights/Shadow.js +0 -138
  193. package/src/src/viewer/scene/lights/index.js +0 -5
  194. package/src/src/viewer/scene/marker/Marker.js +0 -383
  195. package/src/src/viewer/scene/marker/SpriteMarker.js +0 -356
  196. package/src/src/viewer/scene/marker/index.js +0 -2
  197. package/src/src/viewer/scene/materials/EdgeMaterial.js +0 -359
  198. package/src/src/viewer/scene/materials/EmphasisMaterial.js +0 -613
  199. package/src/src/viewer/scene/materials/Fresnel.js +0 -222
  200. package/src/src/viewer/scene/materials/LambertMaterial.js +0 -378
  201. package/src/src/viewer/scene/materials/LinesMaterial.js +0 -169
  202. package/src/src/viewer/scene/materials/Material.js +0 -39
  203. package/src/src/viewer/scene/materials/MetallicMaterial.js +0 -820
  204. package/src/src/viewer/scene/materials/PhongMaterial.js +0 -860
  205. package/src/src/viewer/scene/materials/PointsMaterial.js +0 -409
  206. package/src/src/viewer/scene/materials/SpecularMaterial.js +0 -807
  207. package/src/src/viewer/scene/materials/Texture.js +0 -513
  208. package/src/src/viewer/scene/materials/index.js +0 -8
  209. package/src/src/viewer/scene/math/Frustum.js +0 -118
  210. package/src/src/viewer/scene/math/buildEdgeIndices.js +0 -162
  211. package/src/src/viewer/scene/math/geometryCompressionUtils.js +0 -365
  212. package/src/src/viewer/scene/math/index.js +0 -3
  213. package/src/src/viewer/scene/math/math.js +0 -5386
  214. package/src/src/viewer/scene/math/rtcCoords.js +0 -139
  215. package/src/src/viewer/scene/mementos/CameraMemento.js +0 -200
  216. package/src/src/viewer/scene/mementos/ModelMemento.js +0 -263
  217. package/src/src/viewer/scene/mementos/ObjectsMemento.js +0 -259
  218. package/src/src/viewer/scene/mementos/index.js +0 -3
  219. package/src/src/viewer/scene/mesh/Mesh.js +0 -2202
  220. package/src/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -996
  221. package/src/src/viewer/scene/mesh/draw/DrawShaderSource.js +0 -1570
  222. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -259
  223. package/src/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -159
  224. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -286
  225. package/src/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -262
  226. package/src/src/viewer/scene/mesh/index.js +0 -1
  227. package/src/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -217
  228. package/src/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +0 -157
  229. package/src/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -223
  230. package/src/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +0 -151
  231. package/src/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -200
  232. package/src/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +0 -124
  233. package/src/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
  234. package/src/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +0 -98
  235. package/src/src/viewer/scene/metriqs/Metriqs.js +0 -259
  236. package/src/src/viewer/scene/model/ENTITY_FLAGS.js +0 -21
  237. package/src/src/viewer/scene/model/PerformanceModel.js +0 -26
  238. package/src/src/viewer/scene/model/RENDER_PASSES.js +0 -34
  239. package/src/src/viewer/scene/model/SceneModel.js +0 -4018
  240. package/src/src/viewer/scene/model/SceneModelEntity.js +0 -715
  241. package/src/src/viewer/scene/model/SceneModelMesh.js +0 -341
  242. package/src/src/viewer/scene/model/SceneModelTexture.js +0 -38
  243. package/src/src/viewer/scene/model/SceneModelTextureSet.js +0 -59
  244. package/src/src/viewer/scene/model/SceneModelTransform.js +0 -404
  245. package/src/src/viewer/scene/model/VBOSceneModel.js +0 -26
  246. package/src/src/viewer/scene/model/calculateUniquePositions.js +0 -126
  247. package/src/src/viewer/scene/model/compression.js +0 -227
  248. package/src/src/viewer/scene/model/dtx/BindableDataTexture.js +0 -31
  249. package/src/src/viewer/scene/model/dtx/lines/DTXLinesBuffer.js +0 -27
  250. package/src/src/viewer/scene/model/dtx/lines/DTXLinesLayer.js +0 -891
  251. package/src/src/viewer/scene/model/dtx/lines/DTXLinesState.js +0 -46
  252. package/src/src/viewer/scene/model/dtx/lines/DTXLinesTextureFactory.js +0 -411
  253. package/src/src/viewer/scene/model/dtx/lines/dataTextureRamStats.js +0 -49
  254. package/src/src/viewer/scene/model/dtx/lines/rebucketPositions.js +0 -208
  255. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesColorRenderer.js +0 -389
  256. package/src/src/viewer/scene/model/dtx/lines/renderers/DTXLinesRenderers.js +0 -65
  257. package/src/src/viewer/scene/model/dtx/triangles/DTXTrianglesLayer.js +0 -1322
  258. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesBuffer.js +0 -46
  259. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesState.js +0 -250
  260. package/src/src/viewer/scene/model/dtx/triangles/lib/DTXTrianglesTextureFactory.js +0 -518
  261. package/src/src/viewer/scene/model/dtx/triangles/lib/dataTextureRamStats.js +0 -54
  262. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesColorRenderer.js +0 -619
  263. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesDepthRenderer.js +0 -464
  264. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesColorRenderer.js +0 -414
  265. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesEdgesRenderer.js +0 -422
  266. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesNormalsRenderer.js +0 -345
  267. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesOcclusionRenderer.js +0 -436
  268. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickDepthRenderer.js +0 -462
  269. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickMeshRenderer.js +0 -436
  270. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsFlatRenderer.js +0 -455
  271. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesPickNormalsRenderer.js +0 -440
  272. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesRenderers.js +0 -307
  273. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSilhouetteRenderer.js +0 -465
  274. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapInitRenderer.js +0 -466
  275. package/src/src/viewer/scene/model/dtx/triangles/renderers/DTXTrianglesSnapRenderer.js +0 -427
  276. package/src/src/viewer/scene/model/index.js +0 -5
  277. package/src/src/viewer/scene/model/rebucketPositions.js +0 -354
  278. package/src/src/viewer/scene/model/vbo/ScratchMemory.js +0 -63
  279. package/src/src/viewer/scene/model/vbo/VBORenderer.js +0 -646
  280. package/src/src/viewer/scene/model/vbo/batching/lines/VBOBatchingLinesLayer.js +0 -699
  281. package/src/src/viewer/scene/model/vbo/batching/lines/lib/VBOBatchingLinesBuffer.js +0 -19
  282. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLineSnapInitRenderer.js +0 -316
  283. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesColorRenderer.js +0 -114
  284. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesRenderers.js +0 -99
  285. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSilhouetteRenderer.js +0 -124
  286. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapInitRenderer.js +0 -311
  287. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOBatchingLinesSnapRenderer.js +0 -309
  288. package/src/src/viewer/scene/model/vbo/batching/lines/renderers/VBOSceneModelLineBatchingRenderer.js +0 -24
  289. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsBuffer.js +0 -20
  290. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsLayer.js +0 -718
  291. package/src/src/viewer/scene/model/vbo/batching/points/VBOBatchingPointsRenderer.js +0 -24
  292. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsColorRenderer.js +0 -168
  293. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsOcclusionRenderer.js +0 -136
  294. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickDepthRenderer.js +0 -156
  295. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsPickMeshRenderer.js +0 -148
  296. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsRenderers.js +0 -144
  297. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsShadowRenderer.js +0 -107
  298. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSilhouetteRenderer.js +0 -146
  299. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapInitRenderer.js +0 -309
  300. package/src/src/viewer/scene/model/vbo/batching/points/renderers/VBOBatchingPointsSnapRenderer.js +0 -303
  301. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesBuffer.js +0 -24
  302. package/src/src/viewer/scene/model/vbo/batching/triangles/VBOBatchingTrianglesLayer.js +0 -1257
  303. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesColorRenderer.js +0 -131
  304. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesEmphasisRenderer.js +0 -135
  305. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/EdgesRenderer.js +0 -12
  306. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/Renderers.js +0 -375
  307. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesBatchingRenderer.js +0 -34
  308. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorRenderer.js +0 -238
  309. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesColorTextureRenderer.js +0 -270
  310. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesDepthRenderer.js +0 -126
  311. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesFlatColorRenderer.js +0 -235
  312. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesNormalsRenderer.js +0 -139
  313. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesOcclusionRenderer.js +0 -125
  314. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPBRRenderer.js +0 -561
  315. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickDepthRenderer.js +0 -144
  316. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickMeshRenderer.js +0 -130
  317. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -121
  318. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -131
  319. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesShadowRenderer.js +0 -107
  320. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -136
  321. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapInitRenderer.js +0 -311
  322. package/src/src/viewer/scene/model/vbo/batching/triangles/renderers/TrianglesSnapRenderer.js +0 -308
  323. package/src/src/viewer/scene/model/vbo/float16.js +0 -760
  324. package/src/src/viewer/scene/model/vbo/instancing/lines/VBOInstancingLinesLayer.js +0 -704
  325. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesColorRenderer.js +0 -148
  326. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderer.js +0 -26
  327. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesRenderers.js +0 -139
  328. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSilhouetteRenderer.js +0 -127
  329. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapInitRenderer.js +0 -331
  330. package/src/src/viewer/scene/model/vbo/instancing/lines/renderers/VBOInstancingLinesSnapRenderer.js +0 -316
  331. package/src/src/viewer/scene/model/vbo/instancing/points/VBOInstancingPointsLayer.js +0 -728
  332. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsColorRenderer.js +0 -174
  333. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsDepthRenderer.js +0 -156
  334. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsOcclusionRenderer.js +0 -149
  335. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickDepthRenderer.js +0 -170
  336. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsPickMeshRenderer.js +0 -152
  337. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderer.js +0 -26
  338. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsRenderers.js +0 -174
  339. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsShadowRenderer.js +0 -119
  340. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSilhouetteRenderer.js +0 -154
  341. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapInitRenderer.js +0 -330
  342. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingPointsSnapRenderer.js +0 -311
  343. package/src/src/viewer/scene/model/vbo/instancing/points/renderers/VBOInstancingTrianglesRenderer.js +0 -150
  344. package/src/src/viewer/scene/model/vbo/instancing/triangles/VBOInstancingTrianglesLayer.js +0 -1190
  345. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesColorRenderer.js +0 -136
  346. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesEmphasisRenderer.js +0 -137
  347. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/EdgesRenderer.js +0 -12
  348. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/Renderers.js +0 -376
  349. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorRenderer.js +0 -253
  350. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesColorTextureRenderer.js +0 -278
  351. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesDepthRenderer.js +0 -126
  352. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatColorRenderer.js +0 -244
  353. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesFlatNormalsRenderer.js +0 -130
  354. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesInstancingRenderer.js +0 -29
  355. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesNormalsRenderer.js +0 -138
  356. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesOcclusionRenderer.js +0 -128
  357. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPBRRenderer.js +0 -561
  358. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickDepthRenderer.js +0 -149
  359. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickMeshRenderer.js +0 -136
  360. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsFlatRenderer.js +0 -130
  361. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesPickNormalsRenderer.js +0 -145
  362. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesShadowRenderer.js +0 -113
  363. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSilhouetteRenderer.js +0 -139
  364. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapInitRenderer.js +0 -342
  365. package/src/src/viewer/scene/model/vbo/instancing/triangles/renderers/TrianglesSnapRenderer.js +0 -325
  366. package/src/src/viewer/scene/nodes/Node.js +0 -1383
  367. package/src/src/viewer/scene/nodes/index.js +0 -1
  368. package/src/src/viewer/scene/paths/CubicBezierCurve.js +0 -194
  369. package/src/src/viewer/scene/paths/Curve.js +0 -183
  370. package/src/src/viewer/scene/paths/Path.js +0 -239
  371. package/src/src/viewer/scene/paths/QuadraticBezierCurve.js +0 -161
  372. package/src/src/viewer/scene/paths/SplineCurve.js +0 -133
  373. package/src/src/viewer/scene/paths/index.js +0 -5
  374. package/src/src/viewer/scene/postfx/SAO.js +0 -543
  375. package/src/src/viewer/scene/scene/Scene.js +0 -2802
  376. package/src/src/viewer/scene/sectionPlane/SectionPlane.js +0 -198
  377. package/src/src/viewer/scene/sectionPlane/SectionPlaneCache.js +0 -101
  378. package/src/src/viewer/scene/sectionPlane/index.js +0 -1
  379. package/src/src/viewer/scene/skybox/Skybox.js +0 -123
  380. package/src/src/viewer/scene/skybox/index.js +0 -1
  381. package/src/src/viewer/scene/stats.js +0 -44
  382. package/src/src/viewer/scene/utils/Cache.js +0 -29
  383. package/src/src/viewer/scene/utils/FileLoader.js +0 -161
  384. package/src/src/viewer/scene/utils/Loader.js +0 -55
  385. package/src/src/viewer/scene/utils/LoadingManager.js +0 -86
  386. package/src/src/viewer/scene/utils/Map.js +0 -45
  387. package/src/src/viewer/scene/utils/Queue.js +0 -56
  388. package/src/src/viewer/scene/utils/WorkerPool.js +0 -73
  389. package/src/src/viewer/scene/utils/index.js +0 -6
  390. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js +0 -650
  391. package/src/src/viewer/scene/utils/textureTranscoders/KTX2TextureTranscoder/index.js +0 -1
  392. package/src/src/viewer/scene/utils/textureTranscoders/TextureTranscoder.js +0 -31
  393. package/src/src/viewer/scene/utils/textureTranscoders/index.js +0 -2
  394. package/src/src/viewer/scene/utils.js +0 -453
  395. package/src/src/viewer/scene/viewport/Viewport.js +0 -212
  396. package/src/src/viewer/scene/webgl/ArrayBuf.js +0 -121
  397. package/src/src/viewer/scene/webgl/Attribute.js +0 -23
  398. package/src/src/viewer/scene/webgl/Drawable.js +0 -270
  399. package/src/src/viewer/scene/webgl/FrameContext.js +0 -313
  400. package/src/src/viewer/scene/webgl/PickResult.js +0 -364
  401. package/src/src/viewer/scene/webgl/Pickable.js +0 -69
  402. package/src/src/viewer/scene/webgl/Program.js +0 -181
  403. package/src/src/viewer/scene/webgl/RenderBuffer.js +0 -378
  404. package/src/src/viewer/scene/webgl/RenderBufferManager.js +0 -34
  405. package/src/src/viewer/scene/webgl/RenderFlags.js +0 -203
  406. package/src/src/viewer/scene/webgl/RenderState.js +0 -40
  407. package/src/src/viewer/scene/webgl/Renderer.js +0 -1781
  408. package/src/src/viewer/scene/webgl/Sampler.js +0 -18
  409. package/src/src/viewer/scene/webgl/Shader.js +0 -49
  410. package/src/src/viewer/scene/webgl/Texture2D.js +0 -442
  411. package/src/src/viewer/scene/webgl/convertConstant.js +0 -244
  412. package/src/src/viewer/scene/webgl/getExtension.js +0 -32
  413. package/src/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +0 -214
  414. package/src/src/viewer/scene/webgl/occlusion/OcclusionTester.js +0 -426
  415. package/src/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -324
  416. package/src/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -376
  417. package/src/src/viewer/scene/webgl/webglEnums.js +0 -61
  418. package/src/src/viewer/scene/webglInfo.js +0 -47
@@ -1,1322 +0,0 @@
1
- import {math} from "../../../math/math.js";
2
- import {RenderState} from "../../../webgl/RenderState.js";
3
- import {Configs} from "../../../../Configs.js";
4
- import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js';
5
- import {RENDER_PASSES} from '../../RENDER_PASSES.js';
6
- import {getRenderers} from "./renderers/DTXTrianglesRenderers.js";
7
- import {DTXTrianglesBuffer} from "./lib/DTXTrianglesBuffer.js";
8
- import {DTXTrianglesState} from "./lib/DTXTrianglesState.js"
9
- import {dataTextureRamStats} from "./lib/dataTextureRamStats.js";
10
- import {DTXTrianglesTextureFactory} from "./lib/DTXTrianglesTextureFactory.js";
11
-
12
- const configs = new Configs();
13
-
14
- /**
15
- * 12-bits allowed for object ids.
16
- * Limits the per-object texture height in the layer.
17
- */
18
- const MAX_NUMBER_OF_OBJECTS_IN_LAYER = (1 << 16);
19
-
20
- /**
21
- * 4096 is max data texture height.
22
- * Limits the aggregated geometry texture height in the layer.
23
- */
24
- const MAX_DATA_TEXTURE_HEIGHT = configs.maxDataTextureHeight;
25
-
26
- /**
27
- * Align `indices` and `edgeIndices` memory layout to 8 elements.
28
- *
29
- * Used as an optimization for the `...portionIds...` texture, so it
30
- * can just be stored 1 out of 8 `portionIds` corresponding to a given
31
- * `triangle-index` or `edge-index`.
32
- */
33
- const INDICES_EDGE_INDICES_ALIGNEMENT_SIZE = 8;
34
-
35
- /**
36
- * Number of maximum allowed per-object flags update per render frame
37
- * before switching to batch update mode.
38
- */
39
- const MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE = 10;
40
-
41
- const tempMat4a = new Float32Array(16);
42
- const tempUint8Array4 = new Uint8Array(4);
43
- const tempFloat32Array3 = new Float32Array(3);
44
-
45
- let numLayers = 0;
46
-
47
- const DEFAULT_MATRIX = math.identityMat4();
48
-
49
- /**
50
- * @private
51
- */
52
- export class DTXTrianglesLayer {
53
-
54
- constructor(model, cfg) {
55
-
56
- console.info("Creating DTXTrianglesLayer");
57
-
58
- dataTextureRamStats.numberOfLayers++;
59
-
60
- this._layerNumber = numLayers++;
61
- this.sortId = `TriDTX-${this._layerNumber}`; // State sorting key.
62
- this.layerIndex = cfg.layerIndex; // Index of this TrianglesDataTextureLayer in {@link SceneModel#_layerList}.
63
-
64
- this._renderers = getRenderers(model.scene);
65
- this.model = model;
66
- this._buffer = new DTXTrianglesBuffer();
67
- this._dtxState = new DTXTrianglesState();
68
- this._dtxTextureFactory = new DTXTrianglesTextureFactory();
69
-
70
- this._state = new RenderState({
71
- origin: math.vec3(cfg.origin),
72
- metallicRoughnessBuf: null,
73
- textureState: this._dtxState,
74
- numIndices8Bits: 0,
75
- numIndices16Bits: 0,
76
- numIndices32Bits: 0,
77
- numEdgeIndices8Bits: 0,
78
- numEdgeIndices16Bits: 0,
79
- numEdgeIndices32Bits: 0,
80
- numVertices: 0,
81
- });
82
-
83
- this._numPortions = 0; // These counts are used to avoid unnecessary render passes
84
- this._numVisibleLayerPortions = 0;
85
- this._numTransparentLayerPortions = 0;
86
- this._numXRayedLayerPortions = 0;
87
- this._numSelectedLayerPortions = 0;
88
- this._numHighlightedLayerPortions = 0;
89
- this._numClippableLayerPortions = 0;
90
- this._numEdgesLayerPortions = 0;
91
- this._numPickableLayerPortions = 0;
92
- this._numCulledLayerPortions = 0;
93
-
94
- this._subPortions = [];
95
-
96
- /**
97
- * Due to `index rebucketting` process in ```prepareMeshGeometry``` function, it's possible that a single
98
- * portion is expanded to more than 1 real sub-portion.
99
- *
100
- * This Array tracks the mapping between:
101
- *
102
- * - external `portionIds` as seen by consumers of this class.
103
- * - internal `sub-portionIds` actually managed by this class.
104
- *
105
- * The outer index of this array is the externally seen `portionId`.
106
- * The inner value of the array, are `sub-portionIds` corresponding to the `portionId`.
107
- */
108
- this._portionToSubPortionsMap = [];
109
-
110
- this._bucketGeometries = {};
111
-
112
- this._meshes = [];
113
-
114
- /**
115
- * The axis-aligned World-space boundary of this TrianglesDataTextureLayer's positions.
116
- */
117
- this._aabb = math.collapseAABB3();
118
- this.aabbDirty = true;
119
-
120
- /**
121
- * The number of updates in the current frame;
122
- */
123
- this._numUpdatesInFrame = 0;
124
-
125
- this._finalized = false;
126
- }
127
-
128
- get aabb() {
129
- if (this.aabbDirty) {
130
- math.collapseAABB3(this._aabb);
131
- for (let i = 0, len = this._meshes.length; i < len; i++) {
132
- math.expandAABB3(this._aabb, this._meshes[i].aabb);
133
- }
134
- this.aabbDirty = false;
135
- }
136
- return this._aabb;
137
- }
138
-
139
- /**
140
- * Returns whether the ```TrianglesDataTextureLayer``` has room for more portions.
141
- *
142
- * @param {object} portionCfg An object containing the geometrical data (`positions`, `indices`, `edgeIndices`) for the portion.
143
- * @returns {Boolean} Wheter the requested portion can be created
144
- */
145
- canCreatePortion(portionCfg) {
146
- if (this._finalized) {
147
- throw "Already finalized";
148
- }
149
- const numNewPortions = portionCfg.buckets.length;
150
- if ((this._numPortions + numNewPortions) > MAX_NUMBER_OF_OBJECTS_IN_LAYER) {
151
- dataTextureRamStats.cannotCreatePortion.because10BitsObjectId++;
152
- }
153
- let retVal = (this._numPortions + numNewPortions) <= MAX_NUMBER_OF_OBJECTS_IN_LAYER;
154
- const bucketIndex = 0; // TODO: Is this a bug?
155
- const bucketGeometryId = portionCfg.geometryId !== undefined && portionCfg.geometryId !== null
156
- ? `${portionCfg.geometryId}#${bucketIndex}`
157
- : `${portionCfg.id}#${bucketIndex}`;
158
- const alreadyHasPortionGeometry = this._bucketGeometries[bucketGeometryId];
159
- if (!alreadyHasPortionGeometry) {
160
- const maxIndicesOfAnyBits = Math.max(this._state.numIndices8Bits, this._state.numIndices16Bits, this._state.numIndices32Bits,);
161
- let numVertices = 0;
162
- let numIndices = 0;
163
- portionCfg.buckets.forEach(bucket => {
164
- numVertices += bucket.positionsCompressed.length / 3;
165
- numIndices += bucket.indices.length / 3;
166
- });
167
- if ((this._state.numVertices + numVertices) > MAX_DATA_TEXTURE_HEIGHT * 4096 ||
168
- (maxIndicesOfAnyBits + numIndices) > MAX_DATA_TEXTURE_HEIGHT * 4096) {
169
- dataTextureRamStats.cannotCreatePortion.becauseTextureSize++;
170
- }
171
- retVal &&=
172
- (this._state.numVertices + numVertices) <= MAX_DATA_TEXTURE_HEIGHT * 4096 &&
173
- (maxIndicesOfAnyBits + numIndices) <= MAX_DATA_TEXTURE_HEIGHT * 4096;
174
- }
175
- return retVal;
176
- }
177
-
178
- /**
179
- * Creates a new portion within this TrianglesDataTextureLayer, returns the new portion ID.
180
- *
181
- * Gives the portion the specified geometry, color and matrix.
182
- *
183
- * @param mesh The SceneModelMesh that owns the portion
184
- * @param portionCfg.positionsCompressed Flat float Local-space positionsCompressed array.
185
- * @param [portionCfg.normals] Flat float normals array.
186
- * @param [portionCfg.colors] Flat float colors array.
187
- * @param portionCfg.indices Flat int indices array.
188
- * @param [portionCfg.edgeIndices] Flat int edges indices array.
189
- * @param portionCfg.color Quantized RGB color [0..255,0..255,0..255,0..255]
190
- * @param portionCfg.metallic Metalness factor [0..255]
191
- * @param portionCfg.roughness Roughness factor [0..255]
192
- * @param portionCfg.opacity Opacity [0..255]
193
- * @param [portionCfg.meshMatrix] Flat float 4x4 matrix - transforms the portion within the coordinate system that's local to the SceneModel
194
- * @param portionCfg.worldAABB Flat float AABB World-space AABB
195
- * @param portionCfg.pickColor Quantized pick color
196
- * @returns {number} Portion ID
197
- */
198
- createPortion(mesh, portionCfg) {
199
- if (this._finalized) {
200
- throw "Already finalized";
201
- }
202
- const subPortionIds = [];
203
- // const portionAABB = portionCfg.worldAABB;
204
- portionCfg.buckets.forEach((bucket, bucketIndex) => {
205
- const bucketGeometryId = portionCfg.geometryId !== undefined && portionCfg.geometryId !== null
206
- ? `${portionCfg.geometryId}#${bucketIndex}`
207
- : `${portionCfg.id}#${bucketIndex}`;
208
- let bucketGeometry = this._bucketGeometries[bucketGeometryId];
209
- if (!bucketGeometry) {
210
- bucketGeometry = this._createBucketGeometry(portionCfg, bucket);
211
- this._bucketGeometries[bucketGeometryId] = bucketGeometry;
212
- }
213
- // const subPortionAABB = math.collapseAABB3(tempAABB3b);
214
- const subPortionId = this._createSubPortion(portionCfg, bucketGeometry, bucket);
215
- //math.expandAABB3(portionAABB, subPortionAABB);
216
- subPortionIds.push(subPortionId);
217
- });
218
- const portionId = this._portionToSubPortionsMap.length;
219
- this._portionToSubPortionsMap.push(subPortionIds);
220
- this.model.numPortions++;
221
- this._meshes.push(mesh);
222
- return portionId;
223
- }
224
-
225
- _createBucketGeometry(portionCfg, bucket) {
226
-
227
- // Indices alignement
228
- // This will make every mesh consume a multiple of INDICES_EDGE_INDICES_ALIGNEMENT_SIZE
229
- // array items for storing the triangles of the mesh, and it supports:
230
- // - a memory optimization of factor INDICES_EDGE_INDICES_ALIGNEMENT_SIZE
231
- // - in exchange for a small RAM overhead
232
- // (by adding some padding until a size that is multiple of INDICES_EDGE_INDICES_ALIGNEMENT_SIZE)
233
-
234
- if (bucket.indices) {
235
- const alignedIndicesLen = Math.ceil((bucket.indices.length / 3) / INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) * INDICES_EDGE_INDICES_ALIGNEMENT_SIZE * 3;
236
- dataTextureRamStats.overheadSizeAlignementIndices += 2 * (alignedIndicesLen - bucket.indices.length);
237
- const alignedIndices = new Uint32Array(alignedIndicesLen);
238
- alignedIndices.fill(0);
239
- alignedIndices.set(bucket.indices);
240
- bucket.indices = alignedIndices;
241
- }
242
-
243
- // EdgeIndices alignement
244
- // This will make every mesh consume a multiple of INDICES_EDGE_INDICES_ALIGNEMENT_SIZE
245
- // array items for storing the edges of the mesh, and it supports:
246
- // - a memory optimization of factor INDICES_EDGE_INDICES_ALIGNEMENT_SIZE
247
- // - in exchange for a small RAM overhead
248
- // (by adding some padding until a size that is multiple of INDICES_EDGE_INDICES_ALIGNEMENT_SIZE)
249
-
250
- if (bucket.edgeIndices) {
251
- const alignedEdgeIndicesLen = Math.ceil((bucket.edgeIndices.length / 2) / INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) * INDICES_EDGE_INDICES_ALIGNEMENT_SIZE * 2;
252
- dataTextureRamStats.overheadSizeAlignementEdgeIndices += 2 * (alignedEdgeIndicesLen - bucket.edgeIndices.length);
253
- const alignedEdgeIndices = new Uint32Array(alignedEdgeIndicesLen);
254
- alignedEdgeIndices.fill(0);
255
- alignedEdgeIndices.set(bucket.edgeIndices);
256
- bucket.edgeIndices = alignedEdgeIndices;
257
- }
258
-
259
- const positionsCompressed = bucket.positionsCompressed;
260
- const indices = bucket.indices;
261
- const edgeIndices = bucket.edgeIndices;
262
- const buffer = this._buffer;
263
-
264
- buffer.positionsCompressed.push(positionsCompressed)
265
- const vertexBase = buffer.lenPositionsCompressed / 3;
266
- const numVertices = positionsCompressed.length / 3;
267
- buffer.lenPositionsCompressed += positionsCompressed.length;
268
-
269
- let indicesBase;
270
- let numTriangles = 0;
271
- if (indices) {
272
- numTriangles = indices.length / 3;
273
- let indicesBuffer;
274
- if (numVertices <= (1 << 8)) {
275
- indicesBuffer = buffer.indices8Bits;
276
- indicesBase = buffer.lenIndices8Bits / 3;
277
- buffer.lenIndices8Bits += indices.length;
278
- } else if (numVertices <= (1 << 16)) {
279
- indicesBuffer = buffer.indices16Bits;
280
- indicesBase = buffer.lenIndices16Bits / 3;
281
- buffer.lenIndices16Bits += indices.length;
282
- } else {
283
- indicesBuffer = buffer.indices32Bits;
284
- indicesBase = buffer.lenIndices32Bits / 3;
285
- buffer.lenIndices32Bits += indices.length;
286
- }
287
- indicesBuffer.push(indices);
288
- }
289
-
290
- let edgeIndicesBase;
291
- let numEdges = 0;
292
- if (edgeIndices) {
293
- numEdges = edgeIndices.length / 2;
294
- let edgeIndicesBuffer;
295
- if (numVertices <= (1 << 8)) {
296
- edgeIndicesBuffer = buffer.edgeIndices8Bits;
297
- edgeIndicesBase = buffer.lenEdgeIndices8Bits / 2;
298
- buffer.lenEdgeIndices8Bits += edgeIndices.length;
299
- } else if (numVertices <= (1 << 16)) {
300
- edgeIndicesBuffer = buffer.edgeIndices16Bits;
301
- edgeIndicesBase = buffer.lenEdgeIndices16Bits / 2;
302
- buffer.lenEdgeIndices16Bits += edgeIndices.length;
303
- } else {
304
- edgeIndicesBuffer = buffer.edgeIndices32Bits;
305
- edgeIndicesBase = buffer.lenEdgeIndices32Bits / 2;
306
- buffer.lenEdgeIndices32Bits += edgeIndices.length;
307
- }
308
- edgeIndicesBuffer.push(edgeIndices);
309
- }
310
-
311
- this._state.numVertices += numVertices;
312
-
313
- dataTextureRamStats.numberOfGeometries++;
314
-
315
- const bucketGeometry = {
316
- vertexBase,
317
- numVertices,
318
- numTriangles,
319
- numEdges,
320
- indicesBase,
321
- edgeIndicesBase
322
- };
323
-
324
- return bucketGeometry;
325
- }
326
-
327
- _createSubPortion(portionCfg, bucketGeometry, bucket, subPortionAABB) {
328
-
329
- const color = portionCfg.color;
330
- const metallic = portionCfg.metallic;
331
- const roughness = portionCfg.roughness;
332
- const colors = portionCfg.colors;
333
- const opacity = portionCfg.opacity;
334
- const meshMatrix = portionCfg.meshMatrix;
335
- const pickColor = portionCfg.pickColor;
336
- const buffer = this._buffer;
337
- const state = this._state;
338
-
339
- buffer.perObjectPositionsDecodeMatrices.push(portionCfg.positionsDecodeMatrix);
340
- buffer.perObjectInstancePositioningMatrices.push(meshMatrix || DEFAULT_MATRIX);
341
-
342
- buffer.perObjectSolid.push(!!portionCfg.solid);
343
-
344
- if (colors) {
345
- buffer.perObjectColors.push([colors[0] * 255, colors[1] * 255, colors[2] * 255, 255]);
346
- } else if (color) { // Color is pre-quantized by SceneModel
347
- buffer.perObjectColors.push([color[0], color[1], color[2], opacity]);
348
- }
349
-
350
- buffer.perObjectPickColors.push(pickColor);
351
- buffer.perObjectVertexBases.push(bucketGeometry.vertexBase);
352
-
353
- {
354
- let currentNumIndices;
355
- if (bucketGeometry.numVertices <= (1 << 8)) {
356
- currentNumIndices = state.numIndices8Bits;
357
- } else if (bucketGeometry.numVertices <= (1 << 16)) {
358
- currentNumIndices = state.numIndices16Bits;
359
- } else {
360
- currentNumIndices = state.numIndices32Bits;
361
- }
362
- buffer.perObjectIndexBaseOffsets.push(currentNumIndices / 3 - bucketGeometry.indicesBase);
363
- }
364
-
365
- {
366
- let currentNumEdgeIndices;
367
- if (bucketGeometry.numVertices <= (1 << 8)) {
368
- currentNumEdgeIndices = state.numEdgeIndices8Bits;
369
- } else if (bucketGeometry.numVertices <= (1 << 16)) {
370
- currentNumEdgeIndices = state.numEdgeIndices16Bits;
371
- } else {
372
- currentNumEdgeIndices = state.numEdgeIndices32Bits;
373
- }
374
- buffer.perObjectEdgeIndexBaseOffsets.push(currentNumEdgeIndices / 2 - bucketGeometry.edgeIndicesBase);
375
- }
376
-
377
- const subPortionId = this._subPortions.length;
378
- if (bucketGeometry.numTriangles > 0) {
379
- let numIndices = bucketGeometry.numTriangles * 3;
380
- let indicesPortionIdBuffer;
381
- if (bucketGeometry.numVertices <= (1 << 8)) {
382
- indicesPortionIdBuffer = buffer.perTriangleNumberPortionId8Bits;
383
- state.numIndices8Bits += numIndices;
384
- dataTextureRamStats.totalPolygons8Bits += bucketGeometry.numTriangles;
385
- } else if (bucketGeometry.numVertices <= (1 << 16)) {
386
- indicesPortionIdBuffer = buffer.perTriangleNumberPortionId16Bits;
387
- state.numIndices16Bits += numIndices;
388
- dataTextureRamStats.totalPolygons16Bits += bucketGeometry.numTriangles;
389
- } else {
390
- indicesPortionIdBuffer = buffer.perTriangleNumberPortionId32Bits;
391
- state.numIndices32Bits += numIndices;
392
- dataTextureRamStats.totalPolygons32Bits += bucketGeometry.numTriangles;
393
- }
394
- dataTextureRamStats.totalPolygons += bucketGeometry.numTriangles;
395
- for (let i = 0; i < bucketGeometry.numTriangles; i += INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) {
396
- indicesPortionIdBuffer.push(subPortionId);
397
- }
398
- }
399
-
400
- if (bucketGeometry.numEdges > 0) {
401
- let numEdgeIndices = bucketGeometry.numEdges * 2;
402
- let edgeIndicesPortionIdBuffer;
403
- if (bucketGeometry.numVertices <= (1 << 8)) {
404
- edgeIndicesPortionIdBuffer = buffer.perEdgeNumberPortionId8Bits;
405
- state.numEdgeIndices8Bits += numEdgeIndices;
406
- dataTextureRamStats.totalEdges8Bits += bucketGeometry.numEdges;
407
- } else if (bucketGeometry.numVertices <= (1 << 16)) {
408
- edgeIndicesPortionIdBuffer = buffer.perEdgeNumberPortionId16Bits;
409
- state.numEdgeIndices16Bits += numEdgeIndices;
410
- dataTextureRamStats.totalEdges16Bits += bucketGeometry.numEdges;
411
- } else {
412
- edgeIndicesPortionIdBuffer = buffer.perEdgeNumberPortionId32Bits;
413
- state.numEdgeIndices32Bits += numEdgeIndices;
414
- dataTextureRamStats.totalEdges32Bits += bucketGeometry.numEdges;
415
- }
416
- dataTextureRamStats.totalEdges += bucketGeometry.numEdges;
417
- for (let i = 0; i < bucketGeometry.numEdges; i += INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) {
418
- edgeIndicesPortionIdBuffer.push(subPortionId);
419
- }
420
- }
421
-
422
- // buffer.perObjectOffsets.push([0, 0, 0]);
423
-
424
- this._subPortions.push({
425
- // vertsBase: vertsIndex,
426
- numVertices: bucketGeometry.numTriangles
427
- });
428
-
429
- this._numPortions++;
430
-
431
- dataTextureRamStats.numberOfPortions++;
432
-
433
- return subPortionId;
434
- }
435
-
436
- /**
437
- * Builds data textures from the appended geometries and loads them into the GPU.
438
- *
439
- * No more portions can then be created.
440
- */
441
- finalize() {
442
-
443
- if (this._finalized) {
444
- return;
445
- }
446
-
447
- const state = this._state;
448
- const textureState = this._dtxState;
449
- const gl = this.model.scene.canvas.gl;
450
- const buffer = this._buffer;
451
-
452
- state.gl = gl;
453
- textureState.texturePerObjectColorsAndFlags = this._dtxTextureFactory.createTextureForColorsAndFlags(
454
- gl,
455
- buffer.perObjectColors,
456
- buffer.perObjectPickColors,
457
- buffer.perObjectVertexBases,
458
- buffer.perObjectIndexBaseOffsets,
459
- buffer.perObjectEdgeIndexBaseOffsets,
460
- buffer.perObjectSolid);
461
-
462
- textureState.texturePerObjectInstanceMatrices
463
- = this._dtxTextureFactory.createTextureForInstancingMatrices(gl, buffer.perObjectInstancePositioningMatrices);
464
-
465
- textureState.texturePerObjectPositionsDecodeMatrix
466
- = this._dtxTextureFactory.createTextureForPositionsDecodeMatrices(
467
- gl,
468
- buffer.perObjectPositionsDecodeMatrices);
469
-
470
- textureState.texturePerVertexIdCoordinates = this._dtxTextureFactory.createTextureForPositions(
471
- gl,
472
- buffer.positionsCompressed,
473
- buffer.lenPositionsCompressed);
474
-
475
- textureState.texturePerPolygonIdPortionIds8Bits = this._dtxTextureFactory.createTextureForPackedPortionIds(
476
- gl,
477
- buffer.perTriangleNumberPortionId8Bits);
478
-
479
- textureState.texturePerPolygonIdPortionIds16Bits = this._dtxTextureFactory.createTextureForPackedPortionIds(
480
- gl,
481
- buffer.perTriangleNumberPortionId16Bits);
482
-
483
- textureState.texturePerPolygonIdPortionIds32Bits = this._dtxTextureFactory.createTextureForPackedPortionIds(
484
- gl,
485
- buffer.perTriangleNumberPortionId32Bits);
486
-
487
- if (buffer.perEdgeNumberPortionId8Bits.length > 0) {
488
- textureState.texturePerEdgeIdPortionIds8Bits = this._dtxTextureFactory.createTextureForPackedPortionIds(
489
- gl,
490
- buffer.perEdgeNumberPortionId8Bits);
491
- }
492
-
493
- if (buffer.perEdgeNumberPortionId16Bits.length > 0) {
494
- textureState.texturePerEdgeIdPortionIds16Bits = this._dtxTextureFactory.createTextureForPackedPortionIds(
495
- gl,
496
- buffer.perEdgeNumberPortionId16Bits);
497
- }
498
-
499
- if (buffer.perEdgeNumberPortionId32Bits.length > 0) {
500
- textureState.texturePerEdgeIdPortionIds32Bits = this._dtxTextureFactory.createTextureForPackedPortionIds(
501
- gl,
502
- buffer.perEdgeNumberPortionId32Bits);
503
- }
504
-
505
- if (buffer.lenIndices8Bits > 0) {
506
- textureState.texturePerPolygonIdIndices8Bits = this._dtxTextureFactory.createTextureFor8BitIndices(
507
- gl,
508
- buffer.indices8Bits, buffer.lenIndices8Bits);
509
- }
510
-
511
- if (buffer.lenIndices16Bits > 0) {
512
- textureState.texturePerPolygonIdIndices16Bits = this._dtxTextureFactory.createTextureFor16BitIndices(
513
- gl,
514
- buffer.indices16Bits, buffer.lenIndices16Bits);
515
- }
516
-
517
- if (buffer.lenIndices32Bits > 0) {
518
- textureState.texturePerPolygonIdIndices32Bits = this._dtxTextureFactory.createTextureFor32BitIndices(
519
- gl,
520
- buffer.indices32Bits, buffer.lenIndices32Bits);
521
- }
522
-
523
- if (buffer.lenEdgeIndices8Bits > 0) {
524
- textureState.texturePerPolygonIdEdgeIndices8Bits = this._dtxTextureFactory.createTextureFor8BitsEdgeIndices(
525
- gl,
526
- buffer.edgeIndices8Bits, buffer.lenEdgeIndices8Bits);
527
- }
528
-
529
- if (buffer.lenEdgeIndices16Bits > 0) {
530
- textureState.texturePerPolygonIdEdgeIndices16Bits = this._dtxTextureFactory.createTextureFor16BitsEdgeIndices(
531
- gl,
532
- buffer.edgeIndices16Bits, buffer.lenEdgeIndices16Bits);
533
- }
534
-
535
- if (buffer.lenEdgeIndices32Bits > 0) {
536
- textureState.texturePerPolygonIdEdgeIndices32Bits = this._dtxTextureFactory.createTextureFor32BitsEdgeIndices(
537
- gl,
538
- buffer.edgeIndices32Bits, buffer.lenEdgeIndices32Bits);
539
- }
540
-
541
- textureState.finalize();
542
-
543
- // Free up memory
544
- this._buffer = null;
545
- this._bucketGeometries = {};
546
- this._finalized = true;
547
- this._deferredSetFlagsDirty = false; //
548
-
549
- this._onSceneRendering = this.model.scene.on("rendering", () => {
550
- if (this._deferredSetFlagsDirty) {
551
- this._uploadDeferredFlags();
552
- }
553
- this._numUpdatesInFrame = 0;
554
- });
555
- }
556
-
557
- isEmpty() {
558
- return this._numPortions === 0;
559
- }
560
-
561
- initFlags(portionId, flags, meshTransparent) {
562
- if (flags & ENTITY_FLAGS.VISIBLE) {
563
- this._numVisibleLayerPortions++;
564
- this.model.numVisibleLayerPortions++;
565
- }
566
- if (flags & ENTITY_FLAGS.HIGHLIGHTED) {
567
- this._numHighlightedLayerPortions++;
568
- this.model.numHighlightedLayerPortions++;
569
- }
570
- if (flags & ENTITY_FLAGS.XRAYED) {
571
- this._numXRayedLayerPortions++;
572
- this.model.numXRayedLayerPortions++;
573
- }
574
- if (flags & ENTITY_FLAGS.SELECTED) {
575
- this._numSelectedLayerPortions++;
576
- this.model.numSelectedLayerPortions++;
577
- }
578
- if (flags & ENTITY_FLAGS.CLIPPABLE) {
579
- this._numClippableLayerPortions++;
580
- this.model.numClippableLayerPortions++;
581
- }
582
- if (flags & ENTITY_FLAGS.EDGES) {
583
- this._numEdgesLayerPortions++;
584
- this.model.numEdgesLayerPortions++;
585
- }
586
- if (flags & ENTITY_FLAGS.PICKABLE) {
587
- this._numPickableLayerPortions++;
588
- this.model.numPickableLayerPortions++;
589
- }
590
- if (flags & ENTITY_FLAGS.CULLED) {
591
- this._numCulledLayerPortions++;
592
- this.model.numCulledLayerPortions++;
593
- }
594
- if (meshTransparent) {
595
- this._numTransparentLayerPortions++;
596
- this.model.numTransparentLayerPortions++;
597
- }
598
- const deferred = true;
599
- this._setFlags(portionId, flags, meshTransparent, deferred);
600
- this._setFlags2(portionId, flags, deferred);
601
- }
602
-
603
- flushInitFlags() {
604
- this._setDeferredFlags();
605
- this._setDeferredFlags2();
606
- }
607
-
608
- setVisible(portionId, flags, transparent) {
609
- if (!this._finalized) {
610
- throw "Not finalized";
611
- }
612
- if (flags & ENTITY_FLAGS.VISIBLE) {
613
- this._numVisibleLayerPortions++;
614
- this.model.numVisibleLayerPortions++;
615
- } else {
616
- this._numVisibleLayerPortions--;
617
- this.model.numVisibleLayerPortions--;
618
- }
619
- this._setFlags(portionId, flags, transparent);
620
- }
621
-
622
- setHighlighted(portionId, flags, transparent) {
623
- if (!this._finalized) {
624
- throw "Not finalized";
625
- }
626
- if (flags & ENTITY_FLAGS.HIGHLIGHTED) {
627
- this._numHighlightedLayerPortions++;
628
- this.model.numHighlightedLayerPortions++;
629
- } else {
630
- this._numHighlightedLayerPortions--;
631
- this.model.numHighlightedLayerPortions--;
632
- }
633
- this._setFlags(portionId, flags, transparent);
634
- }
635
-
636
- setXRayed(portionId, flags, transparent) {
637
- if (!this._finalized) {
638
- throw "Not finalized";
639
- }
640
- if (flags & ENTITY_FLAGS.XRAYED) {
641
- this._numXRayedLayerPortions++;
642
- this.model.numXRayedLayerPortions++;
643
- } else {
644
- this._numXRayedLayerPortions--;
645
- this.model.numXRayedLayerPortions--;
646
- }
647
- this._setFlags(portionId, flags, transparent);
648
- }
649
-
650
- setSelected(portionId, flags, transparent) {
651
- if (!this._finalized) {
652
- throw "Not finalized";
653
- }
654
- if (flags & ENTITY_FLAGS.SELECTED) {
655
- this._numSelectedLayerPortions++;
656
- this.model.numSelectedLayerPortions++;
657
- } else {
658
- this._numSelectedLayerPortions--;
659
- this.model.numSelectedLayerPortions--;
660
- }
661
- this._setFlags(portionId, flags, transparent);
662
- }
663
-
664
- setEdges(portionId, flags, transparent) {
665
- if (!this._finalized) {
666
- throw "Not finalized";
667
- }
668
- if (flags & ENTITY_FLAGS.EDGES) {
669
- this._numEdgesLayerPortions++;
670
- this.model.numEdgesLayerPortions++;
671
- } else {
672
- this._numEdgesLayerPortions--;
673
- this.model.numEdgesLayerPortions--;
674
- }
675
- this._setFlags(portionId, flags, transparent);
676
- }
677
-
678
- setClippable(portionId, flags) {
679
- if (!this._finalized) {
680
- throw "Not finalized";
681
- }
682
- if (flags & ENTITY_FLAGS.CLIPPABLE) {
683
- this._numClippableLayerPortions++;
684
- this.model.numClippableLayerPortions++;
685
- } else {
686
- this._numClippableLayerPortions--;
687
- this.model.numClippableLayerPortions--;
688
- }
689
- this._setFlags2(portionId, flags);
690
- }
691
-
692
- /**
693
- * This will _start_ a "set-flags transaction".
694
- *
695
- * After invoking this method, calling setFlags/setFlags2 will not update
696
- * the colors+flags texture but only store the new flags/flag2 in the
697
- * colors+flags texture data array.
698
- *
699
- * After invoking this method, and when all desired setFlags/setFlags2 have
700
- * been called on needed portions of the layer, invoke `_uploadDeferredFlags`
701
- * to actually upload the data array into the texture.
702
- *
703
- * In massive "set-flags" scenarios like VFC or LOD mechanisms, the combination of
704
- * `_beginDeferredFlags` + `_uploadDeferredFlags`brings a speed-up of
705
- * up to 80x when e.g. objects are massively (un)culled 🚀.
706
- */
707
- _beginDeferredFlags() {
708
- this._deferredSetFlagsActive = true;
709
- }
710
-
711
- /**
712
- * This will _commit_ a "set-flags transaction".
713
- *
714
- * Invoking this method will update the colors+flags texture data with new
715
- * flags/flags2 set since the previous invocation of `_beginDeferredFlags`.
716
- */
717
- _uploadDeferredFlags() {
718
- this._deferredSetFlagsActive = false;
719
- if (!this._deferredSetFlagsDirty) {
720
- return;
721
- }
722
- this._deferredSetFlagsDirty = false;
723
- const gl = this.model.scene.canvas.gl;
724
- const textureState = this._dtxState;
725
- gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectColorsAndFlags._texture);
726
- gl.texSubImage2D(
727
- gl.TEXTURE_2D,
728
- 0, // level
729
- 0, // xoffset
730
- 0, // yoffset
731
- textureState.texturePerObjectColorsAndFlags._textureWidth, // width
732
- textureState.texturePerObjectColorsAndFlags._textureHeight, // width
733
- gl.RGBA_INTEGER,
734
- gl.UNSIGNED_BYTE,
735
- textureState.texturePerObjectColorsAndFlags._textureData
736
- );
737
- // gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectInstanceMatrices._texture);
738
- // gl.texSubImage2D(
739
- // gl.TEXTURE_2D,
740
- // 0, // level
741
- // 0, // xoffset
742
- // 0, // yoffset
743
- // textureState.texturePerObjectInstanceMatrices._textureWidth, // width
744
- // textureState.texturePerObjectInstanceMatrices._textureHeight, // width
745
- // gl.RGB,
746
- // gl.FLOAT,
747
- // textureState.texturePerObjectInstanceMatrices._textureData
748
- // );
749
- }
750
-
751
- setCulled(portionId, flags, transparent) {
752
- if (!this._finalized) {
753
- throw "Not finalized";
754
- }
755
- if (flags & ENTITY_FLAGS.CULLED) {
756
- this._numCulledLayerPortions += this._portionToSubPortionsMap[portionId].length;
757
- this.model.numCulledLayerPortions++;
758
- } else {
759
- this._numCulledLayerPortions -= this._portionToSubPortionsMap[portionId].length;
760
- this.model.numCulledLayerPortions--;
761
- }
762
- this._setFlags(portionId, flags, transparent);
763
- }
764
-
765
- setCollidable(portionId, flags) {
766
- if (!this._finalized) {
767
- throw "Not finalized";
768
- }
769
- }
770
-
771
- setPickable(portionId, flags, transparent) {
772
- if (!this._finalized) {
773
- throw "Not finalized";
774
- }
775
- if (flags & ENTITY_FLAGS.PICKABLE) {
776
- this._numPickableLayerPortions++;
777
- this.model.numPickableLayerPortions++;
778
- } else {
779
- this._numPickableLayerPortions--;
780
- this.model.numPickableLayerPortions--;
781
- }
782
- this._setFlags(portionId, flags, transparent);
783
- }
784
-
785
- setColor(portionId, color) {
786
- const subPortionIds = this._portionToSubPortionsMap[portionId];
787
- for (let i = 0, len = subPortionIds.length; i < len; i++) {
788
- this._subPortionSetColor(subPortionIds[i], color);
789
- }
790
- }
791
-
792
- _subPortionSetColor(subPortionId, color) {
793
- if (!this._finalized) {
794
- throw "Not finalized";
795
- }
796
- // Color
797
- const textureState = this._dtxState;
798
- const gl = this.model.scene.canvas.gl;
799
- tempUint8Array4 [0] = color[0];
800
- tempUint8Array4 [1] = color[1];
801
- tempUint8Array4 [2] = color[2];
802
- tempUint8Array4 [3] = color[3];
803
- // object colors
804
- textureState.texturePerObjectColorsAndFlags._textureData.set(tempUint8Array4, subPortionId * 32);
805
- if (this._deferredSetFlagsActive) {
806
- console.info("_subPortionSetColor defer");
807
- this._deferredSetFlagsDirty = true;
808
- return;
809
- }
810
- if (++this._numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) {
811
- this._beginDeferredFlags(); // Subsequent flags updates now deferred
812
- }
813
- console.info("_subPortionSetColor write through");
814
- gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectColorsAndFlags._texture);
815
- gl.texSubImage2D(
816
- gl.TEXTURE_2D,
817
- 0, // level
818
- (subPortionId % 512) * 8, // xoffset
819
- Math.floor(subPortionId / 512), // yoffset
820
- 1, // width
821
- 1, //height
822
- gl.RGBA_INTEGER,
823
- gl.UNSIGNED_BYTE,
824
- tempUint8Array4
825
- );
826
- // gl.bindTexture (gl.TEXTURE_2D, null);
827
- }
828
-
829
- setTransparent(portionId, flags, transparent) {
830
- if (transparent) {
831
- this._numTransparentLayerPortions++;
832
- this.model.numTransparentLayerPortions++;
833
- } else {
834
- this._numTransparentLayerPortions--;
835
- this.model.numTransparentLayerPortions--;
836
- }
837
- this._setFlags(portionId, flags, transparent);
838
- }
839
-
840
- _setFlags(portionId, flags, transparent, deferred = false) {
841
- const subPortionIds = this._portionToSubPortionsMap[portionId];
842
- for (let i = 0, len = subPortionIds.length; i < len; i++) {
843
- this._subPortionSetFlags(subPortionIds[i], flags, transparent, deferred);
844
- }
845
- }
846
-
847
- _subPortionSetFlags(subPortionId, flags, transparent, deferred = false) {
848
- if (!this._finalized) {
849
- throw "Not finalized";
850
- }
851
-
852
- const visible = !!(flags & ENTITY_FLAGS.VISIBLE);
853
- const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);
854
- const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);
855
- const selected = !!(flags & ENTITY_FLAGS.SELECTED);
856
- const edges = !!(flags & ENTITY_FLAGS.EDGES);
857
- const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);
858
- const culled = !!(flags & ENTITY_FLAGS.CULLED);
859
-
860
- // Color
861
-
862
- let f0;
863
- if (!visible || culled || xrayed) { // Highlight & select are layered on top of color - not mutually exclusive
864
- f0 = RENDER_PASSES.NOT_RENDERED;
865
- } else {
866
- if (transparent) {
867
- f0 = RENDER_PASSES.COLOR_TRANSPARENT;
868
- } else {
869
- f0 = RENDER_PASSES.COLOR_OPAQUE;
870
- }
871
- }
872
-
873
- // Silhouette
874
-
875
- let f1;
876
- if (!visible || culled) {
877
- f1 = RENDER_PASSES.NOT_RENDERED;
878
- } else if (selected) {
879
- f1 = RENDER_PASSES.SILHOUETTE_SELECTED;
880
- } else if (highlighted) {
881
- f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;
882
- } else if (xrayed) {
883
- f1 = RENDER_PASSES.SILHOUETTE_XRAYED;
884
- } else {
885
- f1 = RENDER_PASSES.NOT_RENDERED;
886
- }
887
-
888
- // Edges
889
-
890
- let f2 = 0;
891
- if (!visible || culled) {
892
- f2 = RENDER_PASSES.NOT_RENDERED;
893
- } else if (selected) {
894
- f2 = RENDER_PASSES.EDGES_SELECTED;
895
- } else if (highlighted) {
896
- f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;
897
- } else if (xrayed) {
898
- f2 = RENDER_PASSES.EDGES_XRAYED;
899
- } else if (edges) {
900
- if (transparent) {
901
- f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;
902
- } else {
903
- f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;
904
- }
905
- } else {
906
- f2 = RENDER_PASSES.NOT_RENDERED;
907
- }
908
-
909
- // Pick
910
-
911
- let f3 = (visible && (!culled) && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;
912
- const textureState = this._dtxState;
913
- const gl = this.model.scene.canvas.gl;
914
- tempUint8Array4 [0] = f0;
915
- tempUint8Array4 [1] = f1;
916
- tempUint8Array4 [2] = f2;
917
- tempUint8Array4 [3] = f3;
918
- // object flags
919
- textureState.texturePerObjectColorsAndFlags._textureData.set(tempUint8Array4, subPortionId * 32 + 8);
920
- if (this._deferredSetFlagsActive || deferred) {
921
- this._deferredSetFlagsDirty = true;
922
- return;
923
- }
924
- if (++this._numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) {
925
- this._beginDeferredFlags(); // Subsequent flags updates now deferred
926
- }
927
- gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectColorsAndFlags._texture);
928
- gl.texSubImage2D(
929
- gl.TEXTURE_2D,
930
- 0, // level
931
- (subPortionId % 512) * 8 + 2, // xoffset
932
- Math.floor(subPortionId / 512), // yoffset
933
- 1, // width
934
- 1, //height
935
- gl.RGBA_INTEGER,
936
- gl.UNSIGNED_BYTE,
937
- tempUint8Array4
938
- );
939
- // gl.bindTexture (gl.TEXTURE_2D, null);
940
- }
941
-
942
- _setDeferredFlags() {
943
- }
944
-
945
- _setFlags2(portionId, flags, deferred = false) {
946
- const subPortionIds = this._portionToSubPortionsMap[portionId];
947
- for (let i = 0, len = subPortionIds.length; i < len; i++) {
948
- this._subPortionSetFlags2(subPortionIds[i], flags, deferred);
949
- }
950
- }
951
-
952
- _subPortionSetFlags2(subPortionId, flags, deferred = false) {
953
- if (!this._finalized) {
954
- throw "Not finalized";
955
- }
956
- const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;
957
- const textureState = this._dtxState;
958
- const gl = this.model.scene.canvas.gl;
959
- tempUint8Array4 [0] = clippable;
960
- tempUint8Array4 [1] = 0;
961
- tempUint8Array4 [2] = 1;
962
- tempUint8Array4 [3] = 2;
963
- // object flags2
964
- textureState.texturePerObjectColorsAndFlags._textureData.set(tempUint8Array4, subPortionId * 32 + 12);
965
- if (this._deferredSetFlagsActive || deferred) {
966
- // console.log("_subPortionSetFlags2 set flags defer");
967
- this._deferredSetFlagsDirty = true;
968
- return;
969
- }
970
- if (++this._numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) {
971
- this._beginDeferredFlags(); // Subsequent flags updates now deferred
972
- }
973
- gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectColorsAndFlags._texture);
974
- gl.texSubImage2D(
975
- gl.TEXTURE_2D,
976
- 0, // level
977
- (subPortionId % 512) * 8 + 3, // xoffset
978
- Math.floor(subPortionId / 512), // yoffset
979
- 1, // width
980
- 1, //height
981
- gl.RGBA_INTEGER,
982
- gl.UNSIGNED_BYTE,
983
- tempUint8Array4
984
- );
985
- // gl.bindTexture (gl.TEXTURE_2D, null);
986
- }
987
-
988
- _setDeferredFlags2() {
989
- }
990
-
991
- setOffset(portionId, offset) {
992
- const subPortionIds = this._portionToSubPortionsMap[portionId];
993
- for (let i = 0, len = subPortionIds.length; i < len; i++) {
994
- this._subPortionSetOffset(subPortionIds[i], offset);
995
- }
996
- }
997
-
998
- _subPortionSetOffset(subPortionId, offset) {
999
- if (!this._finalized) {
1000
- throw "Not finalized";
1001
- }
1002
- // if (!this.model.scene.entityOffsetsEnabled) {
1003
- // this.model.error("Entity#offset not enabled for this Viewer"); // See Viewer entityOffsetsEnabled
1004
- // return;
1005
- // }
1006
- const textureState = this._dtxState;
1007
- const gl = this.model.scene.canvas.gl;
1008
- tempFloat32Array3 [0] = offset[0];
1009
- tempFloat32Array3 [1] = offset[1];
1010
- tempFloat32Array3 [2] = offset[2];
1011
- // object offset
1012
- textureState.texturePerObjectOffsets._textureData.set(tempFloat32Array3, subPortionId * 3);
1013
- if (this._deferredSetFlagsActive) {
1014
- this._deferredSetFlagsDirty = true;
1015
- return;
1016
- }
1017
- if (++this._numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) {
1018
- this._beginDeferredFlags(); // Subsequent flags updates now deferred
1019
- }
1020
- gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectOffsets._texture);
1021
- gl.texSubImage2D(
1022
- gl.TEXTURE_2D,
1023
- 0, // level
1024
- 0, // x offset
1025
- subPortionId, // yoffset
1026
- 1, // width
1027
- 1, // height
1028
- gl.RGB,
1029
- gl.FLOAT,
1030
- tempFloat32Array3
1031
- );
1032
- // gl.bindTexture (gl.TEXTURE_2D, null);
1033
- }
1034
-
1035
- setMatrix(portionId, matrix) {
1036
- const subPortionIds = this._portionToSubPortionsMap[portionId];
1037
- for (let i = 0, len = subPortionIds.length; i < len; i++) {
1038
- this._subPortionSetMatrix(subPortionIds[i], matrix);
1039
- }
1040
- }
1041
-
1042
- _subPortionSetMatrix(subPortionId, matrix) {
1043
- if (!this._finalized) {
1044
- throw "Not finalized";
1045
- }
1046
- // if (!this.model.scene.entityMatrixsEnabled) {
1047
- // this.model.error("Entity#matrix not enabled for this Viewer"); // See Viewer entityMatrixsEnabled
1048
- // return;
1049
- // }
1050
- const textureState = this._dtxState;
1051
- const gl = this.model.scene.canvas.gl;
1052
- tempMat4a.set(matrix);
1053
- textureState.texturePerObjectInstanceMatrices._textureData.set(tempMat4a, subPortionId * 16);
1054
- if (this._deferredSetFlagsActive) {
1055
- this._deferredSetFlagsDirty = true;
1056
- return;
1057
- }
1058
- if (++this._numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) {
1059
- this._beginDeferredFlags(); // Subsequent flags updates now deferred
1060
- }
1061
- gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectInstanceMatrices._texture);
1062
- gl.texSubImage2D(
1063
- gl.TEXTURE_2D,
1064
- 0, // level
1065
- (subPortionId % 512) * 4, // xoffset
1066
- Math.floor(subPortionId / 512), // yoffset
1067
- // 1,
1068
- 4, // width
1069
- 1, // height
1070
- gl.RGBA,
1071
- gl.FLOAT,
1072
- tempMat4a
1073
- );
1074
- // gl.bindTexture (gl.TEXTURE_2D, null);
1075
- }
1076
-
1077
- // ---------------------- COLOR RENDERING -----------------------------------
1078
-
1079
- drawColorOpaque(renderFlags, frameCtx) {
1080
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {
1081
- return;
1082
- }
1083
- this._updateBackfaceCull(renderFlags, frameCtx);
1084
- if (frameCtx.withSAO && this.model.saoEnabled) {
1085
- if (this._renderers.colorRendererWithSAO) {
1086
- this._renderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);
1087
- }
1088
- } else {
1089
- if (this._renderers.colorRenderer) {
1090
- this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);
1091
- }
1092
- }
1093
- }
1094
-
1095
- _updateBackfaceCull(renderFlags, frameCtx) {
1096
- const backfaces = this.model.backfaces || renderFlags.sectioned;
1097
- if (frameCtx.backfaces !== backfaces) {
1098
- const gl = frameCtx.gl;
1099
- if (backfaces) {
1100
- gl.disable(gl.CULL_FACE);
1101
- } else {
1102
- gl.enable(gl.CULL_FACE);
1103
- }
1104
- frameCtx.backfaces = backfaces;
1105
- }
1106
- }
1107
-
1108
- drawColorTransparent(renderFlags, frameCtx) {
1109
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {
1110
- return;
1111
- }
1112
- this._updateBackfaceCull(renderFlags, frameCtx);
1113
- if (this._renderers.colorRenderer) {
1114
- this._renderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);
1115
- }
1116
- }
1117
-
1118
- // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------
1119
-
1120
- drawDepth(renderFlags, frameCtx) {
1121
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {
1122
- return;
1123
- }
1124
- this._updateBackfaceCull(renderFlags, frameCtx);
1125
- if (this._renderers.depthRenderer) {
1126
- this._renderers.depthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses depth (eg SAO) does not apply to transparent objects
1127
- }
1128
- }
1129
-
1130
- drawNormals(renderFlags, frameCtx) {
1131
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {
1132
- return;
1133
- }
1134
- this._updateBackfaceCull(renderFlags, frameCtx);
1135
- if (this._renderers.normalsRenderer) {
1136
- this._renderers.normalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses normals (eg SAO) does not apply to transparent objects
1137
- }
1138
- }
1139
-
1140
- // ---------------------- SILHOUETTE RENDERING -----------------------------------
1141
-
1142
- drawSilhouetteXRayed(renderFlags, frameCtx) {
1143
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {
1144
- return;
1145
- }
1146
- this._updateBackfaceCull(renderFlags, frameCtx);
1147
- if (this._renderers.silhouetteRenderer) {
1148
- this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);
1149
- }
1150
- }
1151
-
1152
- drawSilhouetteHighlighted(renderFlags, frameCtx) {
1153
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {
1154
- return;
1155
- }
1156
- this._updateBackfaceCull(renderFlags, frameCtx);
1157
- if (this._renderers.silhouetteRenderer) {
1158
- this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);
1159
- }
1160
- }
1161
-
1162
- drawSilhouetteSelected(renderFlags, frameCtx) {
1163
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {
1164
- return;
1165
- }
1166
- this._updateBackfaceCull(renderFlags, frameCtx);
1167
- if (this._renderers.silhouetteRenderer) {
1168
- this._renderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);
1169
- }
1170
- }
1171
-
1172
- // ---------------------- EDGES RENDERING -----------------------------------
1173
-
1174
- drawEdgesColorOpaque(renderFlags, frameCtx) {
1175
- if (this.model.scene.logarithmicDepthBufferEnabled) {
1176
- if (!this.model.scene._loggedWarning) {
1177
- console.log("Edge enhancement for SceneModel data texture layers currently disabled with logarithmic depth buffer");
1178
- this.model.scene._loggedWarning = true;
1179
- }
1180
- return;
1181
- }
1182
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0) {
1183
- return;
1184
- }
1185
- if (this._renderers.edgesColorRenderer) {
1186
- this._renderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_OPAQUE);
1187
- }
1188
- }
1189
-
1190
- drawEdgesColorTransparent(renderFlags, frameCtx) {
1191
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0 || this._numTransparentLayerPortions === 0) {
1192
- return;
1193
- }
1194
- if (this._renderers.edgesColorRenderer) {
1195
- this._renderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_TRANSPARENT);
1196
- }
1197
- }
1198
-
1199
- drawEdgesHighlighted(renderFlags, frameCtx) {
1200
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {
1201
- return;
1202
- }
1203
- if (this._renderers.edgesRenderer) {
1204
- this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_HIGHLIGHTED);
1205
- }
1206
- }
1207
-
1208
- drawEdgesSelected(renderFlags, frameCtx) {
1209
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {
1210
- return;
1211
- }
1212
- if (this._renderers.edgesRenderer) {
1213
- this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_SELECTED);
1214
- }
1215
- }
1216
-
1217
- drawEdgesXRayed(renderFlags, frameCtx) {
1218
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {
1219
- return;
1220
- }
1221
- if (this._renderers.edgesRenderer) {
1222
- this._renderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_XRAYED);
1223
- }
1224
- }
1225
-
1226
- // ---------------------- OCCLUSION CULL RENDERING -----------------------------------
1227
-
1228
- drawOcclusion(renderFlags, frameCtx) {
1229
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {
1230
- return;
1231
- }
1232
- this._updateBackfaceCull(renderFlags, frameCtx);
1233
- if (this._renderers.occlusionRenderer) {
1234
- this._renderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);
1235
- }
1236
- }
1237
-
1238
- // ---------------------- SHADOW BUFFER RENDERING -----------------------------------
1239
-
1240
- drawShadow(renderFlags, frameCtx) {
1241
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {
1242
- return;
1243
- }
1244
- this._updateBackfaceCull(renderFlags, frameCtx);
1245
- if (this._renderers.shadowRenderer) {
1246
- this._renderers.shadowRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);
1247
- }
1248
- }
1249
-
1250
- //---- PICKING ----------------------------------------------------------------------------------------------------
1251
-
1252
- setPickMatrices(pickViewMatrix, pickProjMatrix) {
1253
- // if (this._numVisibleLayerPortions === 0) {
1254
- // return;
1255
- // }
1256
- // this._dtxState.texturePickCameraMatrices.updateViewMatrix(pickViewMatrix, pickProjMatrix);
1257
- }
1258
-
1259
- drawPickMesh(renderFlags, frameCtx) {
1260
- if (this._numVisibleLayerPortions === 0) {
1261
- return;
1262
- }
1263
- this._updateBackfaceCull(renderFlags, frameCtx);
1264
- if (this._renderers.pickMeshRenderer) {
1265
- this._renderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);
1266
- }
1267
- }
1268
-
1269
- drawPickDepths(renderFlags, frameCtx) {
1270
- if (this._numVisibleLayerPortions === 0) {
1271
- return;
1272
- }
1273
- this._updateBackfaceCull(renderFlags, frameCtx);
1274
- if (this._renderers.pickDepthRenderer) {
1275
- this._renderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);
1276
- }
1277
- }
1278
-
1279
- drawSnapInit(renderFlags, frameCtx) {
1280
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {
1281
- return;
1282
- }
1283
- this._updateBackfaceCull(renderFlags, frameCtx);
1284
- if (this._renderers.snapInitRenderer) {
1285
- this._renderers.snapInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);
1286
- }
1287
- }
1288
-
1289
- drawSnap(renderFlags, frameCtx) {
1290
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {
1291
- return;
1292
- }
1293
- this._updateBackfaceCull(renderFlags, frameCtx);
1294
- if (this._renderers.snapRenderer) {
1295
- this._renderers.snapRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);
1296
- }
1297
- }
1298
-
1299
- drawPickNormals(renderFlags, frameCtx) {
1300
- if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {
1301
- return;
1302
- }
1303
- this._updateBackfaceCull(renderFlags, frameCtx);
1304
- if (this._renderers.pickNormalsRenderer) {
1305
- this._renderers.pickNormalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);
1306
- }
1307
- }
1308
-
1309
- destroy() {
1310
- if (this._destroyed) {
1311
- return;
1312
- }
1313
- const state = this._state;
1314
- if (state.metallicRoughnessBuf) {
1315
- state.metallicRoughnessBuf.destroy();
1316
- state.metallicRoughnessBuf = null;
1317
- }
1318
- this.model.scene.off(this._onSceneRendering);
1319
- state.destroy();
1320
- this._destroyed = true;
1321
- }
1322
- }