From e510f6b67b896c7e50e9166f7fcd789fa5a8eafb Mon Sep 17 00:00:00 2001 From: lindsay Date: Fri, 1 Sep 2023 01:13:48 +0200 Subject: [PATCH] Integrate refactorings --- assets/images/IFC2x3House.png | Bin 0 -> 211157 bytes assets/images/NavCubePlugin.png | Bin 0 -> 20826 bytes assets/images/annotations.png | Bin 0 -> 77881 bytes assets/images/aphs.png | Bin 0 -> 438771 bytes assets/images/camera_icon.png | Bin 3040 -> 8472 bytes assets/images/contextmenu.png | Bin 0 -> 75270 bytes assets/images/distanceMeasurements.png | Bin 0 -> 38443 bytes assets/images/geometry.png | Bin 0 -> 65705 bytes assets/images/holterTower.png | Bin 0 -> 267279 bytes assets/images/i1n8.png | Bin 0 -> 42367 bytes assets/images/lyon_city.png | Bin 0 -> 70534 bytes assets/images/mapPointCloud.png | Bin 0 -> 843046 bytes assets/images/pbrXKT.png | Bin 0 -> 55531 bytes assets/images/picking.png | Bin 0 -> 38677 bytes assets/images/racmodel.png | Bin 0 -> 392477 bytes assets/images/rme.png | Bin 0 -> 192990 bytes assets/images/sceneModelTextured.png | Bin 0 -> 126811 bytes assets/images/sectionPlane.png | Bin 0 -> 272640 bytes assets/images/treeview.png | Bin 0 -> 185237 bytes ...tructureTreeViewPlugin_Schependomlaan.html | 202 - examples/BIMOffline_XKT_Duplex.html | 269 - ...MOffline_XKT_Duplex_originalIFCColors.html | 287 - examples/BIMOffline_XKT_HolterTower.html | 282 - ...ine_XKT_IFC2glTFConverter_HolterTower.html | 305 - ...TFConverter_Karhumaki_useDataTextures.html | 146 - ...itSamples_HolterTower_useDataTextures.html | 256 - ...KT_IFC2glTFConverter_RevitSamples_RAC.html | 245 - ...rter_RevitSamples_RAC_useDataTextures.html | 252 - .../BIMOffline_XKT_OTCConferenceCenter.html | 285 - examples/BIMOffline_XKT_RevitSamples_RAC.html | 234 - examples/BIMOffline_XKT_RevitSamples_RME.html | 239 - examples/BIMOffline_XKT_Schependomlaan.html | 282 - examples/BIMOffline_XKT_WaterLock.html | 235 - examples/BIMOffline_XKT_authorMetadata.html | 123 - examples/BIMOffline_XKT_includeTypes.html | 109 - examples/BIMOffline_XKT_objectDefaults.html | 264 - examples/Bitmap_storeyPlan.html | 100 - examples/Configs_disableDoublePrecision.html | 100 - .../DimensionsFootprintModel_example2.html | 219 - .../annotations_clickFlyToPosition.html | 14 +- .../annotations_clickShowLabels.html | 14 +- ...tations_createAtCenterOfClickedObject.html | 14 +- .../annotations_createWithMouse.html | 14 +- .../annotations_externalElements.html | 14 +- .../annotations_fullPrecision_MAP.html} | 19 +- .../annotations_hoverShowLabels.html | 14 +- .../annotations_occlusionDisabled.html | 14 +- examples/annotations/index.html | 467 ++ .../markers_SpriteMarker.html | 24 +- examples/bookmarking/index.html | 470 ++ .../loadViewpoint.html} | 14 +- .../loadViewpoint_MultipleModels.html} | 18 +- .../loadViewpoint_defaultInvisible.html} | 16 +- .../loadViewpoint_ortho.html} | 16 +- ...oadViewpoint_withSectionPlanesPlugin.html} | 16 +- .../mementos_ObjectsMemento.html | 12 +- .../saveViewpoint.html} | 22 +- .../saveViewpoint_BitmapsAndLines.html} | 22 +- .../saveViewpoint_MultipleModels.html} | 18 +- .../saveViewpoint_ortho.html} | 16 +- .../glTF_Duplex_transform.html} | 32 +- .../glTF_Schependomlaan.html} | 14 +- .../glTF_VianneyHouse.html} | 40 +- .../glTF_WestRiverSideHospital.html} | 26 +- .../glTF_embedded_MAP.html} | 14 +- .../glb_HousePlan.html} | 34 +- .../glb_VianneyHouse.html} | 38 +- examples/buildings/index.html | 532 ++ .../jitter_singlePrecision_MAP.html} | 12 +- .../positioning_cartesianCoordinates.html} | 18 +- .../positioning_geodesicCoordinates.html} | 16 +- examples/buildings/web-ifc_dtx_Duplex.html | 232 + .../buildings/web-ifc_dtx_MAPGroundFloor.html | 134 + .../web-ifc_vbo_Duplex.html} | 24 +- .../web-ifc_vbo_MAPGroundFloor.html} | 22 +- .../web-ifc_vbo_ignoreMetadata.html} | 22 +- .../web-ifc_vbo_isolateStorey.html} | 22 +- .../xkt_dtx_APHS.html} | 72 +- examples/buildings/xkt_dtx_HolterTower.html | 232 + examples/buildings/xkt_dtx_IfcOpenHouse4.html | 220 + examples/buildings/xkt_dtx_MAP.html | 229 + examples/buildings/xkt_dtx_RAC.html | 231 + .../buildings/xkt_dtx_Schependomlaan.html | 231 + examples/buildings/xkt_dtx_Store.html | 232 + .../xkt_dtx_WestRiverSideHospital.html} | 54 +- .../xkt_dtx_metadata_Schependomlaan.html} | 14 +- .../xkt_dtx_metadata_moveStoreys.html} | 17 +- .../xkt_vbo_DemoProjekt.html} | 16 +- .../xkt_vbo_Duplex.html} | 67 +- examples/buildings/xkt_vbo_HolterTower.html | 229 + examples/buildings/xkt_vbo_HousePlan.html | 218 + examples/buildings/xkt_vbo_IfcOpenHouse4.html | 243 + examples/buildings/xkt_vbo_MAP.html | 214 + .../xkt_vbo_OTCCenferenceCenter.html | 230 + examples/buildings/xkt_vbo_RAC.html | 230 + examples/buildings/xkt_vbo_RME.html | 230 + .../buildings/xkt_vbo_Schependomlaan.html | 230 + examples/buildings/xkt_vbo_WaterLock.html | 219 + .../xkt_vbo_federated_Clinic.html} | 22 +- .../buildings/xkt_vbo_textures_HousePlan.html | 234 + .../3DXML_Widget.html} | 32 +- .../OBJ_SportsCar.html} | 15 +- .../STL_SpurGear.html} | 36 +- .../STL_dataAsParam.html} | 12 +- .../STL_dataSource.html} | 12 +- .../STL_doublePrecision.html} | 12 +- examples/cad/index.html | 464 ++ .../CityJSON_NewYork.html} | 22 +- .../CityJSON_Railway.html} | 34 +- .../XKT_Lyon.html} | 58 +- .../XKT_Lyon_logDepthBufDisabled.html} | 26 +- .../XKT_dtx_Lyon.html} | 186 +- examples/cities/index.html | 466 ++ examples/css/style.css | 2 +- examples/default.html | 23 - examples/emphasis_colorize_throughXRay.html | 129 - ...Highlighted_throughTransparent_Duplex.html | 80 - examples/emphasis_selected_throughXRay.html | 128 - .../colorize.html} | 50 +- .../highlight.html} | 44 +- .../highlight_glowThroughFalse.html} | 39 +- .../highlight_transparentCanvas.html} | 10 +- examples/emphasising/index.html | 462 ++ .../opacity.html} | 46 +- examples/emphasising/select.html | 79 + .../select_glowThroughFalse.html} | 38 +- .../select_transparentCanvas.html} | 10 +- .../xray.html} | 47 +- .../xray_transparentCanvas.html} | 43 +- examples/geometry/index.html | 459 ++ .../geometry_loaders_load3DSGeometry.html | 104 - .../geometry_loaders_loadOBJGeometry.html | 160 - examples/gizmos_SectionPlanesPlugin.html | 147 - examples/index.html | 1604 ++-- examples/index2.html | 992 +++ examples/libs/PickHitHelper.js | 2 +- examples/libs/PickRayHelper.js | 2 +- examples/libs/dat.gui.min.js | 2 +- .../glb_Roadworks.html} | 18 +- .../glb_SkatePark.html} | 15 +- examples/lidar/index.html | 472 ++ .../las_Autzen.html} | 20 +- .../las_IndoorScan.html} | 18 +- .../laz_Autzen.html} | 23 +- .../laz_IndoorScan.html} | 18 +- .../xkt_MAP.html} | 18 +- examples/loading_3DXML_Widget.html | 100 - .../loading_3DXML_materialType_Metallic.html | 94 - .../loading_3DXML_materialType_Phong.html | 91 - .../loading_3DXML_materialType_Specular.html | 94 - examples/loading_CityJSON_NewYork.html | 244 - examples/loading_MultipleModels.html | 172 - examples/loading_XKT_APHS.html | 122 - examples/loading_XKT_BoxTextured.html | 114 - examples/loading_XKT_ConvenienceStore.html | 82 - examples/loading_XKT_DamagedHelmet.html | 99 - examples/loading_XKT_Duplex.html | 89 - .../loading_XKT_Duplex_originalIFCColors.html | 118 - examples/loading_XKT_Duplex_transform.html | 130 - examples/loading_XKT_HousePlan.html | 114 - .../loading_XKT_HousePlan_NoTextures.html | 114 - examples/loading_XKT_MAP.html | 75 - examples/loading_XKT_OTCConferenceCenter.html | 88 - examples/loading_XKT_Roadworks.html | 103 - examples/loading_XKT_Schependomlaan.html | 88 - .../loading_XKT_Schependomlaan_transform.html | 130 - .../loading_XKT_Textures_DamagedHelmet.html | 123 - examples/loading_XKT_Textures_HousePlan.html | 127 - .../loading_XKT_WestRiverSideHospital.html | 199 - examples/loading_XKT_concurrently.html | 157 - examples/loading_XKT_dataSource.html | 243 - examples/loading_XKT_forceBackfaces.html | 92 - .../loading_XKT_jitter_fullPrecision_MAP.html | 88 - .../loading_XKT_maxGeometryBatchSize_50M.html | 317 - examples/loading_glTF_BoxTextured.html | 77 - examples/loading_glTF_HousePlan.html | 99 - examples/loading_glTF_SkatePark.html | 88 - examples/loading_glTF_binary_Roadworks.html | 96 - examples/loading_glTF_dataSource.html | 252 - examples/loading_glTF_embedded_Box.html | 60 - examples/loading_glb_2CylinderEngine.html | 89 - examples/loading_glb_Box.html | 60 - examples/loading_glb_BoxTextured.html | 63 - examples/loading_glb_DamagedHelmet.html | 96 - .../XKT_dtx_Lyon.html} | 201 +- .../angle_createWithMouse_edgeSnapping.html} | 26 +- ...angle_createWithMouse_vertexSnapping.html} | 45 +- .../angle_modelWithMeasurements.html} | 14 +- ...istance_createWithMouse_edgeSnapping.html} | 27 +- ...tance_createWithMouse_vertexSnapping.html} | 53 +- ...e_createWithMouse_vertexSnapping_Lyon.html | 361 + .../distance_modelWithMeasurements.html} | 14 +- ..._modelWithMeasurements_hideAxisWires.html} | 14 +- .../distance_unitsAndScale.html} | 16 +- examples/measurement/index.html | 476 ++ ..._angle_createWithMouse_photogrammetry.html | 85 - ...rements_distance_createWithMouse_perf.html | 94 - ...stance_createWithMouse_photogrammetry.html | 94 - ...ts_distance_createWithMouse_precision.html | 90 - .../AxisGizmoPlugin.html} | 12 +- .../CameraControl_firstPerson_Duplex.html | 16 +- ...CameraControl_firstPerson_HolterTower.html | 16 +- .../CameraControl_firstPerson_MAP.html | 18 +- .../CameraControl_keyMap.html | 14 +- .../CameraControl_keyboardEventsElement.html | 18 +- .../CameraControl_orbit_Duplex.html | 18 +- ...ameraControl_orbit_Duplex_smallCanvas.html | 18 +- ...CameraControl_orbit_Duplex_tallCanvas.html | 18 +- .../CameraControl_orbit_HolterTower.html | 16 +- .../CameraControl_orbit_Lyon.html | 34 +- .../CameraControl_orbit_MAP.html | 20 +- ...meraControl_orbit_OTCConferenceCenter.html | 18 +- .../CameraControl_orbit_WaterLock.html | 20 +- .../CameraControl_pivotMarker.html | 14 +- ...CameraControl_planView_Schependomlaan.html | 16 +- ...textMenu_Canvas_TreeViewPlugin_Custom.html | 14 +- .../ContextMenu_dynamicItemTitles.html | 16 +- .../ContextMenu_dynamicItemVisibilities.html | 16 +- .../ContextMenu_subMenus.html | 16 +- .../NavCubePlugin.html} | 12 +- .../NavCubePlugin_customColors.html} | 12 +- .../NavCubePlugin_trueNorth.html} | 12 +- .../TreeViewPlugin_Containment.html | 18 +- .../TreeViewPlugin_Containment_3DXML.html | 867 +++ ...TreeViewPlugin_Containment_Federated.html} | 124 +- ...reeViewPlugin_Containment_SceneModel.html} | 58 +- ...gin_Containment_SceneModel_Federated.html} | 34 +- .../TreeViewPlugin_Storeys.html | 20 +- .../TreeViewPlugin_Storeys_validate.html | 22 +- .../TreeViewPlugin_Types.html | 20 +- .../TreeViewPlugin_Types_Federated.html} | 211 +- .../TreeViewPlugin_options_rootName.html | 18 +- ...mera_CameraFlightAnimation_projection.html | 17 +- .../camera_CameraPathAnimation.html | 33 +- .../camera_CameraPathAnimation2.html | 18 +- ...mera_CameraPathAnimation_dataTextures.html | 18 +- .../{ => navigation}/camera_fitToModel.html | 14 +- examples/navigation/index.html | 510 ++ .../localization_NavCubePlugin.html | 20 +- .../FastNavPlugin_HolterTower.html} | 20 +- .../ViewCullPlugin_CameraPathAnimation.html} | 16 +- examples/performance/index.html | 467 ++ .../performance/lodCulling_HolterTower.html | 121 + .../techniques_findComplexEntities.html | 19 +- .../techniques_nonInteractiveQuality.html | 12 +- .../performance/viewCulling_HolterTower.html | 120 + examples/performance_ViewCullPlugin.html | 103 - examples/picking/doubleClick_entity.html | 61 + .../hover_entity.html} | 27 +- examples/picking/index.html | 479 ++ examples/picking/pick_canvas_entity.html | 86 + .../pick_canvas_surface.html} | 10 +- .../pick_ray_entity.html} | 10 +- .../pick_ray_matrix.html} | 10 +- .../pick_ray_surface.html} | 10 +- .../pick_setObjectsPickable.html} | 10 +- .../picking_canvas_surface_precision.html | 10 +- ...rfacePrecision_VBOSceneModel_batching.html | 24 +- ...acePrecision_VBOSceneModel_instancing.html | 28 +- .../picking_surface_canvas_precision.html | 12 +- examples/picking/snapToEdge.html | 93 + examples/picking/snapToVertex.html | 93 + examples/picking_canvas_click.html | 120 - examples/picking_canvas_doubleClick.html | 91 - examples/picking_canvas_mesh_xray.html | 96 - ...LoaderPlugin_animateOriginAndRotation.html | 114 - examples/postEffects_SAO_Duplex.html | 201 - examples/postEffects_SAO_Schependomlaan.html | 198 - ...esentation_VBOSceneModel_batching_PBR.html | 260 - ...esentation_VBOSceneModel_batching_SAO.html | 391 - ...on_VBOSceneModel_batching_annotations.html | 521 -- ...on_VBOSceneModel_batching_autoNormals.html | 281 - ...entation_VBOSceneModel_batching_lines.html | 150 - ...ntation_VBOSceneModel_batching_points.html | 216 - ...ation_VBOSceneModel_batching_textures.html | 371 - ..._VBOSceneModel_batching_textures_ktx2.html | 393 - ...n_VBOSceneModel_batching_textures_pbr.html | 163 - ...tion_VBOSceneModel_batching_transform.html | 307 - ...presentation_VBOSceneModel_instancing.html | 275 - ...ntation_VBOSceneModel_instancing2_SAO.html | 140 - ...entation_VBOSceneModel_instancing_PBR.html | 266 - ..._VBOSceneModel_instancing_PBR_spheres.html | 214 - ...tation_VBOSceneModel_instancing_lines.html | 147 - ...ation_VBOSceneModel_instancing_origin.html | 270 - ...n_VBOSceneModel_instancing_origin_SAO.html | 273 - ...ation_VBOSceneModel_instancing_points.html | 210 - ...ion_VBOSceneModel_instancing_textures.html | 307 - ...VBOSceneModel_instancing_textures_pbr.html | 183 - .../ImagePlane_groundPlane.html | 16 +- .../ImagePlane_groundPlane_narrow.html | 16 +- .../ImagePlane_groundPlane_wide.html | 16 +- .../ImagePlane_imageInSectionPlane.html | 22 +- examples/{ => scenegraph}/LineSet_grid.html | 14 +- .../billboarding_Mesh_cylindrical.html | 16 +- .../billboarding_Mesh_spherical.html | 16 +- .../buildBoxGeometry.html} | 20 +- .../buildBoxLinesGeometry.html} | 18 +- .../buildCylinderGeometry.html} | 20 +- .../buildGridGeometry.html} | 18 +- .../buildPlaneGeometry.html} | 22 +- .../buildSphereGeometry.html} | 20 +- .../buildTorusGeometry.html} | 20 +- .../buildVectorTextGeometry.html} | 16 +- .../geometry_ReadableGeometry.html | 16 +- .../geometry_VBOGeometry.html | 16 +- examples/scenegraph/index.html | 544 ++ .../lightingTest_viewDirLights.html} | 44 +- .../lightingTest_viewPointLights.html} | 44 +- .../lightingTest_worldDirLights.html} | 44 +- .../lightingTest_worldPointLights.html} | 44 +- .../{ => scenegraph}/lights_AmbientLight.html | 24 +- .../lights_DirLight_view.html | 24 +- .../lights_DirLight_world.html | 24 +- .../lights_PointLight_view.html | 24 +- .../lights_PointLight_world.html | 24 +- examples/scenegraph/markers_SpriteMarker.html | 116 + .../materials_EdgeMaterial.html | 16 +- .../materials_EmphasisMaterial.html | 18 +- .../{ => scenegraph}/materials_Fresnel.html | 20 +- .../materials_LambertMaterial.html | 14 +- .../materials_LinesMaterial.html | 22 +- .../materials_MetallicMaterial.html | 28 +- .../materials_PhongMaterial.html | 20 +- .../materials_PointsMaterial.html | 22 +- .../{ => scenegraph}/materials_Texture.html | 18 +- .../sceneGraph.html} | 16 +- .../sceneGraph_ReadableGeometry.html} | 18 +- .../sceneGraph_VBOGeometry.html} | 18 +- .../sceneGraph_metadata.html} | 21 +- .../sceneGraph_rtc.html} | 18 +- .../sceneGraph_rtc_sectionPlanes.html} | 18 +- .../SceneModel_metadata_TreeViewPlugin.html | 426 ++ ...del_metadata_federated_TreeViewPlugin.html | 449 ++ .../SceneModel_pbr_batching_uncomp_tris.html | 217 + ...SceneModel_vbo_instancing_geometries.html} | 78 +- ...dtx_batching_autocompressed_triangles.html | 241 + ..._instancing_autocompressed_triangles.html} | 63 +- ...bo_batching_autocompressed_triangles.html} | 33 +- ...ing_autocompressed_rtc_sectionPlanes.html} | 149 +- ...dtx_batching_autocompressed_triangles.html | 186 + ...batching_autocompressed_triangles_rtc.html | 238 + ...hing_precompressed_bucketed_triangles.html | 274 + .../dtx_batching_precompressed_triangles.html | 301 + ...x_instancing_autocompressed_triangles.html | 150 + ...cing_precompressed_bucketed_triangles.html | 160 + ...tx_instancing_precompressed_triangles.html | 163 + .../dtx_lightingTest_viewDirLights.html | 694 ++ .../effects_dtx_batching_SAO.html} | 77 +- .../effects_dtx_instancing_SAO.html | 326 + .../effects_vbo_batching_SAO.html} | 94 +- .../effects_vbo_batching_colorize.html} | 48 +- .../effects_vbo_batching_highlight.html} | 56 +- .../effects_vbo_batching_opacity.html} | 44 +- .../effects_vbo_batching_select.html} | 81 +- .../effects_vbo_instancing_SAO.html} | 58 +- examples/scenemodel/index.html | 608 ++ .../scenemodel/lighting_vbo_view_dir.html | 692 ++ ...dtx_batching_autocompressed_triangles.html | 221 + ...x_instancing_autocompressed_triangles.html | 223 + ...vbo_batching_autocompressed_triangles.html | 185 + ...o_instancing_autocompressed_triangles.html | 224 + .../logDepthBuf_SceneGraph_RTC.html | 12 +- ...uf_SceneGraph_RTC_logDepthBufDisabled.html | 12 +- ...ogDepthBuf_VBOSceneModel_batching_RTC.html | 20 +- ...BOSceneModel_batching_RTC_annotations.html | 22 +- ...odel_batching_RTC_logDepthBufDisabled.html | 20 +- ...DepthBuf_VBOSceneModel_instancing_RTC.html | 18 +- ...el_instancing_RTC_logDepthBufDisabled.html | 18 +- ...tx_batching_autocompressed_triangles.html} | 117 +- ..._dtx_batching_precompressed_triangles.html | 365 + ...tx_instancing_precompressed_triangles.html | 243 + .../sectionPlanes_dtx_batching_rtc.html | 282 + .../sectionPlanes_dtx_instancing_rtc.html | 428 ++ .../sectionPlanes_vbo_batching_rtc.html} | 38 +- .../sectionPlanes_vbo_instancing_rtc.html} | 70 +- .../snapToEdge_dtx_batching_triangles.html | 224 + .../snapToEdge_dtx_instancing_triangles.html} | 129 +- .../snapToEdge_vbo_batching_triangles.html | 301 + .../snapToEdge_vbo_instancing_triangles.html} | 122 +- .../snapToVertex_dtx_batching_triangles.html | 224 + ...napToVertex_dtx_instancing_triangles.html} | 131 +- .../snapToVertex_vbo_batching_triangles.html | 301 + ...napToVertex_vbo_instancing_triangles.html} | 122 +- ...vbo_batching_autocompressed_triangles.html | 273 + ...batching_autocompressed_triangles_rtc.html | 233 + ...autocompressed_triangles_textures_jpg.html | 297 + ...utocompressed_triangles_textures_ktx2.html | 295 + .../vbo_batching_precompressed_triangles.html | 310 + ..._batching_precompressed_triangles_rtc.html | 374 + ..._precompressed_triangles_textures_jpg.html | 387 + ...precompressed_triangles_textures_ktx2.html | 382 + ...o_instancing_autocompressed_triangles.html | 152 + ...tancing_autocompressed_triangles_rtc.html} | 162 +- ...autocompressed_triangles_textures_jpg.html | 189 + ...utocompressed_triangles_textures_ktx2.html | 189 + ...bo_instancing_precompressed_triangles.html | 179 + ...nstancing_precompressed_triangles_rtc.html | 239 + ..._precompressed_triangles_textures_jpg.html | 208 + ...precompressed_triangles_textures_ktx2.html | 209 + ...vbo_batching_autocompressed_triangles.html | 233 + .../FaceAlignedSectionPlanesPlugin.html} | 14 +- .../SectionPlanesPlugin_Duplex.html} | 14 +- ...ionPlanesPlugin_Duplex_FastNavPlugin.html} | 16 +- ...lugin_bugfix_moveSectionPlanesCanvas.html} | 6 +- .../SectionPlanesPlugin_createWithMouse.html} | 14 +- ...lugin_createWithMouse_photogrammetry.html} | 14 +- ...ectionPlanesPlugin_flipSectionPlanes.html} | 14 +- ...ctionPlanesPlugin_imageInSectionPlane.html | 180 + .../SectionPlanesPlugin_ortho.html} | 14 +- ...anesPlugin_ortho_OTCConferenceCenter.html} | 16 +- examples/slicing/index.html | 466 ++ ...tSnapshot_excludeSectionPlaneControl.html} | 14 +- ...tSnapshot_includeSectionPlaneControl.html} | 14 +- .../getSnapshot_png.html} | 10 +- .../getSnapshot_png_hires.html} | 10 +- .../getSnapshot_png_toDataURL.html} | 10 +- .../getSnapshot_png_withMeasurements.html} | 12 +- examples/snapshots/index.html | 459 ++ ...ews_StoreyViewsPlugin_createStoreyMap.html | 129 - ...reyViewsPlugin_createStoreyMap_height.html | 129 - ...ws_StoreyViewsPlugin_gotoStoreyCamera.html | 117 - ...s_StoreyViewsPlugin_gotoStoreyCamera2.html | 118 - ...Views_StoreyViewsPlugin_pickStoreyMap.html | 208 - ...storeyViews_StoreyViewsPlugin_recipe1.html | 225 - ...storeyViews_StoreyViewsPlugin_recipe2.html | 315 - ...storeyViews_StoreyViewsPlugin_recipe3.html | 221 - ...storeyViews_StoreyViewsPlugin_recipe4.html | 200 - ...s_StoreyViewsPlugin_showStoreyObjects.html | 102 - examples/viewer/index.html | 470 ++ .../viewer/localization_NavCubePlugin.html | 189 + ...on_NavCubePlugin_defaultLocaleService.html | 20 +- .../logDepthBuf_ortho.html} | 24 +- examples/viewer/logDepthBuf_perspective.html | 167 + .../sao_ConferenceCenter.html} | 16 +- examples/{ => viewer}/spinner_custom.html | 12 +- examples/viewer_createDestroyRepeat.html | 89 - .../viewer_createDestroyRepeatNewCanvas.html | 126 - examples/viewer_disableAntialiasing.html | 82 - .../AngleMeasurementsControl.js | 104 +- .../BCFViewpointsPlugin.js | 4 +- .../CityJSONLoaderPlugin.js | 14 +- .../DistanceMeasurement.js | 4 +- .../DistanceMeasurementsControl.js | 172 +- .../DistanceMeasurementsPlugin.js | 5 +- .../GLTFLoaderPlugin/GLTFLoaderPlugin.js | 24 +- ...ModelLoader.js => GLTFSceneModelLoader.js} | 4 +- .../LASLoaderPlugin/LASLoaderPlugin.js | 4 +- .../NavCubePlugin/CubeTextureCanvas.js | 4 +- src/plugins/NavCubePlugin/NavCubePlugin.js | 2 +- .../OBJLoaderPlugin/OBJLoaderPlugin.js | 2 +- src/plugins/SectionPlanesPlugin/Control.js | 2 +- .../SectionPlanesPlugin.js | 2 +- .../StoreyViewsPlugin/StoreyViewsPlugin.js | 45 +- .../WebIFCLoaderPlugin/WebIFCLoaderPlugin.js | 8 +- .../XKTLoaderPlugin/XKTLoaderPlugin.js | 42 +- .../XKTLoaderPlugin/parsers/ParserV10.js | 26 +- .../XKTLoaderPlugin/parsers/ParserV4.js | 6 +- .../XKTLoaderPlugin/parsers/ParserV5.js | 4 +- .../XKTLoaderPlugin/parsers/ParserV6.js | 4 +- .../XKTLoaderPlugin/parsers/ParserV7.js | 2 +- .../XKTLoaderPlugin/parsers/ParserV8.js | 2 +- .../XKTLoaderPlugin/parsers/ParserV9.js | 2 +- .../XKTLoaderPlugin/parsers/lib/pako.js | 6729 +---------------- .../XML3DLoaderPlugin/zipjs/mime-types.js | 2 +- src/plugins/index.js | 3 +- src/viewer/Configs.js | 2 +- src/viewer/Viewer.js | 147 +- src/viewer/metadata/MetaScene.js | 2 +- src/viewer/scene/Bitmap/Bitmap.js | 4 +- .../scene/CameraControl/CameraControl.js | 56 + .../lib/controllers/PickController.js | 103 +- .../lib/handlers/MousePickHandler.js | 4 +- src/viewer/scene/ImagePlane/ImagePlane.js | 8 +- src/viewer/scene/LineSet/LineSet.js | 4 +- .../scene/camera/CameraFlightAnimation.js | 2 +- .../scene/camera/CameraPathAnimation.js | 2 +- src/viewer/scene/canvas/Canvas.js | 14 +- src/viewer/scene/geometry/ReadableGeometry.js | 2 +- src/viewer/scene/geometry/VBOGeometry.js | 2 +- .../geometry/builders/buildBoxGeometry.js | 2 +- .../builders/buildBoxLinesGeometry.js | 2 +- .../builders/buildCylinderGeometry.js | 2 +- .../geometry/builders/buildGridGeometry.js | 2 +- .../geometry/builders/buildPlaneGeometry.js | 2 +- .../geometry/builders/buildSphereGeometry.js | 2 +- .../geometry/builders/buildTorusGeometry.js | 2 +- .../builders/buildVectorTextGeometry.js | 2 +- .../scene/geometry/loaders/load3DSGeometry.js | 2 +- .../scene/geometry/loaders/loadOBJGeometry.js | 2 +- src/viewer/scene/index.js | 6 +- src/viewer/scene/lights/AmbientLight.js | 2 +- src/viewer/scene/lights/DirLight.js | 2 +- src/viewer/scene/lights/PointLight.js | 2 +- src/viewer/scene/lod/LOD.js | 162 + src/viewer/scene/lod/LODCullingManager.js | 83 + src/viewer/scene/lod/LODState.js | 125 + src/viewer/scene/lod/index.js | 1 + src/viewer/scene/marker/Marker.js | 10 +- src/viewer/scene/marker/SpriteMarker.js | 2 +- src/viewer/scene/materials/EdgeMaterial.js | 2 +- src/viewer/scene/materials/Fresnel.js | 2 +- src/viewer/scene/materials/LambertMaterial.js | 2 +- src/viewer/scene/materials/LinesMaterial.js | 2 +- .../scene/materials/MetallicMaterial.js | 2 +- src/viewer/scene/materials/PhongMaterial.js | 2 +- src/viewer/scene/materials/PointsMaterial.js | 2 +- src/viewer/scene/materials/Texture.js | 2 +- src/viewer/scene/math/math.js | 17 + src/viewer/scene/mesh/Mesh.js | 2 +- .../lib => model}/ENTITY_FLAGS.js | 0 src/viewer/scene/model/PerformanceModel.js | 28 + .../lib => model}/RENDER_PASSES.js | 0 .../VBOSceneModel.js => model/SceneModel.js} | 2086 ++--- .../SceneModelEntity.js} | 374 +- src/viewer/scene/model/SceneModelMesh.js | 152 + src/viewer/scene/model/SceneModelTexture.js | 17 + .../scene/model/SceneModelTextureSet.js | 17 + src/viewer/scene/model/VBOSceneModel.js | 28 + .../lib => model}/compression.js | 25 +- .../dtx/triangles/BindableDataTexture.js | 31 + .../dtx/triangles/DataTextureGenerator.js | 631 ++ .../model/dtx/triangles/DataTextureState.js | 314 + .../triangles/TrianglesDataTextureBuffer.js | 31 + .../triangles}/TrianglesDataTextureLayer.js | 1033 +-- .../TrianglesDataTextureRenderers.js | 24 +- .../dtx/triangles/calculateUniquePositions.js | 126 + .../dtx/triangles/dataTextureRamStats.js | 54 + .../model/dtx/triangles/rebucketPositions.js | 347 + ...rianglesDataTextureColorQualityRenderer.js | 12 +- .../TrianglesDataTextureColorRenderer.js | 82 +- .../TrianglesDataTextureDepthRenderer.js | 152 +- .../TrianglesDataTextureEdgesColorRenderer.js | 56 +- .../TrianglesDataTextureEdgesRenderer.js | 108 +- .../TrianglesDataTextureNormalsRenderer.js | 12 +- .../TrianglesDataTextureOcclusionRenderer.js | 21 +- .../TrianglesDataTexturePickDepthRenderer.js | 146 +- .../TrianglesDataTexturePickMeshRenderer.js | 66 +- ...nglesDataTexturePickNormalsFlatRenderer.js | 62 +- ...TrianglesDataTexturePickNormalsRenderer.js | 145 +- .../TrianglesDataTextureShadowRenderer.js | 10 +- .../TrianglesDataTextureSilhouetteRenderer.js | 153 +- ...lesDataTextureSnapDepthBufInitRenderer.js} | 277 +- .../TrianglesDataTextureSnapDepthRenderer.js} | 234 +- src/viewer/scene/model/index.js | 3 + .../lib => model/vbo}/ScratchMemory.js | 0 .../vbo}/VBOSceneModelRenderers.js | 149 +- .../lib/layers => model/vbo}/float16.js | 0 .../vbo}/linesBatching/LinesBatchingBuffer.js | 0 .../vbo}/linesBatching/LinesBatchingLayer.js | 9 +- .../linesBatching/LinesBatchingRenderers.js | 0 .../renderers/LinesBatchingColorRenderer.js | 0 .../LinesBatchingSilhouetteRenderer.js | 0 .../linesInstancing/LinesInstancingLayer.js | 17 +- .../LinesInstancingRenderers.js | 0 .../renderers/LinesInstancingColorRenderer.js | 0 .../LinesInstancingSilhouetteRenderer.js | 0 .../pointsBatching/PointsBatchingBuffer.js | 0 .../pointsBatching/PointsBatchingLayer.js | 9 +- .../pointsBatching/PointsBatchingRenderers.js | 0 .../renderers/PointsBatchingColorRenderer.js | 0 .../PointsBatchingOcclusionRenderer.js | 0 .../PointsBatchingPickDepthRenderer.js | 0 .../PointsBatchingPickMeshRenderer.js | 0 .../renderers/PointsBatchingShadowRenderer.js | 0 .../PointsBatchingSilhouetteRenderer.js | 0 .../pointsInstancing/PointsInstancingLayer.js | 16 +- .../PointsInstancingRenderers.js | 0 .../PointsInstancingColorRenderer.js | 0 .../PointsInstancingDepthRenderer.js | 0 .../PointsInstancingOcclusionRenderer.js | 0 .../PointsInstancingPickDepthRenderer.js | 0 .../PointsInstancingPickMeshRenderer.js | 0 .../PointsInstancingShadowRenderer.js | 0 .../PointsInstancingSilhouetteRenderer.js | 0 .../SnapBatchingDepthBufInitRenderer.js | 340 + .../snapBatching/SnapBatchingDepthRenderer.js | 353 + .../vbo/snapBatching/SnapBatchingRenderers.js | 71 + .../SnapInstancingDepthBufInitRenderer.js | 366 + .../SnapInstancingDepthRenderer.js | 375 + .../snapInstancing/SnapInstancingRenderers.js | 71 + .../TrianglesBatchingBuffer.js | 0 .../TrianglesBatchingLayer.js | 74 +- .../TrianglesBatchingRenderers.js | 0 .../TrianglesBatchingColorRenderer.js | 0 .../TrianglesBatchingColorTextureRenderer.js | 0 .../TrianglesBatchingDepthRenderer.js | 0 .../TrianglesBatchingEdgesColorRenderer.js | 0 .../TrianglesBatchingEdgesRenderer.js | 0 .../TrianglesBatchingFlatColorRenderer.js | 0 .../TrianglesBatchingNormalsRenderer.js | 0 .../TrianglesBatchingOcclusionRenderer.js | 0 .../renderers/TrianglesBatchingPBRRenderer.js | 0 .../TrianglesBatchingPickDepthRenderer.js | 0 .../TrianglesBatchingPickMeshRenderer.js | 0 ...rianglesBatchingPickNormalsFlatRenderer.js | 0 .../TrianglesBatchingPickNormalsRenderer.js | 0 .../TrianglesBatchingShadowRenderer.js | 0 .../TrianglesBatchingSilhouetteRenderer.js | 0 .../TrianglesInstancingLayer.js | 189 +- .../TrianglesInstancingRenderers.js | 0 .../TrianglesInstancingColorRenderer.js | 0 ...TrianglesInstancingColorTextureRenderer.js | 0 .../TrianglesInstancingDepthRenderer.js | 0 .../TrianglesInstancingEdgesColorRenderer.js | 0 .../TrianglesInstancingEdgesRenderer.js | 0 .../TrianglesInstancingFlatColorRenderer.js | 0 .../TrianglesInstancingFlatNormalsRenderer.js | 0 .../TrianglesInstancingNormalsRenderer.js | 0 .../TrianglesInstancingOcclusionRenderer.js | 0 .../TrianglesInstancingPBRRenderer.js | 2 +- .../TrianglesInstancingPickDepthRenderer.js | 0 .../TrianglesInstancingPickMeshRenderer.js | 0 ...anglesInstancingPickNormalsFlatRenderer.js | 0 .../TrianglesInstancingPickNormalsRenderer.js | 0 .../TrianglesInstancingShadowRenderer.js | 0 .../TrianglesInstancingSilhouetteRenderer.js | 0 .../DataTextureSceneModel.js | 1900 ----- .../lib/DataTextureSceneModelMesh.js | 276 - .../lib/DataTextureSceneModelNode.js | 736 -- .../lib/layers/DataTextureState.js | 1493 ---- .../trianglesDataTexture/LodCullingManager.js | 398 - .../TrianglesDataTextureBuffer.js | 45 - .../ViewFrustumCullingManager.js | 749 -- .../calculateUniquePositions.js | 156 - .../layers/trianglesDataTexture/rbush3d.js | 814 -- .../trianglesDataTexture/rebucketPositions.js | 449 -- .../PerformanceModel/PerformanceModel.js | 28 - .../scene/models/PerformanceModel/index.js | 1 - src/viewer/scene/models/SceneModel.js | 880 --- .../scene/models/VBOSceneModel/index.js | 2 - .../models/VBOSceneModel/lib/ENTITY_FLAGS.js | 21 - .../models/VBOSceneModel/lib/RENDER_PASSES.js | 34 - .../lib/VBOSceneModelGeometry.js | 166 - .../VBOSceneModel/lib/VBOSceneModelMesh.js | 281 - .../VBOSceneModel/lib/VBOSceneModelTexture.js | 47 - .../lib/VBOSceneModelTextureSet.js | 80 - src/viewer/scene/models/index.js | 5 - src/viewer/scene/nodes/Node.js | 2 +- src/viewer/scene/scene/Scene.js | 92 +- src/viewer/scene/vfc/VFC.js | 82 + src/viewer/scene/vfc/VFCManager.js | 54 + src/viewer/scene/vfc/VFCState.js | 391 + .../cluster-helper.js | 147 +- src/viewer/scene/vfc/index.js | 1 + src/viewer/scene/vfc/rbush3d.js | 848 +++ .../xeokit-cluster.js | 24 +- src/viewer/scene/webgl/PickResult.js | 15 +- src/viewer/scene/webgl/Renderer.js | 831 +- 648 files changed, 40091 insertions(+), 42078 deletions(-) create mode 100644 assets/images/IFC2x3House.png create mode 100644 assets/images/NavCubePlugin.png create mode 100644 assets/images/annotations.png create mode 100644 assets/images/aphs.png create mode 100644 assets/images/contextmenu.png create mode 100644 assets/images/distanceMeasurements.png create mode 100644 assets/images/geometry.png create mode 100644 assets/images/holterTower.png create mode 100644 assets/images/i1n8.png create mode 100644 assets/images/lyon_city.png create mode 100644 assets/images/mapPointCloud.png create mode 100644 assets/images/pbrXKT.png create mode 100644 assets/images/picking.png create mode 100644 assets/images/racmodel.png create mode 100644 assets/images/rme.png create mode 100644 assets/images/sceneModelTextured.png create mode 100644 assets/images/sectionPlane.png create mode 100644 assets/images/treeview.png delete mode 100644 examples/BIMOffline_StructureTreeViewPlugin_Schependomlaan.html delete mode 100644 examples/BIMOffline_XKT_Duplex.html delete mode 100644 examples/BIMOffline_XKT_Duplex_originalIFCColors.html delete mode 100644 examples/BIMOffline_XKT_HolterTower.html delete mode 100644 examples/BIMOffline_XKT_IFC2glTFConverter_HolterTower.html delete mode 100644 examples/BIMOffline_XKT_IFC2glTFConverter_Karhumaki_useDataTextures.html delete mode 100644 examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_HolterTower_useDataTextures.html delete mode 100644 examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC.html delete mode 100644 examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC_useDataTextures.html delete mode 100644 examples/BIMOffline_XKT_OTCConferenceCenter.html delete mode 100644 examples/BIMOffline_XKT_RevitSamples_RAC.html delete mode 100644 examples/BIMOffline_XKT_RevitSamples_RME.html delete mode 100644 examples/BIMOffline_XKT_Schependomlaan.html delete mode 100644 examples/BIMOffline_XKT_WaterLock.html delete mode 100644 examples/BIMOffline_XKT_authorMetadata.html delete mode 100644 examples/BIMOffline_XKT_includeTypes.html delete mode 100644 examples/BIMOffline_XKT_objectDefaults.html delete mode 100644 examples/Bitmap_storeyPlan.html delete mode 100644 examples/Configs_disableDoublePrecision.html delete mode 100644 examples/DimensionsFootprintModel_example2.html rename examples/{ => annotations}/annotations_clickFlyToPosition.html (94%) rename examples/{ => annotations}/annotations_clickShowLabels.html (93%) rename examples/{ => annotations}/annotations_createAtCenterOfClickedObject.html (91%) rename examples/{ => annotations}/annotations_createWithMouse.html (92%) rename examples/{ => annotations}/annotations_externalElements.html (93%) rename examples/{loading_XKT_jitter_fullPrecision_MAP_annotations.html => annotations/annotations_fullPrecision_MAP.html} (92%) rename examples/{ => annotations}/annotations_hoverShowLabels.html (93%) rename examples/{ => annotations}/annotations_occlusionDisabled.html (93%) create mode 100644 examples/annotations/index.html rename examples/{ => annotations}/markers_SpriteMarker.html (74%) create mode 100644 examples/bookmarking/index.html rename examples/{BCF_LoadViewpoint.html => bookmarking/loadViewpoint.html} (99%) rename examples/{BCF_LoadViewpoint_MultipleModels.html => bookmarking/loadViewpoint_MultipleModels.html} (99%) rename examples/{BCF_LoadViewpoint_defaultInvisible.html => bookmarking/loadViewpoint_defaultInvisible.html} (99%) rename examples/{BCF_LoadViewpoint_ortho.html => bookmarking/loadViewpoint_ortho.html} (99%) rename examples/{BCF_LoadViewpoint_withSectionPlanesPlugin.html => bookmarking/loadViewpoint_withSectionPlanesPlugin.html} (99%) rename examples/{ => bookmarking}/mementos_ObjectsMemento.html (88%) rename examples/{BCF_SaveViewpoint.html => bookmarking/saveViewpoint.html} (89%) rename examples/{BCF_SaveViewpoint_BitmapsAndLines.html => bookmarking/saveViewpoint_BitmapsAndLines.html} (90%) rename examples/{BCF_SaveViewpoint_MultipleModels.html => bookmarking/saveViewpoint_MultipleModels.html} (87%) rename examples/{BCF_SaveViewpoint_ortho.html => bookmarking/saveViewpoint_ortho.html} (91%) rename examples/{loading_glTF_Duplex_transform.html => buildings/glTF_Duplex_transform.html} (78%) rename examples/{loading_glTF_Schependomlaan.html => buildings/glTF_Schependomlaan.html} (81%) rename examples/{loading_glTF_VianneyHouse.html => buildings/glTF_VianneyHouse.html} (55%) rename examples/{loading_glTF_WestRiverSideHospital.html => buildings/glTF_WestRiverSideHospital.html} (71%) rename examples/{loading_glTF_embedded_MAP.html => buildings/glTF_embedded_MAP.html} (78%) rename examples/{loading_glb_HousePlan.html => buildings/glb_HousePlan.html} (67%) rename examples/{loading_glb_VianneyHouse.html => buildings/glb_VianneyHouse.html} (60%) create mode 100644 examples/buildings/index.html rename examples/{loading_XKT_jitter_singlePrecision_MAP.html => buildings/jitter_singlePrecision_MAP.html} (87%) rename examples/{positioningModels_WebIFCLoaderPlugin_cartesianCoordinates.html => buildings/positioning_cartesianCoordinates.html} (75%) rename examples/{positioningModels_WebIFCLoaderPlugin_geodesicCoordinates.html => buildings/positioning_geodesicCoordinates.html} (88%) create mode 100644 examples/buildings/web-ifc_dtx_Duplex.html create mode 100644 examples/buildings/web-ifc_dtx_MAPGroundFloor.html rename examples/{BIMOffline_WebIFCLoaderPlugin_Duplex.html => buildings/web-ifc_vbo_Duplex.html} (87%) rename examples/{BIMOffline_WebIFCLoaderPlugin_MAPGroundFloor.html => buildings/web-ifc_vbo_MAPGroundFloor.html} (82%) rename examples/{BIMOffline_WebIFCLoaderPlugin_ignoreMetadata.html => buildings/web-ifc_vbo_ignoreMetadata.html} (87%) rename examples/{BIMOffline_WebIFCLoaderPlugin_isolateStorey.html => buildings/web-ifc_vbo_isolateStorey.html} (87%) rename examples/{DimensionsFootprintModel_example1.html => buildings/xkt_dtx_APHS.html} (56%) create mode 100644 examples/buildings/xkt_dtx_HolterTower.html create mode 100644 examples/buildings/xkt_dtx_IfcOpenHouse4.html create mode 100644 examples/buildings/xkt_dtx_MAP.html create mode 100644 examples/buildings/xkt_dtx_RAC.html create mode 100644 examples/buildings/xkt_dtx_Schependomlaan.html create mode 100644 examples/buildings/xkt_dtx_Store.html rename examples/{BIMOffline_XKT_WestRiverSideHospital.html => buildings/xkt_dtx_WestRiverSideHospital.html} (81%) rename examples/{BIMOffline_XKT_metadata_Schependomlaan.html => buildings/xkt_dtx_metadata_Schependomlaan.html} (89%) rename examples/{BIMOffline_XKT_metadata_moveStoreys.html => buildings/xkt_dtx_metadata_moveStoreys.html} (90%) rename examples/{BIMOffline_XKT_ArchiCADSamples_DemoProjekt.html => buildings/xkt_vbo_DemoProjekt.html} (92%) rename examples/{loading_CityJSON_Railway.html => buildings/xkt_vbo_Duplex.html} (67%) create mode 100644 examples/buildings/xkt_vbo_HolterTower.html create mode 100644 examples/buildings/xkt_vbo_HousePlan.html create mode 100644 examples/buildings/xkt_vbo_IfcOpenHouse4.html create mode 100644 examples/buildings/xkt_vbo_MAP.html create mode 100644 examples/buildings/xkt_vbo_OTCCenferenceCenter.html create mode 100644 examples/buildings/xkt_vbo_RAC.html create mode 100644 examples/buildings/xkt_vbo_RME.html create mode 100644 examples/buildings/xkt_vbo_Schependomlaan.html create mode 100644 examples/buildings/xkt_vbo_WaterLock.html rename examples/{BIMOffline_XKT_Federated_Clinic.html => buildings/xkt_vbo_federated_Clinic.html} (97%) create mode 100644 examples/buildings/xkt_vbo_textures_HousePlan.html rename examples/{loading_3DXML_TreeView.html => cad/3DXML_Widget.html} (96%) rename examples/{loading_OBJ_SportsCar.html => cad/OBJ_SportsCar.html} (79%) rename examples/{loading_STL_SpurGear.html => cad/STL_SpurGear.html} (64%) rename examples/{loading_STL_dataAsParam.html => cad/STL_dataAsParam.html} (85%) rename examples/{loading_STL_dataSource.html => cad/STL_dataSource.html} (86%) rename examples/{loading_STL_doublePrecision.html => cad/STL_doublePrecision.html} (87%) create mode 100644 examples/cad/index.html rename examples/{loading_CityJSONLoaderPlugin_Railway.html => cities/CityJSON_NewYork.html} (88%) rename examples/{loading_CityJSONLoaderPlugin_NewYork.html => cities/CityJSON_Railway.html} (81%) rename examples/{logDepthBuf_XKT_Lyon.html => cities/XKT_Lyon.html} (83%) rename examples/{logDepthBuf_XKT_Lyon_logDepthBufDisabled.html => cities/XKT_Lyon_logDepthBufDisabled.html} (92%) rename examples/{BIMOffline_XKT_DoublePrecision_Lyon.html => cities/XKT_dtx_Lyon.html} (67%) create mode 100644 examples/cities/index.html delete mode 100644 examples/default.html delete mode 100644 examples/emphasis_colorize_throughXRay.html delete mode 100644 examples/emphasis_selectedAndHighlighted_throughTransparent_Duplex.html delete mode 100644 examples/emphasis_selected_throughXRay.html rename examples/{picking_canvas_mesh_colorize_click.html => emphasising/colorize.html} (65%) rename examples/{picking_canvas_mesh_highlight.html => emphasising/highlight.html} (67%) rename examples/{picking_canvas_mesh_highlight_glowThroughFalse.html => emphasising/highlight_glowThroughFalse.html} (74%) rename examples/{picking_canvas_mesh_highlight_transparent.html => emphasising/highlight_transparentCanvas.html} (87%) create mode 100644 examples/emphasising/index.html rename examples/{picking_canvas_mesh_opacity.html => emphasising/opacity.html} (67%) create mode 100644 examples/emphasising/select.html rename examples/{picking_canvas_mesh_select_glowThroughFalse.html => emphasising/select_glowThroughFalse.html} (74%) rename examples/{picking_canvas_mesh_select_transparent.html => emphasising/select_transparentCanvas.html} (87%) rename examples/{picking_canvas_mesh_select.html => emphasising/xray.html} (66%) rename examples/{picking_canvas_mesh_xray_transparent.html => emphasising/xray_transparentCanvas.html} (68%) create mode 100644 examples/geometry/index.html delete mode 100644 examples/geometry_loaders_load3DSGeometry.html delete mode 100644 examples/geometry_loaders_loadOBJGeometry.html delete mode 100644 examples/gizmos_SectionPlanesPlugin.html create mode 100644 examples/index2.html rename examples/{loading_glTF_Roadworks.html => lidar/glb_Roadworks.html} (77%) rename examples/{loading_glb_SkatePark.html => lidar/glb_SkatePark.html} (78%) create mode 100644 examples/lidar/index.html rename examples/{loading_LASLoaderPlugin_Autzen.html => lidar/las_Autzen.html} (90%) rename examples/{loading_LASLoaderPlugin_IndoorScan.html => lidar/las_IndoorScan.html} (93%) rename examples/{loading_LAZ_Autzen.html => lidar/laz_Autzen.html} (89%) rename examples/{loading_LAZ_IndoorScan.html => lidar/laz_IndoorScan.html} (91%) rename examples/{loading_XKT_MAP_pointCloud.html => lidar/xkt_MAP.html} (89%) delete mode 100644 examples/loading_3DXML_Widget.html delete mode 100644 examples/loading_3DXML_materialType_Metallic.html delete mode 100644 examples/loading_3DXML_materialType_Phong.html delete mode 100644 examples/loading_3DXML_materialType_Specular.html delete mode 100644 examples/loading_CityJSON_NewYork.html delete mode 100644 examples/loading_MultipleModels.html delete mode 100644 examples/loading_XKT_APHS.html delete mode 100644 examples/loading_XKT_BoxTextured.html delete mode 100644 examples/loading_XKT_ConvenienceStore.html delete mode 100644 examples/loading_XKT_DamagedHelmet.html delete mode 100644 examples/loading_XKT_Duplex.html delete mode 100644 examples/loading_XKT_Duplex_originalIFCColors.html delete mode 100644 examples/loading_XKT_Duplex_transform.html delete mode 100644 examples/loading_XKT_HousePlan.html delete mode 100644 examples/loading_XKT_HousePlan_NoTextures.html delete mode 100644 examples/loading_XKT_MAP.html delete mode 100644 examples/loading_XKT_OTCConferenceCenter.html delete mode 100644 examples/loading_XKT_Roadworks.html delete mode 100644 examples/loading_XKT_Schependomlaan.html delete mode 100644 examples/loading_XKT_Schependomlaan_transform.html delete mode 100644 examples/loading_XKT_Textures_DamagedHelmet.html delete mode 100644 examples/loading_XKT_Textures_HousePlan.html delete mode 100644 examples/loading_XKT_WestRiverSideHospital.html delete mode 100644 examples/loading_XKT_concurrently.html delete mode 100644 examples/loading_XKT_dataSource.html delete mode 100644 examples/loading_XKT_forceBackfaces.html delete mode 100644 examples/loading_XKT_jitter_fullPrecision_MAP.html delete mode 100644 examples/loading_XKT_maxGeometryBatchSize_50M.html delete mode 100644 examples/loading_glTF_BoxTextured.html delete mode 100644 examples/loading_glTF_HousePlan.html delete mode 100644 examples/loading_glTF_SkatePark.html delete mode 100644 examples/loading_glTF_binary_Roadworks.html delete mode 100644 examples/loading_glTF_dataSource.html delete mode 100644 examples/loading_glTF_embedded_Box.html delete mode 100644 examples/loading_glb_2CylinderEngine.html delete mode 100644 examples/loading_glb_Box.html delete mode 100644 examples/loading_glb_BoxTextured.html delete mode 100644 examples/loading_glb_DamagedHelmet.html rename examples/{loading_XKT_maxGeometryBatchSize_20K.html => measurement/XKT_dtx_Lyon.html} (62%) rename examples/{measurements_angle_createWithMouse.html => measurement/angle_createWithMouse_edgeSnapping.html} (72%) rename examples/{measurements_angle_createWithMouse_precision.html => measurement/angle_createWithMouse_vertexSnapping.html} (64%) rename examples/{measurements_angle_modelWithMeasurements.html => measurement/angle_modelWithMeasurements.html} (97%) rename examples/{measurements_distance_createWithMouse.html => measurement/distance_createWithMouse_edgeSnapping.html} (89%) rename examples/{measurements_distance_createWithMouse_snapToVertex.html => measurement/distance_createWithMouse_vertexSnapping.html} (86%) create mode 100644 examples/measurement/distance_createWithMouse_vertexSnapping_Lyon.html rename examples/{measurements_distance_modelWithMeasurements.html => measurement/distance_modelWithMeasurements.html} (98%) rename examples/{measurements_distance_modelWithMeasurements_hideAxisWires.html => measurement/distance_modelWithMeasurements_hideAxisWires.html} (87%) rename examples/{measurements_distance_unitsAndScale.html => measurement/distance_unitsAndScale.html} (87%) create mode 100644 examples/measurement/index.html delete mode 100644 examples/measurements_angle_createWithMouse_photogrammetry.html delete mode 100644 examples/measurements_distance_createWithMouse_perf.html delete mode 100644 examples/measurements_distance_createWithMouse_photogrammetry.html delete mode 100644 examples/measurements_distance_createWithMouse_precision.html rename examples/{gizmos_AxisGizmoPlugin.html => navigation/AxisGizmoPlugin.html} (77%) rename examples/{ => navigation}/CameraControl_firstPerson_Duplex.html (93%) rename examples/{ => navigation}/CameraControl_firstPerson_HolterTower.html (93%) rename examples/{ => navigation}/CameraControl_firstPerson_MAP.html (93%) rename examples/{ => navigation}/CameraControl_keyMap.html (90%) rename examples/{ => navigation}/CameraControl_keyboardEventsElement.html (94%) rename examples/{ => navigation}/CameraControl_orbit_Duplex.html (93%) rename examples/{ => navigation}/CameraControl_orbit_Duplex_smallCanvas.html (93%) rename examples/{ => navigation}/CameraControl_orbit_Duplex_tallCanvas.html (93%) rename examples/{ => navigation}/CameraControl_orbit_HolterTower.html (94%) rename examples/{ => navigation}/CameraControl_orbit_Lyon.html (91%) rename examples/{ => navigation}/CameraControl_orbit_MAP.html (93%) rename examples/{ => navigation}/CameraControl_orbit_OTCConferenceCenter.html (93%) rename examples/{ => navigation}/CameraControl_orbit_WaterLock.html (92%) rename examples/{ => navigation}/CameraControl_pivotMarker.html (86%) rename examples/{ => navigation}/CameraControl_planView_Schependomlaan.html (92%) rename examples/{ => navigation}/ContextMenu_Canvas_TreeViewPlugin_Custom.html (98%) rename examples/{ => navigation}/ContextMenu_dynamicItemTitles.html (93%) rename examples/{ => navigation}/ContextMenu_dynamicItemVisibilities.html (93%) rename examples/{ => navigation}/ContextMenu_subMenus.html (93%) rename examples/{gizmos_NavCubePlugin.html => navigation/NavCubePlugin.html} (81%) rename examples/{gizmos_NavCubePlugin_customColors.html => navigation/NavCubePlugin_customColors.html} (84%) rename examples/{gizmos_NavCubePlugin_trueNorth.html => navigation/NavCubePlugin_trueNorth.html} (84%) rename examples/{ => navigation}/TreeViewPlugin_Containment.html (92%) create mode 100644 examples/navigation/TreeViewPlugin_Containment_3DXML.html rename examples/{TreeViewPlugin_Containment_MultipleModels.html => navigation/TreeViewPlugin_Containment_Federated.html} (89%) rename examples/{sceneRepresentation_VBOSceneModel_metadata.html => navigation/TreeViewPlugin_Containment_SceneModel.html} (90%) rename examples/{sceneRepresentation_VBOSceneModel_metadata_federated.html => navigation/TreeViewPlugin_Containment_SceneModel_Federated.html} (93%) rename examples/{ => navigation}/TreeViewPlugin_Storeys.html (92%) rename examples/{ => navigation}/TreeViewPlugin_Storeys_validate.html (89%) rename examples/{ => navigation}/TreeViewPlugin_Types.html (92%) rename examples/{BIMOffline_XKT_DoublePrecision_MAP.html => navigation/TreeViewPlugin_Types_Federated.html} (83%) rename examples/{ => navigation}/TreeViewPlugin_options_rootName.html (93%) rename examples/{ => navigation}/camera_CameraFlightAnimation_projection.html (76%) rename examples/{ => navigation}/camera_CameraPathAnimation.html (94%) rename examples/{ => navigation}/camera_CameraPathAnimation2.html (96%) rename examples/{ => navigation}/camera_CameraPathAnimation_dataTextures.html (96%) rename examples/{ => navigation}/camera_fitToModel.html (72%) create mode 100644 examples/navigation/index.html rename examples/{ => navigation}/localization_NavCubePlugin.html (87%) rename examples/{performance_FastNavPlugin.html => performance/FastNavPlugin_HolterTower.html} (92%) rename examples/{performance_ViewCullPlugin_CameraPathAnimation.html => performance/ViewCullPlugin_CameraPathAnimation.html} (96%) create mode 100644 examples/performance/index.html create mode 100644 examples/performance/lodCulling_HolterTower.html rename examples/{ => performance}/techniques_findComplexEntities.html (92%) rename examples/{ => performance}/techniques_nonInteractiveQuality.html (90%) create mode 100644 examples/performance/viewCulling_HolterTower.html delete mode 100644 examples/performance_ViewCullPlugin.html create mode 100644 examples/picking/doubleClick_entity.html rename examples/{picking_canvas_mesh_colorize.html => picking/hover_entity.html} (53%) create mode 100644 examples/picking/index.html create mode 100644 examples/picking/pick_canvas_entity.html rename examples/{picking_canvas_surface.html => picking/pick_canvas_surface.html} (91%) rename examples/{picking_ray_mesh.html => picking/pick_ray_entity.html} (92%) rename examples/{picking_ray_matrix.html => picking/pick_ray_matrix.html} (94%) rename examples/{picking_ray_surface.html => picking/pick_ray_surface.html} (94%) rename examples/{picking_setObjectsPickable.html => picking/pick_setObjectsPickable.html} (90%) rename examples/{ => picking}/picking_canvas_surface_precision.html (93%) rename examples/{ => picking}/picking_pickSurfacePrecision_VBOSceneModel_batching.html (94%) rename examples/{ => picking}/picking_pickSurfacePrecision_VBOSceneModel_instancing.html (92%) rename examples/{ => picking}/picking_surface_canvas_precision.html (97%) create mode 100644 examples/picking/snapToEdge.html create mode 100644 examples/picking/snapToVertex.html delete mode 100644 examples/picking_canvas_click.html delete mode 100644 examples/picking_canvas_doubleClick.html delete mode 100644 examples/picking_canvas_mesh_xray.html delete mode 100644 examples/positioningModels_GLTFLoaderPlugin_animateOriginAndRotation.html delete mode 100644 examples/postEffects_SAO_Duplex.html delete mode 100644 examples/postEffects_SAO_Schependomlaan.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_PBR.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_SAO.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_annotations.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_autoNormals.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_lines.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_points.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_textures.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_textures_ktx2.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_textures_pbr.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_batching_transform.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing2_SAO.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_PBR.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_PBR_spheres.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_lines.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_origin.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_origin_SAO.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_points.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_textures.html delete mode 100644 examples/sceneRepresentation_VBOSceneModel_instancing_textures_pbr.html rename examples/{ => scenegraph}/ImagePlane_groundPlane.html (85%) rename examples/{ => scenegraph}/ImagePlane_groundPlane_narrow.html (85%) rename examples/{ => scenegraph}/ImagePlane_groundPlane_wide.html (85%) rename examples/{ => scenegraph}/ImagePlane_imageInSectionPlane.html (87%) rename examples/{ => scenegraph}/LineSet_grid.html (81%) rename examples/{ => scenegraph}/billboarding_Mesh_cylindrical.html (82%) rename examples/{ => scenegraph}/billboarding_Mesh_spherical.html (82%) rename examples/{geometry_builders_buildBoxGeometry.html => scenegraph/buildBoxGeometry.html} (77%) rename examples/{geometry_builders_buildBoxLinesGeometry.html => scenegraph/buildBoxLinesGeometry.html} (78%) rename examples/{geometry_builders_buildCylinderGeometry.html => scenegraph/buildCylinderGeometry.html} (79%) rename examples/{geometry_builders_buildGridGeometry.html => scenegraph/buildGridGeometry.html} (79%) rename examples/{geometry_builders_buildPlaneGeometry.html => scenegraph/buildPlaneGeometry.html} (76%) rename examples/{geometry_builders_buildSphereGeometry.html => scenegraph/buildSphereGeometry.html} (78%) rename examples/{geometry_builders_buildTorusGeometry.html => scenegraph/buildTorusGeometry.html} (78%) rename examples/{geometry_builders_buildVectorTextGeometry.html => scenegraph/buildVectorTextGeometry.html} (80%) rename examples/{ => scenegraph}/geometry_ReadableGeometry.html (77%) rename examples/{ => scenegraph}/geometry_VBOGeometry.html (78%) create mode 100644 examples/scenegraph/index.html rename examples/{sceneRepresentation_lightingTest_viewDirLights.html => scenegraph/lightingTest_viewDirLights.html} (94%) rename examples/{sceneRepresentation_lightingTest_viewPointLights.html => scenegraph/lightingTest_viewPointLights.html} (94%) rename examples/{sceneRepresentation_lightingTest_worldDirLights.html => scenegraph/lightingTest_worldDirLights.html} (94%) rename examples/{sceneRepresentation_lightingTest_worldPointLights.html => scenegraph/lightingTest_worldPointLights.html} (94%) rename examples/{ => scenegraph}/lights_AmbientLight.html (81%) rename examples/{ => scenegraph}/lights_DirLight_view.html (83%) rename examples/{ => scenegraph}/lights_DirLight_world.html (83%) rename examples/{ => scenegraph}/lights_PointLight_view.html (83%) rename examples/{ => scenegraph}/lights_PointLight_world.html (83%) create mode 100644 examples/scenegraph/markers_SpriteMarker.html rename examples/{ => scenegraph}/materials_EdgeMaterial.html (82%) rename examples/{ => scenegraph}/materials_EmphasisMaterial.html (91%) rename examples/{ => scenegraph}/materials_Fresnel.html (80%) rename examples/{ => scenegraph}/materials_LambertMaterial.html (83%) rename examples/{ => scenegraph}/materials_LinesMaterial.html (84%) rename examples/{ => scenegraph}/materials_MetallicMaterial.html (77%) rename examples/{ => scenegraph}/materials_PhongMaterial.html (80%) rename examples/{ => scenegraph}/materials_PointsMaterial.html (87%) rename examples/{ => scenegraph}/materials_Texture.html (79%) rename examples/{sceneRepresentation_SceneGraph.html => scenegraph/sceneGraph.html} (91%) rename examples/{sceneRepresentation_SceneGraph_ReadableGeometry.html => scenegraph/sceneGraph_ReadableGeometry.html} (93%) rename examples/{sceneRepresentation_SceneGraph_VBOGeometry.html => scenegraph/sceneGraph_VBOGeometry.html} (93%) rename examples/{sceneRepresentation_SceneGraph_metadata.html => scenegraph/sceneGraph_metadata.html} (93%) rename examples/{sceneRepresentation_SceneGraph_rtcCenter.html => scenegraph/sceneGraph_rtc.html} (92%) rename examples/{sceneRepresentation_SceneGraph_rtcCenter_sectionPlanes.html => scenegraph/sceneGraph_rtc_sectionPlanes.html} (93%) create mode 100644 examples/scenemodel/SceneModel_metadata_TreeViewPlugin.html create mode 100644 examples/scenemodel/SceneModel_metadata_federated_TreeViewPlugin.html create mode 100644 examples/scenemodel/SceneModel_pbr_batching_uncomp_tris.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_geometries.html => scenemodel/SceneModel_vbo_instancing_geometries.html} (78%) create mode 100644 examples/scenemodel/benchmark_dtx_batching_autocompressed_triangles.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_benchmark.html => scenemodel/benchmark_dtx_instancing_autocompressed_triangles.html} (83%) rename examples/{sceneRepresentation_VBOSceneModel_batching_benchmark.html => scenemodel/benchmark_vbo_batching_autocompressed_triangles.html} (86%) rename examples/{sceneRepresentation_VBOSceneModel_batching_origin_SAO.html => scenemodel/dtx_batching_autocompressed_rtc_sectionPlanes.html} (68%) create mode 100644 examples/scenemodel/dtx_batching_autocompressed_triangles.html create mode 100644 examples/scenemodel/dtx_batching_autocompressed_triangles_rtc.html create mode 100644 examples/scenemodel/dtx_batching_precompressed_bucketed_triangles.html create mode 100644 examples/scenemodel/dtx_batching_precompressed_triangles.html create mode 100644 examples/scenemodel/dtx_instancing_autocompressed_triangles.html create mode 100644 examples/scenemodel/dtx_instancing_precompressed_bucketed_triangles.html create mode 100644 examples/scenemodel/dtx_instancing_precompressed_triangles.html create mode 100644 examples/scenemodel/dtx_lightingTest_viewDirLights.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_transform.html => scenemodel/effects_dtx_batching_SAO.html} (81%) create mode 100644 examples/scenemodel/effects_dtx_instancing_SAO.html rename examples/{sceneRepresentation_VBOSceneModel_batching.html => scenemodel/effects_vbo_batching_SAO.html} (83%) rename examples/{sceneRepresentation_VBOSceneModel_batching_colorize.html => scenemodel/effects_vbo_batching_colorize.html} (90%) rename examples/{sceneRepresentation_VBOSceneModel_batching_edges.html => scenemodel/effects_vbo_batching_highlight.html} (89%) rename examples/{sceneRepresentation_VBOSceneModel_batching_opacity.html => scenemodel/effects_vbo_batching_opacity.html} (91%) rename examples/{sceneRepresentation_VBOSceneModel_batching_measureDistance.html => scenemodel/effects_vbo_batching_select.html} (85%) rename examples/{sceneRepresentation_VBOSceneModel_instancing_SAO.html => scenemodel/effects_vbo_instancing_SAO.html} (86%) create mode 100644 examples/scenemodel/index.html create mode 100644 examples/scenemodel/lighting_vbo_view_dir.html create mode 100644 examples/scenemodel/lod_dtx_batching_autocompressed_triangles.html create mode 100644 examples/scenemodel/lod_dtx_instancing_autocompressed_triangles.html create mode 100644 examples/scenemodel/lod_vbo_batching_autocompressed_triangles.html create mode 100644 examples/scenemodel/lod_vbo_instancing_autocompressed_triangles.html rename examples/{ => scenemodel}/logDepthBuf_SceneGraph_RTC.html (95%) rename examples/{ => scenemodel}/logDepthBuf_SceneGraph_RTC_logDepthBufDisabled.html (95%) rename examples/{ => scenemodel}/logDepthBuf_VBOSceneModel_batching_RTC.html (94%) rename examples/{ => scenemodel}/logDepthBuf_VBOSceneModel_batching_RTC_annotations.html (95%) rename examples/{ => scenemodel}/logDepthBuf_VBOSceneModel_batching_RTC_logDepthBufDisabled.html (94%) rename examples/{ => scenemodel}/logDepthBuf_VBOSceneModel_instancing_RTC.html (93%) rename examples/{ => scenemodel}/logDepthBuf_VBOSceneModel_instancing_RTC_logDepthBufDisabled.html (93%) rename examples/{sceneRepresentation_VBOSceneModel_batching_origin.html => scenemodel/rtc_dtx_batching_autocompressed_triangles.html} (72%) create mode 100644 examples/scenemodel/rtc_dtx_batching_precompressed_triangles.html create mode 100644 examples/scenemodel/rtc_dtx_instancing_precompressed_triangles.html create mode 100644 examples/scenemodel/sectionPlanes_dtx_batching_rtc.html create mode 100644 examples/scenemodel/sectionPlanes_dtx_instancing_rtc.html rename examples/{sceneRepresentation_VBOSceneModel_batching_origin_sectionPlanes.html => scenemodel/sectionPlanes_vbo_batching_rtc.html} (91%) rename examples/{sceneRepresentation_VBOSceneModel_instancing_batching_origin_sectionPlanes.html => scenemodel/sectionPlanes_vbo_instancing_rtc.html} (89%) create mode 100644 examples/scenemodel/snapToEdge_dtx_batching_triangles.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_autoNormals.html => scenemodel/snapToEdge_dtx_instancing_triangles.html} (71%) create mode 100644 examples/scenemodel/snapToEdge_vbo_batching_triangles.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_colorize.html => scenemodel/snapToEdge_vbo_instancing_triangles.html} (73%) create mode 100644 examples/scenemodel/snapToVertex_dtx_batching_triangles.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_edges.html => scenemodel/snapToVertex_dtx_instancing_triangles.html} (70%) create mode 100644 examples/scenemodel/snapToVertex_vbo_batching_triangles.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_opacity.html => scenemodel/snapToVertex_vbo_instancing_triangles.html} (73%) create mode 100644 examples/scenemodel/vbo_batching_autocompressed_triangles.html create mode 100644 examples/scenemodel/vbo_batching_autocompressed_triangles_rtc.html create mode 100644 examples/scenemodel/vbo_batching_autocompressed_triangles_textures_jpg.html create mode 100644 examples/scenemodel/vbo_batching_autocompressed_triangles_textures_ktx2.html create mode 100644 examples/scenemodel/vbo_batching_precompressed_triangles.html create mode 100644 examples/scenemodel/vbo_batching_precompressed_triangles_rtc.html create mode 100644 examples/scenemodel/vbo_batching_precompressed_triangles_textures_jpg.html create mode 100644 examples/scenemodel/vbo_batching_precompressed_triangles_textures_ktx2.html create mode 100644 examples/scenemodel/vbo_instancing_autocompressed_triangles.html rename examples/{sceneRepresentation_VBOSceneModel_instancing_origin_sectionPlanes.html => scenemodel/vbo_instancing_autocompressed_triangles_rtc.html} (54%) create mode 100644 examples/scenemodel/vbo_instancing_autocompressed_triangles_textures_jpg.html create mode 100644 examples/scenemodel/vbo_instancing_autocompressed_triangles_textures_ktx2.html create mode 100644 examples/scenemodel/vbo_instancing_precompressed_triangles.html create mode 100644 examples/scenemodel/vbo_instancing_precompressed_triangles_rtc.html create mode 100644 examples/scenemodel/vbo_instancing_precompressed_triangles_textures_jpg.html create mode 100644 examples/scenemodel/vbo_instancing_precompressed_triangles_textures_ktx2.html create mode 100644 examples/scenemodel/worldMatrix_vbo_batching_autocompressed_triangles.html rename examples/{gizmos_FaceAlignedSectionPlanesPlugin.html => slicing/FaceAlignedSectionPlanesPlugin.html} (90%) rename examples/{gizmos_SectionPlanesPlugin_Duplex.html => slicing/SectionPlanesPlugin_Duplex.html} (88%) rename examples/{gizmos_SectionPlanesPlugin_Duplex_FastNavPlugin.html => slicing/SectionPlanesPlugin_Duplex_FastNavPlugin.html} (87%) rename examples/{gizmos_SectionPlanesPlugin_bugfix_moveSectionPlanesCanvas.html => slicing/SectionPlanesPlugin_bugfix_moveSectionPlanesCanvas.html} (94%) rename examples/{gizmos_SectionPlanesPlugin_createWithMouse.html => slicing/SectionPlanesPlugin_createWithMouse.html} (88%) rename examples/{gizmos_SectionPlanesPlugin_createWithMouse_photogrammetry.html => slicing/SectionPlanesPlugin_createWithMouse_photogrammetry.html} (89%) rename examples/{gizmos_SectionPlanesPlugin_flipSectionPlanes.html => slicing/SectionPlanesPlugin_flipSectionPlanes.html} (87%) create mode 100644 examples/slicing/SectionPlanesPlugin_imageInSectionPlane.html rename examples/{gizmos_SectionPlanesPlugin_ortho.html => slicing/SectionPlanesPlugin_ortho.html} (88%) rename examples/{gizmos_SectionPlanesPlugin_ortho_OTCConferenceCenter.html => slicing/SectionPlanesPlugin_ortho_OTCConferenceCenter.html} (85%) create mode 100644 examples/slicing/index.html rename examples/{gizmos_SectionPlanesPlugin_getSnapshot.html => snapshots/getSnapshot_excludeSectionPlaneControl.html} (90%) rename examples/{gizmos_SectionPlanesPlugin_getSnapshot_includeGizmos.html => snapshots/getSnapshot_includeSectionPlaneControl.html} (90%) rename examples/{screenshots_png_getSnapshot.html => snapshots/getSnapshot_png.html} (90%) rename examples/{screenshots_png_getSnapshot_hires.html => snapshots/getSnapshot_png_hires.html} (89%) rename examples/{screenshots_png_toDataURL.html => snapshots/getSnapshot_png_toDataURL.html} (90%) rename examples/{screenshots_png_getSnapshot_withMeasurements.html => snapshots/getSnapshot_png_withMeasurements.html} (91%) create mode 100644 examples/snapshots/index.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_createStoreyMap.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_createStoreyMap_height.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera2.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_pickStoreyMap.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_recipe1.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_recipe2.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_recipe3.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_recipe4.html delete mode 100644 examples/storeyViews_StoreyViewsPlugin_showStoreyObjects.html create mode 100644 examples/viewer/index.html create mode 100644 examples/viewer/localization_NavCubePlugin.html rename examples/{ => viewer}/localization_NavCubePlugin_defaultLocaleService.html (86%) rename examples/{logDepthBuf_XKT_MAP_ortho.html => viewer/logDepthBuf_ortho.html} (89%) create mode 100644 examples/viewer/logDepthBuf_perspective.html rename examples/{postEffects_SAO_OTCConferenceCenter.html => viewer/sao_ConferenceCenter.html} (91%) rename examples/{ => viewer}/spinner_custom.html (94%) delete mode 100644 examples/viewer_createDestroyRepeat.html delete mode 100644 examples/viewer_createDestroyRepeatNewCanvas.html delete mode 100644 examples/viewer_disableAntialiasing.html rename src/plugins/GLTFLoaderPlugin/{GLTFVBOSceneModelLoader.js => GLTFSceneModelLoader.js} (99%) create mode 100644 src/viewer/scene/lod/LOD.js create mode 100644 src/viewer/scene/lod/LODCullingManager.js create mode 100644 src/viewer/scene/lod/LODState.js create mode 100644 src/viewer/scene/lod/index.js rename src/viewer/scene/{models/DataTextureSceneModel/lib => model}/ENTITY_FLAGS.js (100%) create mode 100644 src/viewer/scene/model/PerformanceModel.js rename src/viewer/scene/{models/DataTextureSceneModel/lib => model}/RENDER_PASSES.js (100%) rename src/viewer/scene/{models/VBOSceneModel/VBOSceneModel.js => model/SceneModel.js} (58%) rename src/viewer/scene/{models/VBOSceneModel/lib/VBOSceneModelNode.js => model/SceneModelEntity.js} (52%) create mode 100644 src/viewer/scene/model/SceneModelMesh.js create mode 100644 src/viewer/scene/model/SceneModelTexture.js create mode 100644 src/viewer/scene/model/SceneModelTextureSet.js create mode 100644 src/viewer/scene/model/VBOSceneModel.js rename src/viewer/scene/{models/VBOSceneModel/lib => model}/compression.js (89%) create mode 100644 src/viewer/scene/model/dtx/triangles/BindableDataTexture.js create mode 100644 src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js create mode 100644 src/viewer/scene/model/dtx/triangles/DataTextureState.js create mode 100644 src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/TrianglesDataTextureLayer.js (60%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/TrianglesDataTextureRenderers.js (92%) create mode 100644 src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js create mode 100644 src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js create mode 100644 src/viewer/scene/model/dtx/triangles/rebucketPositions.js rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureColorQualityRenderer.js (98%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureColorRenderer.js (93%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureDepthRenderer.js (76%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureEdgesColorRenderer.js (92%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureEdgesRenderer.js (83%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureNormalsRenderer.js (97%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureOcclusionRenderer.js (95%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTexturePickDepthRenderer.js (77%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTexturePickMeshRenderer.js (92%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js (92%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTexturePickNormalsRenderer.js (78%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureShadowRenderer.js (97%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => model/dtx/triangles}/renderers/TrianglesDataTextureSilhouetteRenderer.js (76%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureSnapPickZBufferInitializer.js => model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js} (66%) rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureVertexDepthRenderer.js => model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js} (70%) create mode 100644 src/viewer/scene/model/index.js rename src/viewer/scene/{models/VBOSceneModel/lib => model/vbo}/ScratchMemory.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/VBOSceneModelRenderers.js (85%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/float16.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesBatching/LinesBatchingBuffer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesBatching/LinesBatchingLayer.js (98%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesBatching/LinesBatchingRenderers.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesBatching/renderers/LinesBatchingColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesInstancing/LinesInstancingLayer.js (97%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesInstancing/LinesInstancingRenderers.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesInstancing/renderers/LinesInstancingColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/PointsBatchingBuffer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/PointsBatchingLayer.js (98%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/PointsBatchingRenderers.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/renderers/PointsBatchingColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/renderers/PointsBatchingShadowRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/PointsInstancingLayer.js (98%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/PointsInstancingRenderers.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/renderers/PointsInstancingColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/renderers/PointsInstancingDepthRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/renderers/PointsInstancingShadowRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js (100%) create mode 100644 src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js create mode 100644 src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js create mode 100644 src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js create mode 100644 src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js create mode 100644 src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js create mode 100644 src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/TrianglesBatchingBuffer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/TrianglesBatchingLayer.js (95%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/TrianglesBatchingRenderers.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/TrianglesInstancingLayer.js (84%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/TrianglesInstancingRenderers.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js (99%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js (100%) rename src/viewer/scene/{models/VBOSceneModel/lib/layers => model/vbo}/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js (100%) delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/DataTextureSceneModel.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelMesh.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelNode.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/layers/DataTextureState.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/LodCullingManager.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureBuffer.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/ViewFrustumCullingManager.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/calculateUniquePositions.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rbush3d.js delete mode 100644 src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rebucketPositions.js delete mode 100644 src/viewer/scene/models/PerformanceModel/PerformanceModel.js delete mode 100644 src/viewer/scene/models/PerformanceModel/index.js delete mode 100644 src/viewer/scene/models/SceneModel.js delete mode 100644 src/viewer/scene/models/VBOSceneModel/index.js delete mode 100644 src/viewer/scene/models/VBOSceneModel/lib/ENTITY_FLAGS.js delete mode 100644 src/viewer/scene/models/VBOSceneModel/lib/RENDER_PASSES.js delete mode 100644 src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelGeometry.js delete mode 100644 src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelMesh.js delete mode 100644 src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTexture.js delete mode 100644 src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTextureSet.js delete mode 100644 src/viewer/scene/models/index.js create mode 100644 src/viewer/scene/vfc/VFC.js create mode 100644 src/viewer/scene/vfc/VFCManager.js create mode 100644 src/viewer/scene/vfc/VFCState.js rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => vfc}/cluster-helper.js (55%) create mode 100644 src/viewer/scene/vfc/index.js create mode 100644 src/viewer/scene/vfc/rbush3d.js rename src/viewer/scene/{models/DataTextureSceneModel/lib/layers/trianglesDataTexture => vfc}/xeokit-cluster.js (95%) diff --git a/assets/images/IFC2x3House.png b/assets/images/IFC2x3House.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc9c01b0e982c1081107cd283fa453c91e21ed6 GIT binary patch literal 211157 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

_8MuTy^rPa#D4&3NtElWbHMZOGiyj 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%0A54Z+hK=h0}gx?8Z+1&x$Hur3BoN^{2=N41Y_ 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 Bs-pk^ literal 0 HcmV?d00001 diff --git a/assets/images/NavCubePlugin.png b/assets/images/NavCubePlugin.png new file mode 100644 index 0000000000000000000000000000000000000000..6fb1f0de6f3d3bd76c3880b64c85623bd4a15ae4 GIT binary patch literal 20826 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 literal 0 HcmV?d00001 diff --git a/assets/images/annotations.png b/assets/images/annotations.png new file mode 100644 index 0000000000000000000000000000000000000000..206ba9feb9f9e5850a1e5e3e3255a9f4eb147f92 GIT binary patch literal 77881 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

_kUGV-T2=8pR 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

*q)p+Le? zDFUN&nKpqKPWN0Ig0Fx64svpK$?FrYd61;M;YqS0qUNaew6-3jwe=VPMq?T-*BttI zC$0q}wt)s3kJ-`3Pl#Ev<0mlZLRW`qev_T%rDk&{`gkWld!n3A-@GkE%W~*s7Z?jr z8;u<5?n0BDjkWC+Ajqf>=#ufaw#wI(r9_(SY^Jqsa?G)e=YNaqZ@(trzmTXywYAqX zaOAMaY`O$;jR9b=)&gro8BS?^B-0^j%?fIE@%&Le&mRR-mQ7sKT(FIr#OLh6Hf#>@ zGqu;$h0Mi1kcMx;!dE`mg>?k3<1prRu>aKwEcxJart#2^UdEgYkN(1f*XzP!vEW)T zVm6!cdc7fC&6YAODZrfF9|8)%DQgQ1x?Bd- zqkQGBJ|1Xmk>uNV@n`!V^xu$j#U%30uz{2m8etE+>bdI$Uf1kX`%>@mS{Tt`ygKTB9=}0fOs&zK5k`h+=@gi^{3PfNI%#m z?=&j1L^HID7(WmQt13z>aTcF(2HBKa&7gJ;N8k_(+L{JQ zDTPwSXell>^ZBoQDL79>xw-tRkW#wd)zZj7UkimfHYUdxQN^9YKCsNQ+#XB9+}~g7?p;G`cOyZ4)MClWG2BTT9%jZ+!{41 z%ZZL&=BGVat@ROe372?=GdGfk;SGB~8{(3%tp@;padf; zNrsi=blSP@y1J-+E7w8^687(Z8GyODIg%2b*r&Dh_xFncZ^=ed`~=2K7uEqW3Xv%n zzW7<_>P*8@C_0N;3PiAA&I9O^`+R-BmFutHMOIdtETmAHHz^a;0Wz3qc7c0nl(@M$ zMn^}{WM$!c<&_9$Yrox&r?mwS5Hn%Nwg06MK%mLarY6ZKI~aG3oFzpY%TNF7nc%|g z{_2XRUrMcz^xcU{>L62YwOX+`6j7}TgP&JM9#Ybezx^d{yS)rkZkMc?u-VPrc!T)7 zZ3MiS@T$!i(t~5M+eHn}?%j7>viXoyPE0uE->ancTc0eNft+cbMX4zeNubC3LWud0 zDruRLnj$8>!xR@=DA{%$Uwi&lo*woC>FgaH;#;5H#b-8uQXYepXi^yt^<&pxCu&KW z56Sa;?7?S9EzU+`voj6oZD(;iC+IrXgr%Yi6=FtXcYPt`{0b*2RO-^=Ow{wPyRDfo-daZg$QXKWKO^xP zlG06NrTBRBx&P(bTW^0y=YP0wfhI0J5Fsg`v$)9fc%{0MmKGc`Kq=W$_@44R;qPfF zkPAtzO?glHzfym1>Kbudk&wid^4%`~@(15WA_0Mt$}0Y__wV@VUAx&-TF$0`o%%oC z^ck{C*06rFi`b;C6xV&4MU{p`o$j3Nhx;A~f{)`JeeYbNv{6BwP*GImyyOuch* zJH<^?j(lW{W$dIoa4&ex7`v7DWHqbPMDvH@9iUOgF+VzhZ*-bC&1pu7G)q#)rG@xi zsI@5a=R+ zg`?!xh}wvf8`I_aPE8&UoGl^;qmB|O$-m$rBR!M+-D_k(P+77afC>d50OZ)~QmLe@ z>@?!c8RRC4;anrblin>qt7MX`)}ViZ@^j*6#PXvze?0vgcB;oM5=`jpr(B;yb9Rv~=YTBf%@7!4z zVsf&QpTgd~dqU=GHk;9#Hqh{gXXS)+%09Zfy6El}rTzfjU0qmD*8_-B>O3tbQzu>h zX=KMwpifVNgu4Jys_*qfcCHn3E|{`ym~*UH^1Ya|gUQ;WQIY{BCPvB13Q9ng=1t*# z7gFZoE!#ef&1OZPCYmgb47tEqz{sgUf;xp(!qeJ9nlYP_y4$!Tuy)Z*hX9^*IMF9Y zMhyxdlhVIMO5CRe3v=T^&5-glfSj}sI4{#K+4*PZTj;YI+4ss_vPL4pZ{ZrV{Ckr? z!ME=G5J`DPcJ11A&VIuCQ4Um$jJGfwXaO$-8rXbRj3DJ(5a zu<78<;X-gtCCHOpRm(2*~X1I*{oB~@nVOK15;Yw9)5wV z^E72xscoLyhR?95)ez8$3Oi3RWdi2@%doGn{614cGfu|ZAnb>_v1Ie%O`L7 zh-_X9qKU0-#><`tG0AA@h7J7v=ZYw+tP0tW2m4L|K^rpP{24Uy=^S~Z9&@IS6OC_E z_2G{)F*3~183&s9oUriPqBgo@OJUUgzNoZGkHG!PYA0)M>Wl-bn6sRWx_J$(eCKv6?APoEk*E zYM$}_dD4QMXNZS{lEE{Z&FtJM{{8H}7x>P19^gM8eTA1E*&oQIVIw8Kid20p>W)rk zK6^8sHqqQAWx+>ZUn_!XJpk*AOE6-hq@o&twxf;wv8@qzd5Q!^F>IJlI#H~ds0Gx zq4!&vTS&vTU_`HNAt`=>-8VV04T~X20nE9u>l!EKJox&zKg@@B*HKU)_A8nb)rlE^ zwRJSKTII1w8MHynO_5{-w6y?ulL#?y3Lk$sW2|HpEfxzdmy6z){*!^keXX1wI*Hvi!t_!*Dxa2Jrd0YJ zXX%?+FF+(9b)3ktMl|+ZJc4ay_w;5ai4KdPBSrKXJSGf zGJYxQ(eB-MU|DCRvGEwbiBYy}EZ}7C0FWaytbUJ!I711(c{`&+XL#|^pK;4y-Yc%d zv7_={GI_e4fmecQ!!r{hzNqH1oEy?uH1V18m{fuPE*JS19AX%8dgN=DyN~lxG~nW2 zaImzv@Scw23cb6eIUgFnLhldN+;%-Bl~r^$H{tfoVX3T)K=RRO!&)tUgF&gGCN7<& z#nTt`*_Ft@;23V;M<=+re?m8{PXM9fJGfPuPmg8_-oHBM9Ib_P3J zNN}{UuE4~p)1oAEw%)K&lum-QCtpntL=_(D)fU-A-e|G!-dp_`{Kx zM3aHJGo&T0Ms1iUelY`#<4icukZ6oWm+2zSn~kk$XhoBzl=Kli{^F<_22ET#`PHfP zoIQ%$>7(aN6N$!H#$TW3M^FDfn^sq0wOaXT*QcqitqUpE{Yxv81(e|{wnvi%VNQq!^-?Cxdb`dkLuL`EV;E!qKZ zt**wu@DiZ36Ans3N~%S0EtL{I_t4`wkN1+lpr&tj1V@u2kV8VCcRwiU|J_?3m}y75AR1Zp^})` za1$P>ZRe5|XQ=B>1UL|-<8|`2bD7U{Hq~=@{=$HhUat=^C6Y)oDN^PnP=W)QQ9p-& zh>~9a{Zk=hIhR&K0@KRzTx#?osXeRJiax_kQl^o;d-sI&p$tn3vH0zwpa4R(1*^-F zQN@g7bIdXAT4KPL#f)kZm=CBCgl$J3aA8ODUi!xEfaGiWM-z3 zoU9L7V`Y>iO?)PT;Kws(Ln|2h^@IOFX=xRwPW8~=eVk9+^+k5x{S8X0f6vdpd^0(l z#WU)bFMs2*og4lIhazI3xOcr9e3v>d4NZJH-l-l0^4^s`E`*dC9;IgI3jO($Lc<^s z>fe8*{(jasS5^TkHdj`&xw87AKCg*Smo)=|utayaHE`#``!C*ZF0obnU{ z9q49@h)-6Nn^q=19{>bfDz180*8>EKODkDk^m62X|B*2TZplo98JGCDIxbC~yKnvs znz;0UgyX{d>o|6Z6J19D6$!dzthRP$<|h~$Z6+;gH4EBtx(jk~%#CoeZJ+2rV6MW9 znaYwKvfo+d=IvBicF3kd|M4HcVA=jV@WEp2I7VY8y|!NB7nA938^SZc3Bn@J`aMA| zPu5C=C7%Nrnrves*2n+6_9LEa{weNBA9b}K!Zo=_WyuaIO12{iaIEtXBSVMSGQCP} z<8*T~y?=Ov#kqMB@*Opt zotFN$4>C460T=^w6Au>Gl7ZeS1A6r&sflV_O9m#KcH%sFeD))`?EbhY6_=P`fW80x zBDpEE7>(Jqp0KfXou1X20S4kdbRKQuRC70=Vx(;lfXPk=2AycyFzKD6ph!*ShBP`S zt^D(oKj4WUJ&R+co0y5UIDBn5hN1I_2;>a9TzU*|M`$Ega<-PPDM_l|bmK0*ao;`M z|JN2i9F~+W#L3x7RBeF}Yvbg}E?L7MeHKC^HJQz3nJJd8OJLyTr}vPSXOYd3!u?C+ zJ{3ShNmi>B+qjFQ%;0#Vh0ToSSD=*M0~q4LWU_=v{Ubt7uMqZD*^gvC)LH*5`}XaL z8huC!h?MJLHk*0ssVAwctK&i_+M*nsDSRSMiO<& zxV^JDMhEFU{RaR_stU08%(I{!5Ams}EZM>BpZYeg3GrG*iP&$r|3EZSng*@QtE05E zklnlQ;6z^w04MrdxVmtFAOB*2Sp`54!|{oZ-AfA&#`@hMQJNyku;gPnQ)Deke83@bN8ZCj9CH%&fZoM^VUWHf`#QpChb<@7d)8F zX4X|!Ffrj|Q|(n0msYIs{ea1be+dJgko9p+*wL*jX4>s%WJVy)upZBn7k@xn8BL1q zvFXs9`3=T64P`sh*_oZfTSq1_Y%Sxt`}WA-pk!Mq4fTJ-vowf*IUWD9m6C0h4BMNS zJ7On2ZXNr+xEr@Wk+St!SZDWx7V;8OfGK<%x3aFX1h+qd&c+^uWgor!hcV~`K-5T# z>4XR%u~I@h0AoBj#XNu)B%xQO>dcDASS^ zYZSw;D%2v9*^{)!{;A{KuptH4l7SN^&ti0&FpH5&pu@wmB zu?gm4P;sp5AP1Xzi6aHa+z8s(Ow{Ta-YxzooYcA$#h8T4)}J!}f|#RdQ{c^Cp7(#D z_3%6pQj$G^+{-%OEA{ucu8}?V19z^Jf956PcBM-dHx9qYA=^#9lXimUG0Q;Ux=QuF z&hy@1ycEfa3gRd=@#&%uM<7ZAz<>Swy>t$UfFRKrOZ;L66LV)!QeEALg3*Q6t?W>I zsnplkN@=NR3|+LLJfwW(mHTNvDKh)v41nL`z-3!zHY`e0c=qaOrDXEtcKUEliqg78 zmie0>-iCWp>~F({65NwMa?>^vrxG2rJstsL_GS$=F4`F_l((emNO1E=oU4(P8ARxCJ9{XPEOO;?GEzfe^ek2B2 z88s`~Sd?|88PWMndXCIbL|hB+XQey^b91iqCP}*xlC%X`S=q9~y426yxD{1G8aLgv zD=H{BAAN1#J#4wEDC#|{)yk5?!5{aF`_kfxlQh)78S;#Dct|k7@ObR%RSc?v9Y)e{?HgQ6yL%qnz%HU z;^UcI*24HnYR$2v#`bZjd5~qFj;Ei4WuK0sB9YNQaiW{r+7FYJWu&;cgunlrFJZG; znK?a3(b_F+JUxoTl10~m9oG9;noJxH@kk$nygAtLBZOppdVf3_Df!`s5bq9v-onom$sv!>n)KwF6})%r^Cmg47^fW zzUzJG7p|0-uM{;5LV)kOQvN?s3Zk=-X983z;sPc`tw)apH3JvX4ge~ZY=ha>(oSi0 z^#@>{k)`OU9RxXg?!hFFaAqHXcbH{ZuHK7#v&Ah$6xKf|tVMeN<%gpj@(1mT?Dt8kKHpU1{$ zJR`UPwJfv9Jb!mzUDG{cwT@RG z_#Wm&sH?k{VfPH{sw#Q$U?U^*(|rDG_jB_-_W&?BXyw3x`Uoj>OiaiyP>1?n$|fUH zDVd#h9y!7CGISjc1rm~vL{fGF$=UG?nXLc}4OwML`o4<@|9ZZtO;Vdyt5wdkATi&u zT6q2Smx+xfLP9V3Jwzi33_SXSuTgi~eXL(^3h7(wPYGHY8lvY+0BE(jFcg&W=%YUk zF@KWE@XsmV(WRIWK`;VQ?4%Ks*(`@8jh!^2vL|!O{UVw*M=8AaE^Ic@f&F5@0>GB5 ziWq2aW}qqPSgr&Hc?l^DN$5S`2q9Y-jMpr+Jr_xXxL{qPs zgaL2{b)+(Lj%ccr7n_T*T#G7w77CO;cm22~7kTq=Go6mdaXWpu9}zXN1qD@1+7>Cu zuVj;@1{JWmV*3TH(|hq=2-{0Fap}Y+tPc1v2=B`KzmRb#O{3n+aa<|i{ZgS}5I~au zNr*!H^UD1{tNSW37lGsms!|8+__?U|OUt+N%yVsWJHoOrQgZQun?EvG(!^zeu#DMU zz?VMrWp-4HjPLtF67#mK6@kLBu0#C%w{DJg9i*$POU^Pq~S?t(5NT z4O(22i+Je9?ey``BX^4COpo|jpHl|{#LNz{S(Sl0KIjjjLdEf;O@J7o2wFo1G|5_C!(z`?-C1LUF26*2FI&f;iW|(={-uH5d`sHOib{a(>qRGT^)L@ zn{=J{4)410WBl~re#+=_EWLBv$TyDi5mQYF!y9e_bKpR|G6z!xkm&C23;_%mYT6_S zkdz@ZzXuM~W3xpjxKo0aXp;MVKh~3$mK`-02Ot9!<(wKChyV>1izRCI-<5JAoQss8 zK+>)#bBu&XAX3@Iu%sX`#vlNvX2l3X23;P>*=GEiiMU*g2*S$wHO@s}FWw9&fx%`- zGgADo|4wnhzhE1Pn^<6fBT!dGdH3fdWs)#aL#cY#_TTc#YRW6CMIVP3-=sUxuhJw* ztux?XuwzQra_{GEqO4LhxjKIID4VOR5&R+wUz$v0Q{`=>`o`#MYQb~ZioYm^>UcFL z7o9Zy+b_BC+8SEtra7`Infm^ITrL;5(lAbE!D*NlPP6D*k|WK9ld5=FnR!Je^1VT8O%RK%|yB`>%N`>Duj!_Txh=(s9 zg)@-Hx(?EO{E&SASl2=HMlJRAf0D1QRbLH2dwU-m(%H4+D*)uCZ{)QDN2u=%&2{1T zj1#x281EDe5B17%#hp$&39F3gjj5o`!spN8);m5)Nkuh<>qW*VNB6v#crHs!JU1oS zJ6~+f0l~1A>m#Wyx&)P!&%d`?cs8sc_7ffr29Is|1w1`bp~K@u`gUodzJryhp`kv6*@jTl7bOsgRtM3}9FV2Qizmbok*AxE zu|E(|YDAaJ@cayms|6^GVZ;}U!@q{KnDGcETxs90q;Mc1NyY)$e?TdTztE^n(wu+y zyC>y)Qnqf1;TQcRqG$=`Czu%Oq@h78e@$%c;E2;Qje-H`` zLP&`6=L-8<6q0Pjm9*rUAT}{qaV5OH%fJ7YRaR0~S;^xM|B_dZ5D@_lV0Lr?&9cD0 zFaLr&fBx4zci$cww?50li6o3y`*8J*GxN;#yom$$ zvskXZnyJ@Y@MLS*y7L;V*qMn&&YD@>QVR--oxgQo!rLpMs${Go&RFW!v zmPA7LK!AK>YH%qW$&63inG%kpH)(nEa5Ig)kI46>M4YfT#0glFkfm79%XNMRA5>~o z07|Q?SAPC-pTA)jl)e<9{KEUqA6&VAsrNM^dOWhcOH~YfeO}F zF*&qI!P+WPlD1M*ScA@2#)fnYeSK|APL5(UX0dT&x!mr=gdIT;0uIGe7V9v_MvsHE zwH0jGx|x#7>T|9`NySwmB`WAVCW45DecvJ{b_3m-VcDcfp9!arj>?YF83hSIs7X^y z@vwZD3NdTQNnb~1L8q+RcTFzhc8;T20}j2&Ogm`Cpv@$I!+PF2(!*+hDYIDvuvm+K z!6EzE$a7o>GC+RMIGXr$Dob|o==c9I!bB*XhUaIkeG{O_kXk0A7nC@r^PX829A-Ia^B&E zkdpD1Z0z57<8@M;YY|-PsNr9gb37MgD>?2;QE9^0r=g*qHETpo#F{n1{!KeRi8j^v zBV(ul03ZNKL_t(2C-RGCJ`@cUjE>sRYep0;0+Dn*TvM=eSke(Dy~7xEd0g|MD*9%6 zSida?jWv^`>`-Up@Z^RA&CM)!_mB-7m_CE>k*jdMvY$T0h*-D0)JuM41+TpFa!6QQ z$)7~I4l1pdOFmx_zjxu}_e`K727zFPcy(MF2us1e<2~G`2igXJ;2!JuI3SQ^IV-i2 z#$P{&uV;YA>s};Xmq59Dl10Nj!_6~nNl1ZY4ccNq`IUD9@TJNM@+&JvGry*Knt%Bu zg3Zd;v~j3vs!?U+QdCwEG7br}NTi8NM-}ktP0xR`a9z93QQ z62EsBQMR`n4*`f$pcS|002j-5Tq!@;WvGVXO8IABmR47@0e-b z(XvK&_l#b2JMURZsNaPvt^mE~0vrVqr_|DQkmk-%4MES@rjQ&HTdTLTFtvm*I8JUt z3bU`Bow|wEN5pBnyW}?Rm1fvWcI<%jJRYo%M@|a(mV`_Yc!mS(V zINcVKuuVyx#U)BAs@~E1mjvRjPrXu0oqLH2s~YWxKgPPhuH@lI{*%I*L|Gd#I55S6 zFdgAw4Z*|GG1Q4JHF}gL2-*mb9$up7OcP$ckNHi9;aJcaK(uug6B;Q^uap!n*$*dG znuWZ?nHBFx%XY0~YzLZ~$#yO9$DjS2yu=h5>fd0XSp*4Uq$J3%sz6&*$b5V}&b2vw z!(B7{wmPg+yn)wv~~5;cIqsuj4ay67oq4T`~y}<4%KK}DAm^1 z@$$XsD6318&kH1!QE4PvDaV6r z+{(*O@8ynrzspmPJ;XQv<%gH7DS${&aHe$*&7>i4H&)JU-0B@6927u6Td-{tt4otm zslZZm9V!S3O{(l$>1+%lLoU5@fb=cpjCM>-C(P1vj`5J|m798?#N51BnAT~h^t12?=mw%sr z?xDw7Us*)`Bd_o`zkZMhs=h+b)+A1xoAuzw&BXGe z7XMHZh5BuDb@Yp1;`9n&LhUEaohgJ8jj=fAmm{JE3Cm)zi9|yz9(@NmQfTaL5AmA- zF^3UAL4IXqGSjg4(caP?VuGbfSglz5_mHnsta~_>R#$&;`GqUxMVD7J4F3<7;f%hh zy3V4WSXw;&!Ic;gcG3Xx$w86svCdFH&}(m!wF44ut==A@A^7}lUjiZ} zK+pWs*IAdAPJf$&ijo~ztyZ*xpa09=d&kFBo%#RoD~+aTMqQ(3%NiBS>awk3xnPSp zkOT-2NFxOtAZ-(NQ#ZS*@Jrbwo5C(6*{}hONk|A_2pDjvlB=54d!145eWcN7X72Zo zJNM3vG%~ht!F^IrpA>+CAra&gUuqzNg%x5-2R8siqQDq=B^TTq(-vn)~W1 zD>(Y%pf9BECRr!>&3>=rwnc{ZVT>5myl-0psoM%LhNg4P?Oy@`{(NvhG07n`x|Rve zh{QRQ#?;EF;#F$CRnMZUk-()TsNlQ?)&QyR2aq6r>(nZ-Th;W+3eWh)nUJn0d^Vmp zvN6a`iDshD1Vig1kc%Sp)_7EhmInKXj*h48@E>@s{FD-mE~U7TLF*ir7$d30MO^&_ z$!n4~V^dMq%vh6)#Qh?vMMZ8V*Z+9zEZ*gl%D+GKz(YLObN=@DGtl++SoC^J9ciKQ zM7?{J4*k=_eFEk?UMGGjgB^=@p6%)&KQf!MXFD0H-K@Cv^!D21El7YA@!4cDA&MSB z!Y?9`S%}G0&hyV7130h1vsRS~U}a^6d+xa#kn9N3LU+3JJ;uhhZj~XBbjiK#3g!hn z!v+nA5V_pQH?tDy%r~<2nyc3#7d_S0J_wPwP>>iL#=z1XBd#E}efR^AltT869|9nI z*KV3>DrtG{X)=QJO#l9Q=Jaa9o_&d|tZZ7#>lkyNPCHZrSvw>zJ97G#uWNot_5_Cz zfP9MYmo9RhmZPJ~)Lq?5T2Yo_i!|BPhRvZRba((mFFag&4QU}MJQ144yncpgP|#f& zt@AsZlT*~vWRj}$-`?FZg z2r--2x6e<9$+37qAh&S0v>tmQuW~9Qu!KfnTQM^|X7>>$WMo1nMYZW7kO{}~1Wwh2 zWG@jOj9?6RuZemuq*huSC1K*QB1~w7Ff!ubgI%<;Eu)C!j4Vb5hJXxD`Ab7yegEe6 zi8rzu=FreA%Ni{3$?i2cGkO*3TE? z^L|L$Vj?nnGdMfV|nZ+>>9n1 z6CF>{_2Vv@dS4_ue-o1nT||d(Vz8?Z=tCbBL}Bh;3{h$_;)@XkXssJ%Zn>R-eha2- zBQ5R-*0O>1M($p1OKT$2xoKsl1^uRj>wd56>fnxVz8`?k-SQ0td|ll}N5xUMbP`!} zJHcwF?eJqf`}~VOszckhMXXoU= zD%v3n4&5}9`!X3^S->I2W4ZSI%surIh6Nqbfpu((31W77m6T;GA5DTSdJEU&#qeLN z!z|hAS!tc7FlirViy6z=B_BazHFBCZ2H3ex&88h8oPFjw65J>CG85-5JTzC8QE=m3 zER0EY^@kS7*J&X;0T`^Er)QypSnGCzrai{S4$U}5Z7gTTUs6vNBtPCOivmcsdT-IHAk4Yzs}M6IoTPjo#{NHtWND+>@@TLlCy6(cIq+At6kZ zq!BtEL`!8aDy@3ut#A}!rk!u2Z{0;dVn8gbg}^q1E$Yju*4 zn?hl6KDmV@7d8Hul5eq?*_Y{wE#OU#r4cj{nLd8_MQ;IO-8wD(+*naX-mYRLJ$m0^ z(uy+au5M+rv7OnbQNnZMpaZN&D{;6i0OW?MusVa8wv4c145u{ibsjfJm>~o742ToyECHMVJV)rZX`*t-RN+ zUhu7lHd?VgQ@X||A!QpmpOEdwVoL@jHK(3v=Eg=4mnK;Z-GUeyifw+;r%V~u$<8*> zT2~DSWbG(eH~tOPXJ~Cci%QS|A`7F_#BNFA+FNejuz$`se;XS*0FR1opeDjgaCryu z2bc5TbiN8fj>9Lc`ApXSemVc|B|jrYO?$7$jv+`FhjX&%aT6{`VUald$xgSzelF2Ohut>%XT9uRjQ^ z%(SA7$X=(KBY90qyx{WdtIyEdEcwR{)`Vj2uUBGGM2Bp`kfx@2<|HpY@EQP<3qzEa zUdgt&Vgdp{6s6#Fa^&i@Cw~tv{e|a`w{hc@cao53plE9kWBtoa%=ggN-G|Nq!&S@J z#5u)7lO#l}dQ=A17V77;)V5@xZAhy3o!`7(v9l=5-Aj!dElQmUWt$;Qd1hE2M8=_y zacyxS)ji$R*LNXo%_q2{4pDURdSwr3dUqhD7^6IFjPxyX;+0;~c1w9N1>t<_i=So3 zo?SfkpFiZ_t~^e+wctY+v3|-zY+ZjasTo^2U0F|c=PJ%+X>%Q&Q!~1tM|4Ri;py8# zSeI2{B=b!m5I|?OFKBM+j z2InTwMiinNK8;OXfJz&Mb>swDNT}i8Vtwj$N0hT zrGMY~^MXval-CqyKxDME4{RMUnn~GZ;6o+lRbQx*f|CKI_YllHHd)K6!GwTKb=rfDZioSw2wg0(Do`}!O;>*5VDD7^*F|m z&6v%7%G0H#S5la>mqj=HEytqpClGkkMtQDP4Nkk74_^NnpWo#O*5%cIW~_gifw^jHWL0-_x}`7~F(zFovRteJqRH z>8z}!=BUV^y_WX&b8bUNf!SdrTLUCC!oFyy>1-R@uQ##~Fv~qpe0g0vMNuR)CDl(4 zh!-{9@?V3av)p^+3{Kl5`h)}6rp-8QOTZGUU{ACsVZ}y@ZJsH?$+m_OdgezF)EZ&~ zqF6jvM!3C<8T-w2M<>!&Plo8cB~{N9?*X*3ysv{GD}n z1+v{jPj$85(`A|bM>3XZvp$rB?42}aXEIzf$e}wvj(JSOpnZY<5GNs#*RoXmTjlj|B60fndPHaOl}+A1EmKUw9awk zN3H_a+ZV|6Pd`1(^DSKjM5RL@{PpYCapv{2v|4;myn})ha4e7ewBw50boS?^^YOho z{O}LQc=Tj5-+%NN-+%NN-~PmP?3$ODWN#I+SRl|Cjlp0*Z8Tywo4Mxd8`kYZEp4NK z=itC;n^OAa?HVs%WJ034$_oC!pH=!e9}!*Bx+N~E5W*w_?5L=CLNqRVTW0}Zp}||# z$w!z7_LMm{Il#fB0c>05XtA^~YjqM9vrK5Tkta_4n!$-~ssGaTjCEQi_p#}2x7lu? zA!yXZ%#4*t9gL1nDTtyRx5Z*H6R+1Gjt@$zWA4=M_C95ZiuUjcYwR|%vrT`~@8oj& z_NN|%!Ob*?aQXW0{5m%`g`QFOVyXD^H~JzB7f@byW*i-T{fhCl9K1~sgm+YX1)#C2 zir4=90&7VVk%b`40>WGRJ`jjsw6hW%N>5b{sYOMYOeR|E&XK*d@RG{k>E#Y|?dA_~ z^3_UC*Z&j%lPMWM5eW2AL8NTiN9h(%#Oe!;R{chH0vAJ~xITh4NJ2zS(QzE&GK(vtn4FW;c9^-s7zTuqS|k~oZUs_{zXagJ2tJqS z>m|vXrdI}-avK*%spIKcoT03&4A(*c?US<6v7`_dq28?gEvGWg*d^P9wRQ!Y^+GRsF>h*3j=H4M|ftv>cSsYQjP7W+3m_I4e8qOp@7zT8RK ztI|P5%G@~~|H;3TlatOb?tK#Q*o&#OMpl<3yCQE7b%NlT10RkEq%hvjV;y5uh9>fZ z-%Du4Rk12|C8rRcmBXH*og6q&%J07MjWwL2Jx#m;U zG@m9eQ^#oAG6X|HVi4M82Mg_^gkndHo{``kJJoYqJ+dMbieyiX7=B73RSB$`zPum3{kcQfZx21kk`GWGUq$CrT zrBzQqUsCz*G1JQa%%wgL)ESv^^l@{kM<4(w`pn-xVl{vu1P~P!&&Y@`vS1^J^gd(I>3l6GK89@(*zpb zCuQeZ4*|Apkphwl0=Qh~zu({Uum(92Jw~kC797l5E$E|y(NA?TVhbiD!s$*2u)1OSC(gA|TU`kV z>?|r$#<#JmnzK*+mCyY6JG`0o<*EA*bJG_OaqRFPFeRDz-OrA*_tqWs{&y{{;wZs^ z;2if>{h3&Yz{CfvQnJ@07|8RXyu8e>Yg=!@z*|s}|Nj1?$N14pow&v&!{d@T0}*p0 zKF_Wtl`a;?@;JTK)%?$)avx7rvO8julDYlH5ApL|B|P}>qdZ*R%FAO8ULG6d>a9_1 ziZKI_QdEd*Vg|;oatVI=&)0^+C-%YLaR048*Wl~D$UQcaic%t?=&_a9$Y!FWwUV=S zkAe;stu6vxOITg2jPyYLtQ2P{HeHYCgw);P=%YLkn7S;7g~$<~v2cz=kdtr?Ad*$O zoBXfsS@&KLc;T_%Gu<$zc>Ut!DYr8ZiDdKvJl@luIWf#cr(L;6ve}qG6&|A?5&+`( zAYJ`~%6*0?BMHeVfMjd&PT`*}UvGS^@-RG?(|@c~_E<5lESzcHHS+W$4|3C?JKwVUf`D^kf)Tx%boVb7i&@dFeKX^>mgJ46FlR6S_0?}~c;DMW zF4uY{qNeE-4%IjyGCe)Uzx@1WpI8({x%;RnujNy>e2&b7Vm|q!FN1($4-r?e-u0~F zx))KJvt9^8VOFN1(qxF0Y$F0ABp81qFHPQm%V>l+5z5k533*$bw$n2;i*jDf>y!-p=+Sw@X6=OePaU?yICE6OA3+8-5236;{8OF?mJ9p zLl@v_SD-EiAyBG!T$mkuOcPolB4iUb^*E}PF?uKB!0|5WelHaVnLc;;L7x-c1b1+> zva&K#1&?4Ls~4C|hooA%tNZbNwCg$2(uZZi!!(UXg)rl=u+mmWlIi^nwoCJ1Z$mec zS}n_VHLjjov{6>_Ru?$U#zJ^N%3l8Ev3df+O}HL=fbIHe1VbF5^TRj?XQ{2OqM%q7 z>ZOirtg5Ess4PrKzc*A=y61?Ley`~B+*AD<8jnF)S9h~nih#XVXz+(J%HuBE8U!S!6A+Wm z`-~!Kss*NlBtNRMCo))rc8E??IwRwYy-eh%lYQfd$T?3?#XE1ml{;^T-#v7Mhs#@e zscVXtx~BL;%QSm5%WSq=DU{J}Ki}QDHh9IP_}lY2Ye)!C^1b&5Z(FnOzA7f|^?=8| zz!0T&<2Gty!V?I|T(3UpO^(4O>?6%sb)n35T3MWu82M;T79ac6SN&DYCr#X%&h+UC zBI7r6)y*FT;Lkt!Eq$ZyTzC7&0jOy0zz`J3tEWy8z1??j&xffGG z7fx+c3k^$=h%FW_>jQV4kIZJX52A2B+W=97|9Jd68>*$PRUz^YT-SE^2!onXhBRRa z5y^<5iG<}(W8XAOuprq9EV$Ka?JfPQ{WM>WpI07R{_x zd){~KGfeQ&_hoUif1ad0J2}zR$v{8?Gg=eo^tdIu_`O8)2Yh&aGOeLYAn9`er4K1N0?3gc$6m^TcbC!lPMsX44utE8o5qs4(?MaAYw9rL3ua&{G5 z(EgWORK%*o&d%L?m3=HCITlC6s^oDA$l6ip^W1Nq{kGq>J8iS>Xz^yBI52C42w5;S znI!bKw6s+6zE*vT;l6I(ebYxTvi~pVzg_u$5C+yT%b4jlNv8h`Z*v2(lt03ZNKL_t(0 zmgXepT~_gsp!#SWwh5+Nf@qQ>rn>CpmB=TE>)U_y@b5^=&c%f!Xi2Bc8}&bI4i1%S zU@~#0xr6MTMSjX%|Gf7JBS?PFGt%_*P2ra+8rH`exKw(hm=rQnkP%<3s6c)4>MwKh zm3l%$69G6g^8%s>vD$13a`w?%Q_ZM(kw@?U3u${@9DA^i_-)dOedg{IVhX~^-JL_( z51&=^j01JPwhAhp5pj*TBncUl+}`GSxxYR3(66|9Q$MX8Ritl=Lp`NtY|{cGJuX7x z1k6>^39~;m!W)T@^W@*0)4?oPZy}{Pnpszm62VyBnO)VIP}B2x#!bgT<7*RW86-~pan#c$XFxG5pgulhY=ke zPjqxVHoFsE-}oKI@HqDGFJ(Ux!;|RJ19Os)k_i>{8gfgrXc+B5>~s)h8OD4?Dw&Hx zJb(Z12@bT<{;hu{dQ%eC@@BF^CvjE66~-{s*@dJQOQ))tz_o?G_5}ccdgi}~oSG&H z18c3e1l*C0-PdQ&mQz|<>LUy!C;Jy7<==X$t2xoo$v>5kDJn=sov)Hta~RXMd`6to z=|WUg9NWJ4ee#NSarCZxn4j^K73ifd1zUVnH|3i8Pd)irncK*W8swJrApY1n#)(Ed zAE@qRONW|&k4$jyIiBaeU$NFp(xtrrQu8}H>R}B+CC_8?P%UE2IUnO=AHg8q3Fui% zvS1+7Sf?b2tF#f!PlgdCY6zIt5wvW;usBBIuA2c!*|w9sLVu{v#`Q1Qv(M+gt3H0? z8$K_4$8y>x3DicT(iut4){*nx8xd-ywZ&Y0%8hh-PzG;0aG;c=Bx!CAHX@;lENDG1vdjGBLf#x&e{nimn+}b+tkW<*8sUiMbuVTQ`g*v zERojt3{!87L^LLG>O>oXg9!wteu9LqM*!Fos#XvJlgWg$_cUg+J1Eo@IqQN)RrMSA z*Kd7Ix&G6i{>Vo^dJ88S-2r{(9hBs6qNdaCQKNGE0-u^0;^lk)NQk2zm!XuiPrr^J zK*>#40|L24MF@gGV|4}7BOUy{{Q;(?CecR*5&hhDL=m>86qA*+i|s}G0Fj`qbmGg; z&|6(Y@RfVrjEU554HXsSmz40-eGidVlnsbXoV+`4hju`&?t50Dzn<>oQr|7za z6tt|OyoFO;LyV0C(7gHr+qUgc@mT|6xrN2+=2b?@ zak{-!Y`x)ZZ(+e3VevOV16M>+S3^i#PGIQFJRde~qh?W0c~$_K#ig8m{ZX6_H9FlS zOZH{P`j-jMTBfD4pO~$|iW-u?m=W^dt1cana;!wL|K z;<-tm9fT>N7))^YEl(+SCf@2;&gBUNx2nRa%7zV3`Tfya^hp#Ybf~$xiQL?rbqt|% zVuGHk8amwf^;A`_i)cNtC7#fnT+nLC{^5_wDcQ5(`tUtbq_(;m5UFb(qkh!MRBIan z@sb)-VDgpBa3xXGy>tiyZ7pWRnLYrF(UP!`6*Wyr+8n{c1mZ*}Q@-X$mqaIpPiVI08D)MD|9T4aztgsNB14A1}HwWpP5(GHpc2_FThudyDZo(SN%Scn+yTmLlMtTi*4y85$@^GR zl8MA%J>u*zyG#a-^~^FAV50u;X)2EXm6DsTCa-wcy8X&&n^g9Ij5Ph*vd=cuNbw9n zpsTkEdqgt};|_-Vqrl){x>Z^uff^}tdFt+PqPEyMA9+~v9 z_Ih4D^DB4&lH!Zl8j#Pn>`bbxb4-<&0pRF|r|y&bzPq}OnSoJG_6$?~7c74!J z81o}bEUk#xSY`C5eUy|+o?)*0N(4VX@~jg5Sf!0Yr88oiX+fnmx??eTsHW)@fPxhG zQyt1oD5mtll`KxJQkb)ktJ4lLeWHbUtDRAOAfNluLzIwC8m>CxW@;L@b*fwX}1|mXDbBKyeN21BdxymNx z-VD=rY~mc2`gT;Cg3(6>DL&D`3yttnX#|Bh!_+EmVinfuRqklIp2A#N zpxp0MSJ8EzNWFe&t@kJa=^GIQDb+0iBSGB0+xYAKzmeLyMui9@_muDY(1!?&F%np^ zi;VZ*bY8vk^Q|+oo_;~`E*|>TZ!r%}!q7?VSW)SWq$b%BH5xV<;-~{uJ8vf-BAFTY z_j+ok4_AwsfaoBcU7hG%HbT$ScHdKL4~^*6OfC#j({zfjJpCk&oFcA>uyeYznV&xY zCsgs01nw9aK@}g5_Fypv%P@;cdZO)mY$Z417#YSfGQwuH0f*Ya`IMr@ouNGWXbX$0 z4QyVSBRFu0)Yy1-MQ=to-+@VQ1|&gDon1&u(RQ-fPU;#rrJ@K&k3L0obd+M8Tvk>_ zQj!Ui$>dj9XsRk>a-f;~6(i^jK6&1T&!Q;(^A-wHW8-=G*t0&y$7Ey>nv+K*kp07- zP|@1OljW_bim$_E?&LO;iaT$Y0(u>7X=bRSN-~B;o(uAPSYKCf)uc<^&%9~33U1mI z%)^0W*jxeV<_)~^NCgl4#@@!TED@!3ni8_|Lbp$PMA!la_-F;fDi!d@7&%7<3!FJHE zbW*Y@oua&}NqfDHK5_glY43%mPaQeJjx9@ohJ7XB*k&X?qqMY?va&KvNt;<1Gm}$X z3iuZeWcA4fyMqP0v>r}QtT5R+#)rO9^fztK<@EfigfJi=*+O4V|4~vI36L3n=gJJA zLmuyQXHQag|1om^P^3J!79n`9yk%WEqPR-)Xb=+?CtE_*T#*<=%Jp9+(K$$>YY4OX zY0!Zw(}c?f?|N4zX0w@7&%(7|ETyzmIyL&)J@;Y^k5f(=PBeD1vL%Bb{Qj7CE?cVld3H^@<%NB&U$Qqlm8#-b2r57zl!N3ag7I zP#ev=K70*3ckQOp?cJoesg=e~X>kn=OCdnBggQNq8$OgrcY6n|6(@;~Dr9J&gZQW* zto9{Tngv4bApk5)^)ocEnY63`5^!?hKq-HE=ziMU$2s?$#P-;bREV@BP*VDCwjYRa z_aW@QGMkbEIZC8lS+Dq&jtXiz{pltPIBXL>2F9?l>d;!xNfl+y01C4(qE{o}VOF0x zQb|{bmDD|jm!C=5(@MT=`3U^5ntwsDkhu2}CtZpMS zJC3DMG!fZuVZsv~)!#ZL)8Nt^l5U zI9*H%qH?MmtWCzTJdVZ|#DD(hzxk{$P|L&5yat9i>SyhWT9az$J_2f91ksn#3<}<~ zE=sOSX9O>o|8rY{IXd3*7?tIfRmTp^8sX1cUIc=_Is_ z5zH)`N9GY)Y=p!IGgNC~+f8{qh)2I>t+DwPu5ogLS{YcKBQe5lUyu?`N>MJ5%X|F@ z1~LM)cIca%o7U-cn@lD}2wY3K#ic|i=0Nv)IL3!T?;qmp*?G#fF~5Myt*MZdO!kc* zB70W}P1V&Bvg#h6yT0{f>W1bBh)O4SzL)!ddb{$yiiq5F+nvgIH`Y`Dg6BII&u@Ej zDSU=MQfH?VW}D@PPk({h>S`W(=2aRNBlz-53#9IUFR8P&jM`J_nUMmPilT$Sps)*m ze|^m0zekn9FJqLaAm+drn> zD#4`z5h=K4Yy_qrWb@=nvhwq3dacz5WeC#65wGs&#)LWc?JH$qz>Ia~RkE{lNKP)r z<%0fxGe`dGaUMMS8wILvDVXMDQzw==I~L0^%A0!$7#1=A`WdBcAtIUW`e}CLJDIvw?7JR=S5 zXo(`w8i39jL`K*Fx@S&;!Nsd%R>C)hbNoyH0zmPu65fA{2~%7yBCzMm9Ho6ST4FMp zIP<#1z(4ZHVIPKJ->&V{bV{}sD>E&qbe=qbjQCO)$4S#~%;>0)UCJUWUgTnOqq131~MPIjArJ zrEXWX@+p1cr}whin8BluK1pZKS;X*e#Y>ZS1Z(gJ5^D{tz5mwl@wj^JZT6^ONdcui zLff6+ydIFeVIjchZ}|o_&8OCkgfAo2WelgOyA@adP7=45(Ainfw&_JaP+GwK0drjY z*}DK}KK=~;=&f4+eFhcJPu}HwBNEcY8^CL^R;^&wjSt2;ngg($p z&m%`5>ivHE3xK3eWbD3r!@y?ix zSe~HVwnT$5n-z5k-~FQG#<;-C&aAPjikI(wioC~)`Q1ZDc%;Jtu2^7>+j2ap!banr zS5$&G`D+4nYVDTft`W$?0R)0L6FLI*e2Ko(WhS~j0L9goZPO=bkRsWRWHr~@g%wi z*^(p$c9PVFBrgt$u2{_GW0>|xCk0yuW-O67Tbt9#q^Y!H!K~2%+&D+>r_h?6~$O01AqVHf}$VS5yRd-KFF& zE-tcJ=pa&C%Klpqc^NjEF_}zkj+3uP7#vN&xj4(Q!@p-`VU@I^EV`>(NGr$SE&l?N?5?8PkiH zj|s`CO24nG`}v;VfE>#cAiDe;`FcHHUvnA|X}46+xG)OY(4iH1&%)zGH%drBNU)0D z9`nXRLC#)^@-~igJu)H*$toe7jQCr)`hAkxPHV?GCgyv1{gqSeyfk?W5gQ>9=cANe z;Ve$uX&aUV{yV;TJ#!OrK(42cY!j$-F^XzZ>du|0iVAr4!C$k~QKxLMATe1=|GUXz zG5fanty-TD{knanEff`H(q7kxc?KV&XKykDPO~d<0NYF}VF4c1ldg$rPHnjZ znqjN0nusL_DqR4XiwO*tR-<|?g~%N>Opm6qFU>~B>O7s#zldgf5~Bt}H9GQ*s|-|` zi3HM1-%FWCL(LtC$`i>twYZ3@zi^x1F}zqZo6Q_JP^yfHycVoAMDMAtR#2qPz;d*f zOkJpgw5%1plfu+27hX@$jG3=gTXA-E!ee!aGkxsL*v4{83o(&NiVM?#q;yz@PaVjT zgoTTq4{y-WOPF87eLZZ++D21F8{v6dHY~58xR@Zp#cPj0%F8cXK(_@LA}wMFak7RW z?RFk}_-BAXcW;#sY5-C^gV+#XBV=(r6d`8*yiMB3)?jgJ71R@oV+U__q?Q&V^I{(J zLOf5r_y&D;9&#*C;INJ3(8h4i+{TuSH8)&fe|v-j5$p7%k8of%n+bCNy*Bp3T9u-u zSsU|02!o?@1Ztz{X>Z`JfBh^^{N^`g>bG;%O&?zO{%t$9Z&=^F^YH_hum8`kRmx@} zuUMC_|Ie;}^2IOnzFTjRPQU%+pR20kwWnXAV_=p^;ZX!#1a-~L3PK=LVCqK*to|Mc z3yUZ_b%O2s<3yDvGiP;@8z(WB^2P*^n5a|W^5o=FHf=JYQb|U4iI1LPbS_8{7(~&D zN^9iKAKXuQLni})l5wE;=qpk+Ba+z>ry)OOi{cNaukRFz4kMqt|A)LGou_}iJu#*2 z+{MB`BDL*iYTFMh0cGR`ZU250_%kWV?PhUh60I6qk4qcxnIm23@}cL|dXjUt((`IP zI}YZMnJ-0`owC^YjNB79GyPclXb`2n|F_2T~j6D9>BRuoaf3RYh zR*(Wilo~={0yk0+>JbWL`qGVW9MtYS%^)f&-tF;Zee~+je?q#a^?m0QA!4k5nSr@; zxK=ext&A!{gp5MSB-?Lz>zu2!M)Xlb>ue+X>s_?11sT@#jXr#uumC6anI85NN96Pj ztF4__0%FN=w{OAjQ2e0#cEFmBxYTR>cVt7Q+Y?x&J08XT54#2SR)*^PSkML%Vslbs z9%7(n0us{vsCiFkZXp>%zwx*opjACZAK7VQ1qztKGV z#5LE_`TUD?vR*I%DPUO-Ft}tT$&^Y`QY!YAHYz3uATeRXcRH5GxxrpZ@Fp$Lz(DpU zl9EiE8py#iZ^yVZi4*-@l$W;>5S5OgN#gyhXSwrsw~Ne+9RKz{J1Vajdx2}con7ku z0&+_-8CbI7Lu>BOD=Oi+`@ToO=168HTS-ZsW!g1IY>A$+&Q4xEBMAnCf&uk@7~>^(U*OJ*3%7P0de#dLsuR>OiK3r66juy}?$K$!C4oNH_q9O4!VT-HEx!%(U5w zYIcIN0f|^g8qvomF*hb1o}}buF>$WnZ+&jO!%OIX2k>8)uiyAu<-^TfPT#il+?kUU z?78Cn_W`|4tyDF)Ba3zoV=ijjJve1x%0Z&jT$IggVIC3{!(tU?i(F1 zymGn&fM#15;eAU?O^)#MpL~lgTTB47HMAoLkdc?67#8<8bkh5JGlPSY9l=!JJi%J& zemSD3)i!}D!0A>S64{ZHNkP$P&eQ%|X{?f5hrU()=~#AAQ{K+U@BTc!P3^q+>~Z$J z_uZU0QRa8i1JA;D;zSuBc{q{DWHMo37s25I#_%M9!vxqac|^&~mjs0UH+Vb)$uzYD zA)xq<9&|6L-Xwo}0Rhr`D$1HcKtTp7${$qzwuReJWl79`;2O0YmDb32A3Ma(lHG5v z|A1lrn$1#Xf-bTg*~hjlaPHqIs4WEqFuG$)!}3|Ri6R`#zsfE?y7eyb6=siYMn!} zVF(q~Xf>PAEH2aDD{}O%!yGFAB`;T(O6>Qm|m3PrU=eW1P4$0 zHF{R*j0De(u%-MQdyI)R2x=NvjGUS4W560nM#XWQfmmYG^@O?AhEjKjGumlYT$!Ga{GkSMnL4KWwHw+RSQkCE236#esDHPni|rPF8H zw$xTL+}BHZco@MBo5xPh9VjitWFp7CH;STUZy?*#$@Iu0hcTHUzgLjCRHgP`{nd)OP_i05qe&&XP~W@ z#N159hCp0iq+xhYK?uYJ4Y339%%oj~v*%SwZOH9<)MPSw85Wz7Y5)FGl9MIxH2V^_ zvU#(K{rlmoxBh_HB@HUAk*(%&q8$RD;+~?ypn z%TqX(^_~dN0TKgq=k2%Qmp14J*>>Q~^rIZN0AQrqLZl{)XTElX8-I2iXP-JwLq!v_ z3oATxVwga!ksVu>XlrOEGhY&j_U|tRe0{acCni##%Kch_$>a$lBikMLqtem?oI81j zp6Y4>jUER7?CZ@`o@i07{n-|8AOAhY(+>LzTjvrBHdE>EYX=%pFJg+TIVA9)2PJVI^001BWNklrBHHR>irq4`y|}g{-W0c?A?{`_jf^n?y5Hs z4BTFch>ns3gY$T(@<(gEf_bZNd4EGE8as*2d>=o!{{fPcOzh7~Cn?FqlP{j(p%E>v zamju4joVE`%=Iz4RK<>ccks$9FO!y?=kaiM5$k~W`yIAP5SUgG?9cX6KNs2czJ~DGbwg%?06(6+4 zAK7N4y+Ngo!8%f={GO9zA~#P$xVINv$Ig-xe~$wKNlDTk6&MrE;F6VN$q~%vyqnpE zN=zmb2?h=3?siNj6Sv)VNKt>g?KYE-a3C8an@lEJ>)Q!WO9tTD&wdGjY~WLSt|Td8 zhdag)-U~e~0ow>(?gfGM>-jr?|GJ#Mb*U$;s)({s`lZYHmz~y2_PGHQS zB`i0Pt3G!lxx0NAsDR~Vo_&3pm6*_Q^^?e+@>o7%M*vsfC&*I;IUn618XjV>W7_|>FVvGZ3v6v^hE~6Nm#Y}UknZfYy zu+#W{{(AP$WF&Z0SJt8sve6cx7;=F}jZ4-!t}d%*qN$3gs8}Wckw?s!0&bG*3HFHO z?#{=-g0DTnM*V{)=$=1jMWr=Tf3Cs*CUS}W-&0*pYEcnh&Ah1Rlafp{SF{qE5X>Kb z@g(KtWhCs*V4!Mx?IxWwq#qh}FFwypSjL9)vdE=Gj_FYB)%e4UH-^jt7#3rEzlV-W3`{alsIGRi*Fk2bct1+2;;~U7v$nt*n$Rmf9BGu8-%rX`2 z!|8Bw{NAIa9?aybn?JJd^*7vc$Zxfp8asdjrfoJiqdS7LKUOG|JE`I%A zzvU;t{12|V;k|&wu%3EOIx$#Xh5mUvCz?7rQc;iLIRlnCJN@$lW^;!!w$V|WcyC4= zY5g^16=d^t=LESc-P|7R%Xl>`NuGLQS77XHHz&{jl9PaLhZM=T=yQ^H4POI9mj`XQ zg#M|osAPM|E}p#aVYU`!5hUnnt2#$&Q5GY0!*o|aOyiL%x^Hcz@kkYoN2HVKNKGQ4 z@exchLG`ar6RAlgcXuY6c1Uhcw_+l1cNPu(oqX-5FDtd3BZPkQEB}wZH;-?tJoCQ4 zvSdrPB`>mMOSWvuj_o*JW5-S$5)xCwQV69KS_)mD?X;A)`*h}+&eNw;n7-{yr|lHF zm(CPQTPPI58bW}UEKcHh-*?B7S9#wgYq4y-e;l1-$x9XpnLh6)S3aNIKIhh1bk5Pa zuj{_9-|t6_H;j6_o|?qp6Rizrz*A3TOED|4E;>i5iChu_p|w~DSeu0atMv(~Z*f`4 za+(=iK)4Lx`H|mlejP4wePE+fqz$K>RJ`F z4i^%m909E!RsSM;O^F;9X&N{1cAZm8oU5AMkfljlPH>?XSzWSLw*wgKX(T!!oT|=% z#t5MLO)RO#Vg|aKNqnvXcikW-)6&V%t2pOyAuG-ovXOcvviNkaO$}#%Q8vwI+VO^Y ziM9Lr=7B8~?B2>ZKKvaH4?fMOv%bZjZXO_JEEA7`LKyoeP{8g zbtqV`vj7k=GsydflZbS|WVV*9TW*x7h=WZg6R;<+N>RGjf=h;iOOvF@w6JxXgjmND zPx7lL{~LfIWemg0SakjshIP5b9S~ATQ8EV*hJD&aIC3VZ8ky{Dq^k2VA>;F0I69>O z`pin-$+rA*WI$2bo^`*!cWOD4gKR0xB{4gN@$O+_{bta?z<4L=3yo+Mc6zI!;jfP{ zky6ZCb8m9Z%^#$wY}X~fUqlle##L55pL;^+58A$|<`iwMRmgyzpx{8X=!Edim5|S4 zYt@iv23>evE2tyWiHQPFqY_g@B-1W;Xx6}ec^Ha(t_ixkdN)`?Z3SJ3jD$Xen0-eG+StUwg27p z=M|UI-`P%rQq9f#)a=_A&xsSq7)(i_xA_!x^S3gfD5LVUm4xX&a^eg;dAybS1p)l| zyO-YJ!|D6k^SSRarQL#mrXP7$Hie5b$lNN55*2KThvHlB0A%baE91|P|BCtkREFjj zaQ7@R>-2HPypzfd3%VA8n&F1YaFXKFDD+l&d-SW-AM$i)fX?%&ZtF?60^{3JL%|zx!?qcIUF0X^c_8YQRuGzsz#< z9^`X>rL^FBU@s?{yJ?q=bFR-$M32G^4`HIKWW;E}qZfoGt7(TX03i zaQxUY2A#qizp?5pMZ0!N_wmuc`!;(XILOOicpUGwDH!Lx)btP2GCm9AV6o&drB`um zbO4lLpjToljHG~E_7@2%w&Kiku>Jeg6wO`zA?sALr*X##LTk%w#M~~`g3GFFnk%Vo z-MoZIuQ3tl&82+*Ui2ChcH0cO85NS#d1mGa2?+^wPA`yi|1AtHI;EO$0C#;0i-}q6 zyR`y~#e)3JSFu^GJTlV2SCfU=TJiH%tChXwrBqfmhMcd+q7qjSMZ)|%eey*}Rx*EX z3);CxDS+At-?2Osg)TjTxn3Vr0YR+`X+{JuOWBC5)gZ!Elg6~C6-C+to`lzt-{vQ$ zqlQJJo-|-_zKt8Q%Gp<#Oo#cCDqed)C^Xt7Az6V8HV8f-}HGQp-$=~1~{T%%9pVsi{$HHnsGd z_4@^kkyttx9CwL-_tn&JuBH~h9~6-russFYd|?TP;twEGsbNiUzufk=^tVnfkmo1r zX3%E}c#0^Q@Vy+-E6hb0dr)#hSAZ;s0Z}#zn`&QJ4-e@4}RsVLfNSQ9ll@Io`!6-c;Wd&zv7j{ zKgJVKLJnppLIX*f=t~L=V0}r^+=K~5*f?&d8jIN|s3E(3Y_%9M8DgnyjA3{T=HEfq zU?bb8q)4IC0@Zy^^@${Vgmj<7P<-Um4^mfE#S8VLIL180%3@F{x8OW^h_u{z zd@-@K0e^JHkT}?ZEY8A#-eFLyxM3xero~Q@!V~FqcA;@X|C2{4*lFVC>oZWRHLy6z zxq(UP`yKk}<9z5#pOS)s;l{u$TY``;KNN8O>wk2bbWJHk&x|td8APizQBiRtem|s? z2th%??p$Pn_MKQTzC%ij%H$|idcL*yI*uQI1KpB`30XX{cr)p;8#y@^PRAHT$%Gm1 z+=PB^QSRlBZ~YKUSv>W1iA0@AT9<{eScFzAVX{~(96x@H%v2NB8o^1m)>KL}JSpj0 z@B{fJrJFuKAPY(72ET*_M>_2tKcCH2XDKY-g{^IoBhwCy2R}+&qM8?f*Fd}ln*Xz& znwz_5{#^}qmKVsF@bJceJPYP%W~K!GM%hXV`)}RD%5;AqD9GX30wE~a2=EE4bJ8|4 zr!osU5FTlizUYx0>`ok_E4I?cil7b`kUVaHqJ0y ztcm*!o_&?cR%c*E@Uct=rl|F$M2XvX(CP93t3mEsr|-6V?&M#}%c-xf#?LH`t(`QE z30b1%tZeWJ%yBbZ2Y_M4$MLq4()Kx%Jxu55(8(Lf(JV8Sw6I|y(Qf6xtlY-yJ9hEn$q9yL)#p3RrWOoDUUr3++T45ZP56QS?hNj_@dJUY3E%w1 z8-a5aNF7o%Qz#-8=;Nb#^U$-%0LL1A0|0Ap2NugJ-aur~TMI^h_~D17ZG7Vs$n|=X zonE$ePw{M11F<_2xZ%!^u9+d0kyE@Kr`xgV{Vm$LGvxCZbN|JgF9!L-Z$-bFQTiM3 zzpnOQzJ3MLV}7-LuUgOKC?EXb9n{wgHLv^kSFmG8DIFa)EEWqEi|~RtapD-}yKknz z*1=#(3WH$+1s*jo^WyLl+g6+;OxrK&xFzM~EV~~MslQdm=dwFHlHAfltToNt1k_f~ zz~~HqhZ{q9A_Eb_j4h2w+Ze(VS@O-`2FlBK3n1d16*T|&IUfDYzW^}RJV8?+C>VNX z1W*Dp1_MEXm?b!V{22T1D4=ln`zhF+dr^+$#aPQ3!NF`k(;hPWE1G}Bi_bm58?7fG zLB*Eqw{t_mwh)@ux`5c-<1hUM^~wsZ)|1pYHPlY(F(-Bd-B{w~L@p)bwyEfd?L?-Z zm#`3G5U~-U+GexjogAeNHPuH-LMdvUpLqKs^ClY&CuPhO=fg}tX?J~qds77`a(~fk zra&eW0<$Ncc!F<#`yt^Tw6ro8IN80~s~QvH=YwtUt|ET+=YENG3m`UZ76*FdsKv_Jr+B?(CZ57DJ!6S#zVx}@udfpae*5iamgGtlfRbe5EvqF$R;!h{ z4jU^D2fdyqRI1g?mfb!DruC{}CZ&e{vt4}X_qUUmm(Qu5R_?z0qX2yQ&~H!}ji8m` z^FY?_9dKe~-9AKTwAA58?}vPC9IdQ6ROijOC^J|Zn_{$TA9m9;(+x9hEmt77-HosK zNlNq60niwry0Ra25{&h_827I#Sc`!|a1h~_o+{zm2GhM3+@fDqv7Yuqf}8OkP^2y3 zoL)i^F6^VUKnM)V3ijX!7N>of%@)$rE%^Q5_Y1#~{rfBM`=Pujg~ov(3FnKn;P*%{ zCgqKv|8m2?AT=tM!8GHh;N#e;DvtiJYV+d-+7d~KZf8h;@Vi8&HqbEUB`nT@EMB-5 zJppy=$(dp%rq40nV?!37&bF{R;+;Nbq7`gS>tks^!@}qyLq@QjXhX+^UzV~!JylqI z3V!!C6va2PZ0qE{Oa-3_h_S7GZxjU1|6<0KwOE5mub3^nYtwVud3O|{LUS7j3u17f zP6%hXGYR)h7tsmfI2Q^r#LTZ}C?XVVP}vFl@-@Ub-ekV10WNXQ>HI831|XH~JBrp} z$eL@;a^lq&NQ^Zw=Uhe+sYkCI!JOt~Inhi`$_i?=5U?Z%Sc=x_8wi2IYH(n&SVHgy z;-u3^T_=;)S+qtI2X8pQ^7sVDPaMPO^rG}GAX6=oULceVuf2b_2WU($w|^6Ca+MCB zYXW&h?Ekpmb+x_xt>QBHYgg?8cJP6(@`Epa7Q17RyAFPwC!c%*fRz=8L`%7Ue+B#Y zRdC;ZALGFXzeZC{Eva)g+_TMsJwA`Lae zDYX}e!@;>uJ9DlXcHUOXOOL%u+;qB>B{1y>WC_Z1@gvZdn#~qzF!v=m=(V=;vE9Pp zaw)+=a8MwV!BG7IEoa)9_N+R5359x0+l4_{Oa})$rFR7LKCiLTz@RC%&DGUh2Q;*H z(l~Z4^_^XGdecdrse&adi-ry+{R?!hyiS5Um-b&NHSe&%1O`0T9=H}>-LbBO2%xgNm4AQbX#h@jw+a-p zUI&jna68m33fK5R48GA(6h@-6#EL8Sen&2QbW;gTA~xe z(M4>>8y-!s%FRFD`CHEZ;(Pp^ER8d5gIuFeBQ-jf#pERXGR21OmBL^|23Xtr0PVW| zNnIFWkuWsTjxNH0d8?Vxl?f)!odnZAhkVvzvA{?htrKsc-V#pdXg!6N9Nv2C7;#>B zUzmZub|FYq7>)Ei{xiTFvJatjK?oQ=l3&8Idlr+|!OHP!Vv1bM9E)I-P;H7}GfXc~ z8<%U%O?40l55U7tm#T;RU%Wz*JG$HZJ8V}mZ-k$p5*PBT2+ zMYJ}Y@t#F=niPDFN&Lv^>zpKGmjF-SEE^%VB8I{_wG>cVhK}KCI)Lw0;911i|E@P3MRe)WRqe7UUiT#){TOeRI_ z%ig(5dfu+u{~e~-C`!C)m)|mr_fqrJQ6B!~Nxu8tPoazu9K^RyRuX=ERXaefR@2qe z#mSe?V$g2k6Q8KyU;gEr95`?TwiPGcLq~~{RnRxwgL8b6hCjZ7cT%W9cQp)R2u~y~ zBAx+f7g>NI+z4S%q$vnE|6qtn2BQa1tup)`M2LbM1FqgY_e#gH2nVk6(KLo;M6Lt&JOzh&|1|_^O<&O zT}xF5!}aq_dxqE=o6CfIp4j{tG$!_8FXo z09Y9x;=mpO@SAR$!#?L=!LdT`^n~<%{`Bi#F!=`;t)H%>`N?Xk?$pt_c$UsbUqhV` zj$1tqfaW>{^Br*Q7q;M>N|Qv*$_n<-Q`5-vPt4F$DJPCHwAVZEX~Q{ftK+n-4iEx^ z%I?;6*G6G9qR8Kh3h=cLB1eg5w4H=mFV5m(4ATy*Rx7^IDSV@o^q#Kc!G%%jIe7bM zA8J(+xK_(O97XM)=kyHD=_$-{aH{ttdy;ox3sBsuND0}tfBCPVg@yP@TE|-<9x~+y&eha%;K2v6 zTCKD{#dzs9|OuE?ILu&G^NH~$!>SIhbfMZIAqbmcMtCOF;`UA=X zs^YaRl}tKjAWVxJD>c;vOnL+%JWEPClQF{*zF>C3My7rjL)F5u-Tn!wq-isNwYYAr z_}nVM+DXT7HO}cJ{@MLe#(NeyRP$4|y&*i8f~xiQb^8Rdyih0+Gn*}V+q?P4FMJt* zElEa3BUD70ETGlGkH>if^OQCgNuoKq-YG7Q=A z9&Ti!FdqNR0+VAC#CSdUwrHrE7lJOP-Duq-eD8D$KMd?IH9Cf>N$8sQg|H+6sO2-b z5Xds*VOyB=9_3`mQC>f_1dj=yF&hPPh7a8KWof&O7>Yy-1|df+>(-SMO$}^-JqQwQ z6BUpFhC369)z9E@s?n)+Ay|XWvIc^spXUm%nkBb{DESyPua-61ti8DB!q=4)i7Z9u z3k=rY=Qp2!M*3SMHn3PMcmjXt=jVr%!-?fZ5@AM1E$KUpsA;Ssd_YaKR(Ka!0>Qyk zKmR$C)>(=_m`-j<>AK?wt0P;jR=jN;1S?60`&^gwY+f!42D>XF^%N9F{*Ro;ReNvk zYKGwo*&Uy`kK@%%Ot)H*A=I%G)QT#Mg*n9xj`eWu2X+w^r($5hN`8JmGcyj}eDh6; ziY+`f)g$dU->2uUu0W|ol+Xre2_Q5m7*nfwb7=^>w~ld5Bx7oE#Bl`l7a}R!B9wB( zD&?4Bl$c|Oa5x;~=a=)zPu|a8pZhbN<71l!3o@BN^C~*VVnATASXi*{W|VGY?Z( z0%miCl#vh>sx6jWVMgCBIB4}z%lJ* zz}Ze$TYw5`G{Z^CII%kWNr>*w1} zuF_rbJrZ0N=!ytqrOC~!zZd9eUpykvS*xIihi$;_rQ17zCewmmH!Ed+#(Ng=#I<7YaPiycKMin+ zAmod~9t5jAcb^il2GJ2JB0WAbG{u*cHMm&wxhANqJInjZ_5kgH^MK6EM6O9xvsp>e zMi#7!ydmBo5C8=08?40}*lbpb2tyU0#W`y$D>4mT$D8=jS04;1i4`qcC6q1|ZO{j+ zS@P2_KPRn=$je4o(|&<))p3S zrM1;cV_g%)<>ev$xh19Km6Y=9Z+wTAwiA5*;eTVazmMLNm4vVOFc^&FXBcU%Ifmlq zyYP*UqADpt(Yb^nLYR4LRtoZxZz_c{ofdKCNtY0nT^rHR=57!r$;Y4Z&t z%Tjaaz4udCzH8ItbBWg(R)K&%_jpKp{Bqt;fE3R>Ux|vr9&P9IFZ`AxFTIYY%0TnD z3&^6*t|hYbEQxVuoa4>ZR2`z=mIOMhGf{7Kk>D(#^XY1ImN=#ZGerWf#Uh>a@jwPj z3?TOG`Z_k7l@gsGY;@PbkFVQCv|k;1n!|sor?NXR+n%wCicpjrQ5X%VG2j~w%(e#w z2x3rRv1EhBh`}}wws}lS10)-y{aCU?XVqX8bSkFXSF(luiou9)RB$>~ae4SoS(%EQ zM!Bp-r7e`|V1w=XC;m&i?rrra@wq4Y&gbvrK!D?XXmOsw#W_-=W7)T_g43^_pr-o> z(Z2AIY(cCe3U@**Ta0mZRe=&CO2(w)6eU|Y_L{)?nv$J?I?RYd7KXf3g{z}m3g&c{ zI2_hluAf)n&$y3{b0=6HfH8YFu?{7P-W(M2A)+EwcqZfU*fhiy&q+St+Mvkip5XVD zt?a#iJ0A-$Oj)f~?%sD3ANkRrLp~R5H7%7q_lle$Up=q<`Az&;Vqjona$$@kr-d2O zii+#VG47NCgR+7>?8sjY6gDf}@XjT2?e;ws7H9L3o1wj{j*0m`#s*vvJ%!CS%F2?G z!G%6XdY6#L&q~`~3`>)=J`1`}hvOXG_&lZ~J^Xi48#UeuM#96<`jpH>n#m}ups}Tn zh=?UlpMH(0DM6nly(my3!aMt2ue~>Gu|$nkXORItHSOf>+(BD)9m9?NEU4sotL@ZS zhZ*Xa;+$Sdu|AWT=rpVr!P%C@r}NEQ^Q3Dp;)7OJHZIL-J2%NE?kH#BS;2uFbj~9~ z#(2~+21OsUY6UQZN;X51qJyP{Q+VFfrU@ z1vVDCQ>gTqQn$RTtif7a3q*$1-$kxE5>G>Au)-9#-M*jPlG07bllJ;rhWq=F5gHtb zb|Jh02)|WP8M(c&llHL{}Et+ep$uB7-e@Cfwr`qaj30I_&Uvwwpe7vWBikgur&Xg2ND$OO^asVCM6T_%H z(n-W@G|JgQw8n$@T;n*8{guD_-l26*!uifytgjbej>{7h*lbq*_@B=qlfiKP0?k2q z0x>9v$rnn8kim6#9-wIVt_wbqm*YC;Z8Ok2>OxW{jMU?qfyVlP=-FjDPX6xQ9D3>r zdVO+o0{0{;PDMtlkq5qVxAeX0YKm!S>7@I)BV=s(2adExkk@kpyVb?^mKj!d^%FO} z4XbSqPts3GtiG0I_w0r|+oDM|uQuUttJM;sNWFi51z-HvZ*nR;P_GjlC>V_>jLG;$ zNAQh~V3=AEG6kLm=o!Wop^<_Dan=mLvNbd?5b-w_izRRlR)#zdhP;AXJme9MZM9iZ z7NEwi zH&z&ljvzHEmbF%RP++wRu9Dh)Gi!~-!-y2%suT3w{n>w}uyohD=kw5) z9{}L=3$@(;()|q8Jx8S1LF%?rwINu`B7zEI9*#=pr zwRS%2z{JD|kVWoRA>b2R(b~J}Xzvc-A_iPc%=fYAbul*JLZeyDMg#{E=PPO2%%Zj7 zBxXg?HzlZ8cP}jQkaiH~>u(F#h?SkpbhWVc;AcSw@Bhf%@BTf#fi1fydE}oTCw3)* zq9b5z3@-A z0teTv|3Fp-14FeaV+9s0yL^hpgeJ5Jpq%;>(TU-x6RcpkbWH=eIIKZjgbdr91tQnu z7DOk0Xtv~{kGa;)%Tn~Qo4}vS_R=E8>T4;Qm?g{s|0>OAtEoNy3_~(Ko_I5JV{^o&6A(Tvp`f&k z#P}2;gRsf-SGa5E1;@kutW2y{D;aAjcRiUISInQOKf5_GK=F>ED|Q}N+bh=!83upg z`Mlb`r>*dx(4Oyeg=IU}tp+Q_H<+cJb?_(pDDP4*IAnNkje15 zCWU(V_uzN{TVv$FY6{*nzl0xXJ|obWR{rW$Qnsg)nr&vfqmF|m$#{L?WTm)>Tn;DF zpl4!$V^AmuR?SoHUde7OBRL|7en?~>~kB>Qp(+0{EIfmc2?l-Zly0N7T@S1Z#7I| zGcL1lQAJ7As-8&ikvGt378$AXNxmfySu!kVsyK3HbvnCXcP__{ zjbpdl$*(}XqF9J0e_JvOV~|^Hq59-G z^u{>m<_8$1`WjZAbtD=NV6CnV6{ z$aJasOe_pBu+&H2@;sAqLo~-sz(6R`YC>9Q*1$2fBw-IOWWiYj$JEj#VGTTy3Sec! z{ccoVxS5H;flx*|j%TJFg-VYxY>AYtSW3rNP~P?d(hBlJG6pi>wfa?c@1eyx(xT(2 zO%%R+cWo8@)dInU#bUu2Eie^j1+IB0zD!U?7VY@)WBl%SRsfVbBY%AEdF<^&-0{^1 z$zPM1#}9oi9UbQLi3#5LMI8+jC$as(%S+)uXXM!_j+p*mP(g%$ z66ew&Q9E705XRf%NHnBFu?tY)nfCGF`yb?mp=Hk1{})j!;|#e$p-Q2pX%Xd26R%YJ zP^#v+_WiH0EqRv|9Ei3VpxTUZ-@cxGg9NS~@;DfBEMPZhG30e%2dYMUc#2c*Lun^ zZPk;LS4v^odJIg%>9f3z;ABKA!)Q6v&Z$GSB;^};{!35L@^_s~|H01FJKrSY#4v9) z_Ap?MhCv75VAh?5f2AL6P;twxT${E!qq(o}4oSEU2+^ka&!E3WhA6S#+iJD4u+l97 zk3n#7>dyvAsje~iqWV1x7GO2Qu(ASS0R`l>3fZ-RzoQevnOcbAgF9|!RGCD-ES4{B zxr^OplO*NeMxyE%?cH_wRAJnhHHbXz8mXkoYO}LEqkx$95;QJ;e8-JEc+ZE{^qYR7C~&#?+;vG$0=%${#8gc%?$}4Ig>j)0vIlij>c? z30VVJ%^Yl0QWVTolo)4V!naI>N>MT7q?PQhZ(p%F`*6tim{NqVZUH2!#;}WQeY6dmf zUimE%WnHN6fu7D;5^svb9HV1$et{XrDZE~&`%g5+k!TFn8`x&r%3UA$0G|gAoOzkn zfdB28X#+zRHSXA))Kg3cUE=ScO2;&O|#ZYgUZW+C=u z3qoWp0W!6ag-FPvRxLQLYQ2T$h64;q`T+J|RH(rgaSni#r4aEBCZzz{Geu|sHKu^t zF-ySc6ljbg^}wPHjm`2(&09byyOo$JYV|vyp&?`&^{qGIe(p4FZR6~^DVgxXZ0R}G z5doeh`WkEKYpg*L9!ExD4nFTPy*2G*mgQ1r($V6tCN?dS~o=j z^+V6RZ{2=2%EVkQ6Kd(hq~+R{Q@q*yloS{M=rk#KBI2+oXmBJH;!z4EVgKtxA7yup zk=I7&ne#f38xpwg;1@Z5{1{Qn1l%iLUT#?A-o4jwcUCz^$Les(rZ8;}W9anx0k!9< z1mU<9pKy`S2e6J>NkFEbm)M#_$9S-(j_8DN-a1`FVpbI6J&QzZ!|^R@(8NZvlx<{5 zk%{s=6XV)2FJWO3>?_Q^sNi7jvjKwhTGtvHcy)|aOXq6X7KwjZxCcqum#%~iAlEK3 z*6ozC24me$q7%Xyx8|@V-MwDdpno%lqKh+8xXtIDKqcRff5j76zn;Q0Iw6u+-4M>{ zC6q}HZoT0?^74f-Nz_kidHqEpdm1$Mn9UacQd!AJe_u#RkuoM4amr#X-e4^lS;QLv zD5ka8tla>l?9QRJwhqO#jemIR$06TM93S$_%FxG!vZ@951I)`bA$^KSqfnA`9(y*Z> zffwj|eEjXDMLc_`USKY8Pa-NFOK+Hq-oNm1u_Q^f5o@22VfY)mzW5j!r~g7kYyb2;>!~uL}y^sSSmt zpo}lX8K9LMSh^ACw3AM6I+3$yx!LQcV}2Z0;aSw$2y~hhrX~~V97!VbMB*i7Axukv zE(`pSpOA$;K`oUWNhM4H^No&TicnLoF|Gy%0Sg|qMJIl3X%nzo-ZZm}$adtJX-8p9 zM4?(ONeK>8f=io3n-2JzYmb?gW!p+BH|VRw1)y#5zlx$#VEJPgY7sXO#K@*9ew zryJAt1?(%#3IqlpSsE6YiT#`&0b`N+^{C@GiYTQt!+ z7ehB|W4BOx5CDJTp5*^d48IG#X$EfOjOwj9iE*zb5J0H5{ z9;q~PXwk{9@{{1iF|sTdhc|%Lk|MF>>$R6&r>sa|`#W{0me$q|v=K?PRJAi)e+pAZ z2J`X}9@+a{WLt&%Y${GCvosfEP_%0o>^jf*v&MYx34E@=J5%hx4C7z$JKbuva+A}` zN#`7?#XGLp_}f_DB+#j@!Il6LR`74l|GL`$?)rs*K^)1%m-W@<_hh+bS2>=U|3I=U zaD0hzMkYgiV>Q+`QnG8;CG0P>Bq=>zpvwHy;iK>Q`JZpO<+LDBC)z|^H?D?3X}P4# z#Lc(tLRZs9cUK#&g+-DAvKSQ9JbsoFe|iB^+!6*=CT|@6Cdy1LM_>9DR0zk6$b_zm zX%dZbU|d0ONC$+V0H9#+=H&|)YbWYnX2KzqT#T;N1J|NZB}yzHb21GIgjt+>x5ZId z{63cb;XpBOKk_s=yY};wzMVw2p9PTAsm(quwa2wAMy8UHCZ}_xnw;dF*lbqz?W>To z5W%)Kh`7@%WFzcaH9oJJ+6W<77y^d84xS6p{0fXp7Va+Cjm>I>0JcI33R=zpgkT;- zQ>YX1&9tM67c?luT4vD%fc7Yv1?A`*e&`t%0NR<`@R?>X8Dga%!D6w5I1)CSmC?Rd z?*7yl1zbj8-Mn^+k1Mrw_V%!Bj^frbE&IOy4Z^}8EiLq#1ecI(WPbnppkeLIvP=di zn!AC}neixB8_wuFDyy0{3>d@`t@DXtUC35epuTPMQldz2B5^7qxcboEf5N28p{uKb zsVO@?a}GP?1i;ikz-+Pbt*<>KUGJLjd=pb~K2;0Tn9UZReDVowlUB+#29`%BQ5bc^ zO}RPn(YJ+6*3&=Z#PMScc^7DmR-?Y<79kKddSJZ}HUQI2-F#u24$rKNR;`Iir5a1F zMk;A?d*{~Cy~2exBZ6CRua0!Dk&cxboZii^W#7bEh87*vwiM!KmK}Mk;&W?*ui&hK z7!-)Of_IWNSc^3fvj%#N37t9tb^Hq21ur_ShI7MV%q$C8&E63qYjEB6WKN%c4Vg^F z&}`8q9b2@G6p^Ei`$9ew9+iTB#e+XN7f;@`EY4a9Gh49FTG4eh5EgGCVfq}2+iU=A zjWpq$S|U=Ph+ZQ+hccNUatTQ9sLk*O7K=p+4ie)GD7_1qqGGX5j<9cE1t(4%BdVo~ z_Qo#q%*8?m_G=bND+pE@{yLgEY5Z#&@k$dXj=zDwOUdA$Mws>t@jOq2P=9BZ33Ad! zYeYRkHbcXTKS!us*4gDeghmQRcZA>nP=v<}(>w?R3M7F2=qB6FZtN>J>N^L?D6t9Z)JwTM)%+K>&fdwBPd*{> ziHoY^!6wqWVzXk|nvcn96|xYl2UJ%rOi}s#Z%`PGsBNP#v&^hBKvS5Z6oAlK0nxWW zrT~DMWqkAnzNdk;cF^XgqT&wWxzh+UqGDhm&L#$1u(GzosKb_+z<(Tmnjwz^v&F)x z5uw~l?uuji^dNi7%kcZ*U;p(X>xS$s0bn}kw_Fl{;~ znz}i5{3zkmQ^YCrq|f@?Ms#b69TC?zT@*o$6cBHeN$ zrxN0LcK=5u=YMc;5~WNiE7R!=OikG_^^W3BFz~H!eG`D8`c_(7h3l7}pUuv|`KVq2bg2cz%Ddsj zrk5JIb`g2hB0qlWe-o_@$2l#`k{h-~V((ZjtGZlSgJ7(IPLqOOV1WvQF=35QV4!J?NY7c4!o%3H{{Uyg;Lk6=jB0v{1ecoxWg-KoW_jwz&rz^D7p*c; z3K|N^1?PX-GtT!O_!a>F$frW6!dt64LIa6sgh1kLnb($|CB%DbFaxX{4MxfSKG_l1~LqR8+^6BBCR4aF%(De9v!D-S2^&w z0D6|mP(&u8h)jA%`wPY}_%HK$o-b3dHYg~HDv$)~U}M#4fC$ZYT5Wx()lS5vOnJhQt8}!F znK)PJKo*})+Q1t`IcA8#!eeiLgJ^BIq)xq27D6mR*|!g=RA65K6A=QaPEg}ks%ca& zU^feykmYqum3nqnQo1+LlUw`PBE<1qQKf zXRbR6Q?ZgSfA06RpE=F@c3w+uQxz502>0~+uRKp|UsXs(rnR+|$6k1v*Nz_H_T4uy zH8o0BRu&~C<+Qa4LBjO~*YfD2KLucF%1&NhK5ZkdD9lC{798Z|?)r^RkiDlUK zG|ML6W~acidy>SgXcAI|p;KaN>UH8@4r9yixXYh4$X#Kq*Neq$WH~a4GiO{d4fAdz z^KK)%;v0w_?c|_b!!`O;eqGf<2zq>tO-m$1PaNHSFJg|35URPvIA$d@IM}G92$00j65|YXj8ror3qx(} zVp2X#;~+Sqy^M8CV%2TI5SIgE_K}AWP3ToI zRB!KR#xuk{U%L~nGBIR(F^~{j*f@|7Y_+tL^1$705t_48PxxOeVvRUszt-UhTgu{rUM8T3f9kBlPp{ z(eXtlmSxuj#3M|F%FM%b!vFvv07*naR6x4#7qkDs^r={uB+jO)Bjl_5xrp<7=D&Xf zK-8lDf|-Ksr~*U_4hn?NttwZ)sT5SJ!?YRLmqr;=tN2)+mQ&6I91BWf(xN%t{wk?a z(agISxar#A2~n1m>nSfdQ;ix~j7C@h!+upb1f}4h~erR$)vA zBQPpBfWg9br$$GmYZ@FFR1Pk2yt!MTPmNEf*q~&4Vi=iP1({j}CHZ$!va@W%``c6- z3fu-5i@6oUvUSt@eIe@|a8UcaAK&yXD5kdIVH6p+qhgrM+o$k{g`-bN$+voW^wFP@ot?w*a6cN2n!Nmc{y5UgU%&E2zVekXN`aukpyQ=OJ;Zn%#H1Nf zD%EJU8dR!yOiDF&FZ|&T&(YoeO=ctDTm1vvefK@YOog#9>LPweBKD4H{`})Nd9m}4 z{P|l)8NAa(*Ymx2Zc3r6ZxVSBi)%23L3n;wgRIHPQ5H_!L71zL@tyF|U*9A3i8QZj z)j#vZ6HoAihrf^0J%x3fmDk>Qo(~_m1G~+IOg$A+(lj?6!GwGf+tA`gUwbJ_(aQxX zOxNie47ug!9g$>**528VBX8V!fcLo z*lE_^#O{|KLl&P*r9KOPgM!4^TkwZBk(bj?v{u2#4JH~p+Q|x+;}85Zn=Krw{RuyL z>=S^X=iv-n!u-B6CVKkFyRLx2<{l~$ zWF$KO?t3%_bW(k;2^3MQ*;04Y3~&F#TkA`k0vHLIOh#e(&I^z4fdNCo4nuv&r_?fBTcbDx=OF zFSs`h3W@;3nry+iMn#L-i+!mMyLXInO(bJ#VGxzY>nYiqM43{2X&EWb&tagcntNmC zP|PjhTUzGtleRMGoZ~g45kuO=I|FM=i2RE_+Pem&pg?boXMQFg*OUWqTL-yYcktjp zKFG6Azrw)>zPfII7k&Tye&mt*5KyaF&#zGFvG%p|tN(bAh4~(-U$09hH$8{8t|6k8 z37EIuj#)2??VXSug50e;C^Rd0;^A}ntPAuqLwx)vu-L%yzABt9=w94|vi%uk@#)+& zJI!w%dxn+d1N2P)nXGH(i5$to9Wl;{6UVSvEKqBx6&4=#GW9q zio`{a6D^-cA)m&vtQAy51LY7^3!_+vt5J-smZ*s3O^TpEKvl9MBrp)y1p}mm*NF^I z0DH6ZS)TLd zYK>6$ZL#paTkn$Cu*7?u7njeimTYM2C)d0Khr_{0!yJ$F{DO3cnZ~9*{`c>{gYkhq zOv=KDeE;VuDvT$|mCRrE=iQfv#<4csNGC0|~@p%A@_c&2S`GfQ$mWbAd zW)&_5YcRIp#ZtI&*5Fdi-t#sUNjczNy?FLH;e3Kiid5Px{^5I%a_4o~C{)YbS)R&f zSp(r3u77^p>T4P47fJ_3mZC&CJotemAWjlD3(f?ddG&WRoUxPm5d)ZoS#g`qD(M@@ z;*)7_>O}ANbIa{FQ9JMB{(zQ6eSIh1@eyXmtxU?oNQ$>0Prr_^l20=|(+^zF$>Dys zFP{V;cg4xT;v5OeWR$tt$lQ|@+@hE669~E;lb%LA>Ln`s9>wWdB3dVumPvs`MFGB+ zNk$eY(1h#x;U^!LzR$F0h@<7g@ixjxgaUw9*#*A$j1W|a8HwhqUSxRjcPVN5oq%k8}NCb}${D17dcR(EHo&WzDc3~TRS=dFCK~y0Gq9a=c_t=(O>?C%avmM9j&LzLQ z+&Sl*6FcQD#fekz;y6w$JGK)?uCg7sLodYa~Pd{akyt>lWC~VjAyCuoa+Z!qmjSE zZHj7R7gPu_wwJ&zD$V!L6A z!t@N1g$$6OXxkQwN=wgJUrBj62Y&Gor%s$8^-?(`WwJrmtj6hVNfs0@nAi`iCOfgr%E|MfF=FU~MzHjt5B*vHS)GPaK0yJD760 zFz00QcI}USR)|0>L|}3`g;_|_ghO&3TfFTWjSVOKig0YUb_Q0L>G4|jEm6x{S~Sai zYAF>XN$j`x1Tp_>g#&qvC9eBlNff8e%A*AEOiCPi<&UUF=1{v#EXNpm!)li;29{E` z$A^FbgT(e)05o(dg%K zFNC9s$;D~kK}n*KL7%f$z&i#2!j<{yW&{^D0;_2owt+dA3lGp+FgOl_6QFa|lN4G- z+NG7KqTF16{SCCWwUUrgPV3+>!+pKXjM<13MIQdvfAZn0ZUvyIsD$P>JIObuGyP^i z(*`w@uexxSEHQk_LA_{T^Mr%d(h~j@v4nKE6`?SX%KWT#iO#zELehOjt*CM}&6n~kuvV$2<9&R`2L zZ(pXbcHW0yh)L2gJ>FkyNNa>t^3_Q-HyZBgIa4MTs1{mQ3)_gdc}>j zH@`t@);4ax`_u0@UfUb%816d-0?gZkvmygnCsz=~U>uR+Iv8jb5yTpC}u$Nyv@H?uiUgyf|KERa$?{VP3@32~Xc=)bQ61^v#@BZL> z{OI-y9)00K2-R_NMu(vBTXwqVR?w>;J5nvLIg69*@3@mVRU^_wBnevvFlET=eVVk2 zV47VgNW_$?Inw7BB;qvN;bI6|3}YB?|>!6K7#w4#j1kW+Q4oE^A}zPt;OWQogRf`V%!Wle*@< zB)x&Q#ts(TcAt=to1M($>>L{HW}5ojD9^cys3_TmC=ge$5h?X;T3BW%;5;=|WN=~S zjQ!Dc;wS)pU9#KJ=tygjwLq;(VZ{|J#3&kNmCi(Nwuzgr*#r26fYpd1o-w(3M zcxcSQ{sX@RqS%OT{@lGm=dCp-Ioc|R&&x{Pf+sN>X?~Qq7mCnWf6oV&Tr9XGe)r;A zq-~ODSvWz4ClybUj*^rV<|kIyg>?<2AAa-4Xmrz*r&cl$KF?*BU53?a*_pKsPh=L=Z*=npvc*8( z?m?0~p!KjTS0Z={_j5po-bd$Nn*w)v119eNwx9`yL}DG7m{w-#=$Vk@{08 z+5eOc?%Pkkj3fnv%@xgB94b^$R9Z?= zX=%`P){opuqBEVP2sMEoWv4?np-L-Ynu{O>rl>xT$F@h za$t&^K_9t30ibhcnUTID!Ggpl&@G0e&2SRgqJ{QlHlh{R1owXAn?bHk3Mv0T|Hd=? z$M609*HY8Yp+i-~hLr~i5?Xbz0w6V2MChL;Ngqj5jT|LUwn!-b`~L738@}h_1fHeE z_ocq`=l}EPYI*aJ8M*Vvzrj&a{|Sm_@cpfC>lQPeeS^Mu$soJ6oa=XA4v~d}z|fTg z16K0S;yItV^^+9V)lgJYK|@^)^%{ATF3Q_Naarj(wWI#%VgCHnXQ{iUndXsRPWH3_ z&^*#h>#Uzqy2+Tyy$}9?w>#Sy>7ORixy0(kGz&Tx&e=_5Zn=m>LCwC7gWP|^zcJk3 zi%sjKv;Q=P`B_>HALr0-f5t!l_{n!{PfAfSgYCa#NN|zvt$Sd=N=SSXE%h~=>XO}E zMu%I`>BDe3dvVUW(QAz8HAVn520N*k(tB(p)ri+ zbU6n5j2e$?l92Ee?)?0J^Nm}+;;q|^ixIS5rmMZNj;%$d0q^Ojf-Py36z5VB?8-}~ufzOf}qRY($;qk>~w4h&eiJ~oyio1G!|Jl273+1fDefd(5F zmT%|FpSl}&QwL8TYvjp&^4QP|i`cqkA??bHWlY*=F1$FO$7XtI>XES!HO>C9bH;fY z+#TMF&v70HJVULGW5qRz5TaQp1e^;Ag0OMh0LSDUAFn86O;?hdDk4c>nSOv23%C=0 zPV+vaKoC!c3XXdiX{1k78(0u4H7C93dAsgAN0JI-fXJkvVU3hxsnMnY3xc4 z#n~@MYPxl6Ec%ch94m`tSm5~SqiClbLHN|w*ic5j(T-L!T@D&!dVrQKXAp2aM0n--;jz6z<+d)q&?3cZ@P~ z^p6;gX2Qe6i3khj&F6lPd&0K1$_?`ytj&z9L@83JaX^p9^(r<;D5pA)5uJVui}sV0 zW^0I#HnUYMV^2XAlH^xth@u=8bzs2CXa4as8(QFmxIDl{NC*rqI2c-(J;QvHDcKOo zP(T7RGh^HqSwmy*FhaPQ#+fBTqD6$5G)TLMY43G*K1h52K|+>9R@%h4W$k+|XV4+mYpts<8x_ju5^ z2vh)pye6g?qB!kzARzGU7ajvxhmpuE%>@JsD#|$1`t*x?zR3kQUO|3Yx$pPp8{_i-dW#K{ce)aRm_xrfLsDP)Qe4XZ|t^i5>eLPCR zSz*;WGfvwf-pzOSGjs%P{%3Q4VXY61R$}912B7paH?eI;MNoVD+Zu>Bgu#M~K&pM~ z*G$fKqt_ToNlrt9fX)+1alt16HuUuk)Y=8Q5v`@SYum6yODwqUv~|^^GbCY5NJof{ zA~`+BXBkm?`IXmenVPZsx>y-^8WM2@Xrmd76RAVpJ-<;(1 z7k`1iY!YUNaKuKkpi4n5sPMRk$hat-&V>uu968C+?qW7E$ij?^Q6Z9_Jo`L3g=2KR z{Tf2wcIvto*i(>5EPHwU@yC4iY~;!Wa!mH}2qWf!IZ7}aBz_uqO40JF9Qnvb;;8y3%;ZGqw8Z;*N2E`EC3!%XDI zkb@e}CIhFB&++T3XGn<(!x5LpfMW@%vl}5Rhm`y*F88?;$$~+kg&@!!Na?3QW^gTI zC~*fBWJLC?NrWYenUq*U@l14a zU1kz1i*^LT4TKV!ZegjdW1Z8QBtdKa2}TF3N^wt>a7}L zyzircdpDYIw(u}S;Iwm=Bz>^;^sbNJ7Ia>J{5UW}V{0dkr@Vs1m|u`kTee|$&0~)M zxQvdrgM>uOf<&CE(QlEEBqA~#L4w5C^TF*G1UZ<4MnBK#_#-~oCUr(Jku6%EYty|S z`6d9dnj|(AMiQe*VpCxR+jivAQsWma0`o>FR*=ynD<>*PlQBZ$F;5 zF#L^=!5in_px%J`R$Sx0s11#^H57Rli?ex7xX~1pyiHl?*K4HDe5^nEHiI3#OzD;> z%-Tj#iOhUA)E%d>Teg!okMsi2I&0(Jy61!Z)72J>PbgTi$>7fDyFRrpOs9EjmQ7iH zK(#_U;u0BI4D;n25Jizkp4rc>*WFC+_8jiH=K(Ifa4($=uhVhlX#grJDj0pCo7K2w z{`A9d^Cv)Cmc-m_4~7U0D?^LK>x;2CmvFbqmJ=mzxYa6aSof4y`Zi$*77XO;tm`&t zg%r1yK%e!wdc;utEUm5!5xOd3P!`>lhz zYhPj2ia(X5LH!GR94=G%{Ixk zSAUXOK~_UqCo<_fT!3B}Cv?hASXe&cqfKaH^4S0Si>P(+R1~CA+x!&e`F=MeWrN(a z$Db_B-$(L!k~s=k`?8$T7pQCRzz`eC!cr8VMXgW7HPz&+ z@B8;%NmLDRrq$&IJ{vS4B&Ld-m}%wdAMIybMJ}4@1O{W4c<8pL8QinT zLh~38eP@`<%Sv&?2|VLiLK^5tNQq`o!PV?a4n>lnEGv!6%eJ18v0uydpN#+@2=ZJJ zMe&@422m7gHnuYz+J%FBa}zWwR=31EhX)*2cI{epy&Ln3tZ#Y|846B3igWZ$1zow33= zKG&u|T5A~&H-@qpE?XoB!Do>$Z`Glh$zv&Eg{aVIESWJ3H1{wvJwe-_q2V_jbUE4s z1c_AGv*GIkvQ^?t7>O5u`Z#vSEG*es{K=27t}fF7c#Lsm-EkMkF1U;%KYxzG7yksn zZe1(`&WU$e-@K8av?e^RNi;EASaD5)kbK_4@c+}JTGj$dvNp)O1f4&B|IQ1`D^P1q zGLArc|LfacRKPRO{>Eo6M3Q||C5dyYAITrxVvl#hQhfE{FW+B(qL!2W9UO0{!llg7C9DHh_Izk>kX9>I6q(Y?ebUo+47FhnhhWE;YGHP+o?}Zd z!d3E<1Ko&XO*`cOqrh{#36&|1;RV^#T-kiT{`LD=OM${cp!R&hZO7@h%hm$3?A)~0 zO=V?q0+r50xK_os;vHxG{Q~Lm<41^%UIAx67vC<>ZLLEWyND`wktk<6Tl4fxe4vM^ zr5;EE)3S!yehq4!nXHrqzV_v>_`+5K%uMd%z-wm?DbwqaEdXk51aE%-pIFt&e%3eL zC0kmiTrP5?Iflj@sI_4naBl)6_P_o|(zjeddRQk5GcG0^a%}a$Os~rMS}TO2fJ~aX z1W^<@(Q<^HMOjoYKZhYUl!VN2oc3kxU7<1{N3WfINoYI(&q`H2&M_4l~ptM?A82p2Tna@qX8ZH3`eKQ?he9pbCoyg0o_; zr6<4sZ5D^xiHyj?H3ub0nK&GcxMJ;$)Q_TDTELZ)!k4R>**xK9FzZ@8#cr4nhe8vo zn9Wq|&82+0A4v+v83bAh-VH4*ETPxS%z5B*0-3`9INC^6)prP;vJ)3ox#4rBv~GH1 zT>K!thNjhVM(g%t{(+2xf01Yq9l46J=EH?`pk8gPWM(4$)rE>q5m3hnMQP6PWIFbave$flG?w5hq ziXahEbSKl({TQeEfWtvdv?Bbgv?fAgR!EBu23pTgEy;p}dl@ItbK;=4b0O7I%FL!N zbc^9wGGZ8Lkp&5T%_4hmz6#Iy1gWVaE~}iht>svUPdL~JBk{x^dKqz#v8dD0JwCzJ zAG{m8eG;QFj$;R_5R*R4sv(V*kWEO_{WPz@>LMKY`fGUl4^osP|*juDuO!syFd6nfG_T;aurQzxp{nqt60hG9}}1$O47c-4FP!DJw2nFdB7) zAuOyi+W8`(#d9R*2@E;F=-fu<)5p;*%YBlXD*Ez4thGW&5|rfaWT3~&Co8|>3kBOT zeH`-^Jx4-Lq1G*6^}48tqDaeeDrWKG;Q{ z-GwUNBqzK&1LNNL%4zzOAuVzo)%8WRwX`#xVkfO65Bp*w1CAy7r~71_L1h-VCWk`y zR(9uS1>pVWJT$$|eOFVeylnRz~I?x6uIq;296K!=%tyuN2890Y=q z2OLW{t$l1wEk{*c!s;qK`VV`3-%oj^XZO9}yGQv=$?zRW<{S~*z?vT=4{Dvf&nVyj z@abi$s$K_>gIr{6A|qDKhwr{I0Lvy*Tf>PUOLnl(Agte?0E=@8<*H;u6b>LE!Mx%1 z=WzUjA2Y%_p7U(rbvLaJ4c>h=2hTaKV zu$Ee?o+Ug)FK<@XQ;g5ZnsBGv&MSXz$C!}L(#irW;i0S=6DTjao(ewU>(}OEH3&=a z(vN=$__JKc=>-;HoqGy^!4S^=pZtcKzVLBczFNzX3!X+lk;$Rn=Ws5!;hEB*jjkqT zcR15h3%y+$)Y>HQ;tY0|e9TvWZgw%bUw&sHKnV-D5qZ4PoK{>D9BY!;|I#n1Ydyjj zfAB%?75*Fo(~fyAz2Ng~&8wjPcq=a+Tx81SLX98)vEmvhRKJP&;WvF5uE%FaS?-Fb zPFqNl;}zgAX<1IXYa@tr<#OrvC_0)t(MQWsx8BJLv3s{11!#*{hIQG>KkvDYfdMN+ zS$g*EdyLdnk(87>eD|&m2b=2chG@0j=LcW?$A?&O%YNOt*>jAx%%Rs9*^*mH+Lk>W zZiU(*5VJ+nwb5|$q%Ra9073xBcG`nFRYYU&$LtAbb#|1Q`4v_S#|Kmg`Q+?wuk9H*rYMSDvZr&*1cQ8?5j96 z8O(ssa_~PP90bzL&@e-jojwbLbEFD~Q(jj;a_t_#BwJ!Hslc(~X4bRBGqb(qIHA?r zjN0uNCe&s#D>fTRVc{fY6?*@d*FcYLk^v@t{e3390r(>otpy_=K0O~~HQ2Q+i#-Kd zeDj|kV!}GZPafJE^lpLQ|Hj*|XG=j&Q1l|B(c+D^v~e^b2oU@iC-~+QZEU;nLbk_; z__Cdsl$8bTI|9ns^6x*xeWxhTJwt*`-@fU!;ME)>Ss&%wUQc^L&jSNi#-_%7*T2{M ztIs0gJvP+T@W6wMYb?Y54xLKB1Qnowt*3$Z{)0hoO(8KN#;HEyx5yIMT0vs0$4Oj7 zlFv;oJwk^yKAd?y%Oyj?HEx zFE7uVPezpXWDko#fHCzd~VB6d_4T z6lf$OMiy}h-te67(7!J{x{n(^ar@sj|Mq{m+=pQh)=XjH49D~3e|@=(uO1e?aU8LrrDm=$Y*F%?l1Nz#O4UA7`_N`<)8pm^Sum6hE4y$5|( z1LWogF)$ZilgBR)?4$j(98svPv!0G_*>VsUnZ=ct-N;(H>6%aZ{NDqu1L1KQYaxTacY@2;mfZzsd!9xl4{R{r^m56W%Vo5{&ZOfHJ+2SC3&l=#gz6BpCZMTv0MKwU_?vqcCs5o30k*J&^Q~bt?m6_XL5vqUsXHk8$~O|+ zuDSUt1Oaw`{^}r$0l@02>^h>1+p)1>ACu|rdSJbijnNcb$E9t8LBdkf5?25VoT;qfX zFg^d%6lEHvxvPqpkW`FD3;+6sov0$UTv}QJ$YZCXAeDguD>c%fa~bDe(T2^L`IkTG|ZmG35ec;$2H0A zH?55t$L}*s+5)tCiR!k(e0SrPpk> z_|~}8RFMzedXv1i?5^bDpZ)@XuYT+@e*60uXgwM5o~{Wr-mE&Cw|@XBF_#v{5-h>V zv3?ovfr$g(`ZWbAxu3S1RTSmr00PBjr8FNu!O>@50|9RM#O?3-_c>qw*O#m1qt{2t z>#NQN$MfayVL6H)?E7DTbM0|Ie!)u~_cTa48tQ6j>}mnQAC~l~uO0Sfzzw8~t1k~S z3%4ATeI>O;#i-|Gt-9GhhpV9lwZ%w9O;@lB5eD|`z1nyGi*Fv`-f!J4Yi(0Sp8efR zJiG4&{`u=)LXu!*1)_2{0nph~Pn*|;2w-5Ol@oPGedmGLf<2|TFm9Xk)w{X01dSmI z#v4g=F4Hn#eMfA8^1s3mF1YQOED?-NtY9>!v$VXxN<=7#2}n|M$NQixNW% zv$#iQ01rX%zL`0G8jsb+qx=7PL!kiJFw?b?N{YyLf3oi#tpsbSy{n#fuizyJelTB6vyERobq^D^86PM( z)|d&5_&|U_#GSYK_=)=3{8J{VGbGHhLzeSe`e@2@bua)|$NTgaP4jCHc?0+Q0DQ!9-ES z**A)32cV%T~LgIdMd*eKQ2 zRa95|+yD6EGJZ-~>r7E*L{X%2PbCk(>~~pHYfY%NCY-KnzH)({zOENY%@z>^I6SzF zcwrGw4a@tFyZ#jbelw=#H%*O5)BV7+R3=8SRov8v!rKSc#OhZAUIuRpVU09LDw96acKtR`%Te6^54PN!En>Hl(#l zdISM#=WPfAKF!g<=@!u8O)BQc8QlEh4*(FwbW%;Jv~|gv_uXsq76e)glx)Y6B)7M} zt`UVbw_2^|h%Hc(w@JRvZaG#%|FI^lUTcB-kJ$*9j#vDg9nm zRmE+$-4VnX9BUf(F_rCI^|W=?BZPp-9L?lxA619mV!}3q$(!Z6@02XGsdWjsrd#>= z=Y!)0Hq_Mc`di=iVJ%h_orzKLg_PU$kgPp&!u8IM1}fPH*rz^=vXS933Z5*aCZ+YX9{lr zE+|kqn78}0GXof6L*)$4>y_{8C@xNJ>({>aRc6BArrnpZb*nrl+pH&P`=+dd6-5y% zliq+4m4N?yDBmPdSrMqP2m~X)R^5y!MKNfd#h^A)I6i_X=?DzMyQLt9+*m!ig*o2b zETT_HQ0Q!h1I3c0%FLob9YWaj5E(`}%HC#+k$?QRj|0%r*pJn#9+xA3g@EAwVBUHA zZuT$V-r!xU`|IimLD=9q0yaY!%*$a_0lH>a{_6VQRrwl{yjYI4>sR192GC#I#>Eyh zLyi61b=O|r{@26Que?Hxa|LP6!)%zqsW}f?5*Y>N4tEiqJ;eO{JS&kQB!tFOpqIzq z=<+xzQJWZB9;ZN`$EX({H8wlW>S-&7UVn%~fUZ!+_L)kuu$1N#8K2DCFT4Q}i|o4U zMuz))nOj<6Y)n=NDuE}y@s0bbX&OMSE%Ac-gV(WJKYTqMO|oT5AFX9K@Qa`Pf}dae z0jjI3*kAu5328;7rspv*D^E1l=1VvXWX?A-Gcq5rPrS$9=Y08JRjv*S2cSsE%K6&k z`SSOsJdpm%{{N@nJjlnk?E(qE3z5waHddEfz&3|EEg4sP4O&Alg29Rqn$L>G>5D=% z|H=VbXn^%DL|&iT0cJ@}6}`UT{smpx_!Q>*z*~)|ETQbo@-wu7*n;-1deVV!Josti zEzz`h)iZ9JL9a2=Hpn__f%0sf{AlPiKY`y?}C+bjQVS~I;zw+l- zWo&^*#ui9%2~-rz*n;)_@Bcn+4JT-S;Z@wj4zwqiSPBVcba{*vRT2sMV4>iO03l&? zd5qB|dC`7D=%q;|YwyRSb&Mx(L7JXNh)Ji=tf4eM0|W?JDB;;Z%GL?@bh|Gy3qW38 z9^v8dpaKOhx~LMo&F}2-TW373N$$SyQYLIOzAV=co0iFjt;C44#AIdgf$Og$zjy}- z&~U7Vqcz_{!Yc^`j#s6BHtPF;@#?c~NP+hU-{)~p^G?*(G3vj^TYq7(oYQ1B#K?-P z3FCAwmnDnb_YZq{;DP%&dT<2&(ke6au}li%Ou0YC{1F+bm>S=M+i7R?qz;ufj$Nq+ z>JBxr^->GcOOb5xj;TOKd!w+fiU6UID2g;6YiI9Au42}<$YZ~Hgg!&9Z|XWy>S5{5 z4J`~i%5LC=@BiDn2qf_AJNAu2%6%arkdYyhk#R?mH9-;Fzxl+=GQ+qL2su84khy-Y zjb9+UY%`<7eyl-pyb*oqBGbcdl;mH|giXe3Xq@o~(>+)sHW6XcbL`FITz&OkstuDzt`y>mDr0roiYvK{xl^r};%2a~K&Z4n&9gbQ7m$dK594_A%Y>|!<8atW zOUtIPun+*deUiaJzsus<4CjHu!A4-@g&7z1b1Ur5&mv^A?B4Y2f7t8$h7%_{n6%E& z-)X~a@edM(NmeK>H3~ztmOJi{!$+_E{u>DgN407E>5-oTUO;lX7m)n<4^muS1`;%% zsHLZ^g<+>a<=z`W(ey(Q)96_oM~IcR+J!|00oR@5{zmXx4&chz?0?<{`|8kwgJgXa z*^z1-sUi&n{qMg1b1h#paaUXu7__@_&2)g2>??1omDhuVkG#S~pS+r*zpBG6jp16B z=&v26_0KQkW(22ul@(10YIhM!ZV1dSVP71#!1?m`quh7h z#{K{NuO9>8hELqVqh5SLVOIWz`3jo)ThM0Z`9hNh<|_bT+JkGRjc9`kcT6ucVJe`P zBzrhX)$$_Xiikw-T;>KIL>4vFvy z13%U6xI|g-J1#ZQF&kC^N`%w(HNVtN+oT%l@KjZTz}ONo)B@ zpT(ft-_H|{Q?z&2Ghv%S?R800>13CI=;({EpYCR;A&EDB*Fh8|L{o|>YLHFIEB?F# z2)^;@S@cKt3hbYv9Xq^jl3O)2Cc7|&hpAXM-i5&X*^t!QcvcoCH!c)5_&$Int=GPb zqR6;MVzz04CAW(!D{n%-GX~hgi@kloPL6gv&}-$WR!d7pTr;E8PrigZ_9xMG?zL6!Z2a!i}LEsX2*rEk7zL7KiZ-gaz5<kei>w+t1a}Gd4rak_F=>+o*f+1ieW%>PIH&GieZ4%zU}3n`ymDwo)Wz zGV2u#0MxN*gan-Xsczjbf}lPt3qzpQ0AQ@!Z`De*l#*sD0~6eQ(GEOPD8GJ7UMrg- zwjxBOp)M+88Zb`vF*(tI5r_^~6CJh8mV#6+-<8G4NDtxR6@ZMfQq~}4-CK({fOiHX z1Kf7)<-AtijMUJ}O}Br5@7{j>27MqO_w3ojQ{%sr>)%s}?fCByz1OTwRtESiOAtI3 zj=bjJ;Pd~D5R-;6WQk};Cl-r^+l$P6=1c#dayM(&!~C)e^2;iM%g->6gBvfri~UnR zh~k1X-iPd?7!e?7!hl7rc{ zNgn+3BWOru$~}aZL?8hTX2K~(%`mvZ&4@3zik3t)Bm!X+TyT=2UP;I^hNQc=KD)(GRR_`0E z3bov0miHxblSpc6CIEjp^d>ib@OD{P_@W+&iw`?dCg(O@2W<9U8I+)r{*9`{^xOOS;ikOG++tJTW>1HY7ATZC~Y zXXkv@f>*6wK5Id$H*bN@5|JkQe0~AM%f(<|Tfp-bW=z?90iPRD|Iipyt#gcrOtSrg z?WAWFfuth8w2T7}|A?I*xSF?Ldu8n#Z1{beYHR2@-VOrHwmNaN`c){Ikvm94#O^*# zm|$afauNC!89cn-{viEXTNn#BAx-zA%1mU_*esV8T?ilpyCi&?I{*0CpgjTQih!^- zQqtSCO=$Jwh^ZozbEkY38pVyssGt?8dN9BhzB0#bz($d`Uu0hY{M12R^80bqRkkM7R+Yv*bZ|Xx1Ay7hva&)In@0LvGc!>+Oh*M<0ne7^!!|QdY>2t*@gZGt(kW|Uvj*eeQTy|>=Xw;O)6P5@a; zH{E_cr-x4R`%_Kp%7zvkq!|1{!{gPh2tun5l&)BiT5Pi5sWC56GB-g){4gf{c4A^c z6`?!h{Qisk+ZoBbhP<2o^GuIhw|+}loJ)W%=u$tX=v~%-j^&N@C)XuxQzD?f_0wZm zLN)yGqq57b^VBL)l%NJYKon-*Ee`5%c!lREO3;u<6s2B)LZ&!f7$sMfu(~Qo!D>8M zP36CTmAlJ#_}W*0LeB2|=nH?MBPogcnl`{m!h8op^dhFy9Td1DAp|a4&F~2l;1?nq zg>Dj@@^52aJls2alT-= z*1Pw&L2496V;p&Tc|mS@0RR5)U!~>fA@WPg{%-lV|I6iSd8-G>D@?3Aa)#f}m%pp> zrW42MK3s(=WQ^9~DE{#K$LX?J>6ss6XldT(7PJ!PM0;@_`le3Qn`I$Eb|10?2?fga zajo5$r(_0K$ytz^Dst#h6_q!AlJ6XNnlFF)svu@R&`f@$yOo(&AHj3oEesrblOsR) zDgf7HWpZt%%uuZLDOJwfyG}AOI)_1%M2;v@oNf%-_%@0})PAy)-0eBOO)_x94Frz{ zCNzsPr{i8(AT@mp60oD>1}cE>-|{82vEh91*1P%dd%i(rN-X(hvTx|A6Tz653R{<|LoAUi6T#9R~MMN2_SX%~L5^x&YC*syq>{Na88jGAPgd}u#Y z?jd3|NldwiP-VpWuJ4_i;Q3#Fo2HXi4%H9S+C0LjM;=4^S~s0V@mw)81#_pd4++@1 zUg4Rv6pA-5&`=*wuC1K0o&}#q_e@p@1!Hhwc>x0hR_^{#raYgv!qDghRaI5%HqpOC zm;K8R0f;*lg$4@-TFL9X4HqLUS`HC2+DwdAcJ;FkSkY^Ym?E>#Ym71oIX{=0KQ`bP znj|zloXFe^mTfM6xBn&b^780BEzzY5=R~*$`-Frf8c=0sG3!Z2h3uJdCaXdJhL(i0 zBhTUl;UP{ulARgHGN+DBd zIcVZTw_nMPUdw@E4OD>X0C|Nu&*3=>Zf4KWMIJbtQgppox$-e!97t7&v zuQKf@KrxgB+Jh9~K(QVu7T05D{5kTO5PlHg=1 z?;-$FSBDVuuOoT2k*ta$7FYVnTJG~IB`X2h`u5O6KO-*A=(EyQRaN;w`IlXG8C#1= z{O|EDzt8#d_orNqBq4cA&L7|ZV}5BVuY2MshzKX8z|3m@2nErR6lfzEa?i_Q$TAa| zy!skeY$Iq@2Btb>aHrWm7lbRwxneJ!120oEXX8sH6(HkNeG9B0$P+XrMP#CX22+%I zU6?$DqL(0iz>e#96dv^bBcVv^c!))lKh8=lvsLg6I9%G54%>Dk(%4dE-6KA52vE{h6g^U$P3Do1p*~^NN_#=8$CfO1tcW$^RwyfZ2&xYmK+4G zH{g$~5}3S9j;It&+jit~NoEvZ_{!%1+0{d>i{|N%zPHIWUkuN>XHO-E4pp(UqJTq( zsyKAW4_Ka?o9C^Aukeuzw_-31@$}1GEQSTgr@wfcL~oct$eT{II9Ww@$0@9g;iaYs z^by-hjS6G1X^iYL8UFwFbM;*J$zA;RSI<*YT!OVNjK(NE?T6c#u9w}krj3!**#;p3 zRGY5=AVdSIl27{Tj&XReje7Tj0l?~XA58ZFsX@PwMP0?p;yAH0gOrY#xjG_)WkVXR zaU!qwWCO!EH=PRjhQa$;TYVkF)>9zC{FGlf0C^s{CRWZ0Z?G1OycChjVn{3ljwPSv zV0V5NU;pB#d_qQPY6{$tjU7ZgRAyMJCa6`t&q8lkjFpFIAhvfqt)h z5ro915j$Ulaqbi!-84h8M}ALn(-;s+PtQEo_8PwOjR(og%kzz8tJO+qs2sjk!S5Io zlX(4LH(R$aGTE|9YEjr(y~p|E-~OofOQg~}OXBCt-?Q@g=u|EeckxKo&-mcpbSw&p z*E^w-24`XL1Sh+P=uF$pijc*M%|?k)V&}FUz75W5wNiZfUc%oz!tJ-;;hU80Cp-DU zH-5~0KfDJ~lo^kk?zo<}yIW~(ZKbtU21m!nTBxpm)0e$7!<@~`$T9;jyvkIng_MXv z+Izz=g~tFeIor*^L<9p9R$hJmS+2U`Mjze)f+KwdS_zcj1FZ!{b2`f_3oNZHkda-? zwvvkf$KIL8w^d#H{wrCQCwU&_AwHhtA$B}vCU(P6Xqib%TY5%+y+5{eB-u_#!tna}yevLM z+TQ2vv(G+T`>eIs`u!H`xy4ieU1Z@dKfVps2MLV}BGZ4G?#OSV?AXWPbRT#AL(sLQ z*|emNm{0|;ARy303>g$_t`zsb$a?_ZhJh`@L_$%p-2ce)bd4AO9#^J5h3b zEOQ`4_TBhZwQL?-!QsWhAHq zqL+jusr;i^wJx0|XE+f++p!L>`WgRT_dO`!^83Hx9)BD(RvjUK-C7>L>0W;D^n;A_ zbb4Lm)wg~{QeG?_wQms^6iN1)K)Q5I#Aw6F)u!Oc3L+x^biyg#23d$nHl%vfVPU5sBwZKed(WwAz(g+xx>Q@dw3zhP3wB^z23PYT+i8L zGV;xzIWtfQo8Kd$_g@R zJlx8ZHig4~>%w-ami`GV+h6^V@Z=yq_@D+ha&E}=#XV<&Ko_MnJJ!FKdX@w~!QC=8vX-vj%;I212!EQEs4m?cODKc})a80gFH zf4z(XZ_hz_c{vpo75KsuSd;At4_*zqhlk3U$|z=$;-91bcg_jB1bU!tk9fnVNt zAJ=WWdfDW5AQ+3j`-`u8C6;uF>l{x{lIM39=0F*d!UKPLL>{9M?e`cOSPIInGWL0e zB!yo-7}`J*R;@A-^06q-9=CJ5VarvjRM&JRhZ!0&(cIjO(P$tlN{jBK1*6fxm#@Bv zjCGs2_RjxB-O*}Z+q0AL5d)!CKyTovx(J+W@4DbPuFTA&rg1j_N1LAKxmW+2?95_n z9@*_hr|4-IxG74DJSa++mvb54iWmP%bW%22t(FI+Zdzw&`0AxMP-U=ka5@vcGJz94 z`-omx;98rC528Z|8xWx@+7tn_9-2H(LQyc&2*9q(Fi@gK8I#Brmo5b&diFZ0uo(OE zFVU|sljiJPalXFT}O$&GY)Ig|lpWE8e$I8-id<=73afQG>l&reYE58K@@5bi*O!oYrd-(B>@29YE1@Sr8 z08shtPFgF6=@`16fc9!YFfw_1AqIEf$ly=|iK|QasQQm=Tw5THlM~C8Gj&qOOMkiF zso;vxrv3XXv>qhw)^N5%mWo6|!9Kta0RLEU;D9?~0 z0Hc0_QL~xjmMnC-F8srznK29!6rUkq_~+leoCoW=U`)#>8@&dX;bp(Wv1c4>HZ zcLTS5_bR&k`ssfDdD4>-0k`q+)5`n#?y6Kw5ot_2PI7QMlLPurF8TFNRvNpA-STDb z%=e|gzL{V3{h7?LNdEax!J?6znaBJ{Ftf8$bhLI--!{#(JrQPnAv_3sl#TtyZvOh# z0eI`L0t*oawmH#9l~zk!WIXf7o0!R7h0Y2SqgL+y&&PS}Pmkf4@h3Stkr-_tdc6+g zWGB&aVT=robJ^9u0{B=1;nR@BytPalC+Y2I#?Q}>OU@oHb*Rra95bzvF4^5<_+ux_pV_lBx!KD_6DL_w)0$j`#@x^`ZD^9kPj%K_GY zCyBRSc@3Y4IaaNYBH)X5y1T0gzI2>WZ5SPfeq@Unh>KmzpC0(rS&e68q@d4rWmw+) z`yUha51|BVB4c>e!fVptoa?sDw?-`EDX{ zp%cwMxQU=h68E?FSXGrAYa3Ys+;F;gR6;c$n zu)zK|9%T}LMk1Ccd;pRCcsb933!9)+dLQp;BrInfD8f?+>+d3b)=pTU52+&-dQ0Xh zXjPCLswP5d#c-?(Nc_0R00_hL@J?SY*mwf~+qU0(M(2GJafKFI#@f6*L$0;vTtt9m zb#l3PW}M{0OO~{^xOD{z9L~wG-1Qr(swr5vmOtEdFXnj%K|Nt4ZOx+g`M1$I^PS9C z7KrdmL}iJ?Y5_mM-%^U10sKkeByTJMCQIwo40+`5Pz8v!VR1<5a^mSd05`7T>K|?d zQpjI_C50Q-(o%Pn1b-hnjIp=ZJwB%z=MQ%8Bs*|5Pb!|H{^SC6ZQ^&YD!GNQo_ARv z8%kMjKBfqb7dTmxB)Vn=Msl&i4bau4!)P>7QBfg#MOFS`9Pg?nHKc_0V|sq{;=><% z?{yv+yMi@qPjlpX`F|}c*&cP^{mVOF{>;j$tFqZw-GFK`hSaPqiq@?I2ej0SMPk>U zy^I?Ai3v+4Km1Dkk|xO7EZ9pbD<`Pk-+&?{o}+aiaCg0u3nMMeOj+oPU*H#y@1X8z zHT4}$4A`bX4MQ zAc~4g_{t4iWgurjNj7brwP1%pzfO);{g#oTaSnbcsM0oWxzUY9_>{-f0T_)2B9+t3 z&#Rf9o?>ilnz6BIe)hAUpmXw&S5{Uqy*iG|a_t=Ki{OxNDScx-45n`)xO)%b^ze^= z?dH+f_j2>q7gAih1{Cnvj~}FGsGEnL-EqqPxPC+087uJtA+o~I-_uQwlO^J8@2_yJ zd*NKdyn#X}C!Tw2AJ@KDm4m|dYk5=J2|8~jM6cJ8kK>f*|LvaN5NQ>={t#b}a zRvI|GGh&CQZNbMs3RPe{IhpSG<1>+?O$X^Wc5rfHo;{8K;AoS;Qv^l&GGm(OqK&t6 zQ@I$I8@7K}W-WRB5AQH)_RcpjG~vr}gC75)N*tphbc{qX)f!ArK^AQd?Os@j(*deI z!vb~a$o{ejyPF-4WbDK=sZABk4@Qw12oVbs5q|!3w7t!EVkQ%b8E16g_TwM8zn>7_ z72zqwPMfh$w=q6rC&-~8&_9KhrSp`h7opedNXrAIvXUf?j)mF(p>HqL?1ditCSt>3 zuy-}9S0rJN2_iAhm$=YuK+FNDtZZ2jtf!~-RK`I}SRAbl9Yn9rCZ%u#`UxxB3o^N2 zRVGTMThVWCZ0D6T8UeTG!gaoF95z2mLRt)4171Mjw=sCQcx%k9O(5r3=56Cb+D0SZ7GfS?&0by zz7GmmUFu|x`n2C~xWjMkb0ZLzjmke72W||(*|rCGJ?r__P8`=RZEt2u_`(K*)bx)` zup%go+E@+EH5C+G{!Lza}TVDDVM9FvMPXf#f@dO2+k>j(_Pz2kVG0l^#EhRH`4Hs`* zO>W+Lw^Fu9N}RiA_fEWlDlli+W8OJ%i90*>xS95ohv^<4XIQ_IwCr%A)dR$Zy0cS9 zhsF^Y=6^~+H3)+uFwCEvYgfujbd;e1DS3jXs#YY;3LLM!!*oU#GtsLU(k2qt-^o~z zim^a<0t8n`QS7vtm?`0kjGZh|wS@%(P<8}a) z5#^$P;o##h`sX(c6Fw3JDNtU%MppXI7K|)O5|s^|UY-N}gq4x{E{wWywr;noQTHs$S@v?#7Qs5^zDzg^NG5WE<a+8xKo~dmoCM=HrzA-l3^|+w+c7l@?aT~bMH;gIM zalVm|&Z~bYWx95B8ygvHxT~>*BW(BUeW?@LU%8NhG z*MC~|cH1mA^N7oyUiSRB%oWfH*L~+sn(Jy%08c&tJoBT|#Drz>)QjJyu|Oy%{&|^D zS0{2au+&@NG7REIr@V~<04AAN&Jr9Mha)u(1rVQ-MqW{=SO4FB`5D5MzEo8m=EKTe zgoh-{21H)oD)RF3}B|PKgrP=2pp#W#C|&4c5<{T4D)O>8@Jqu z0tKr|)}8bC<`$J;v)TFApB^DJH-zS{HZ+l8Jn+CT0rxJIzke|K`RiG=Dhs7j#Ku-u zR><{QeFHvu8`0?|IpkYP(}b1O&i9DUSjD;4rqoe4bosdJ4+|Tvg=8sF{7qN%(JTx?PR_*8INi;X>ZsgPAsYrN|8c6? zku|GrU-h~yPrd{`evvXml1uDnqgQrofY#m*AqfWQ!ZsO3)T$Ub=&lc$y_B-jFDwf( zJ(ZM|UBpM#4X6U+1Ytl&Ev=okWM?FDpth2V3iob$a7YGO$tgHyrnv44<^1rDpR;4f zv-rd$kyBJGkN?u=;{AL;gjp>I?)Dq#V_`NK^MZx|Mya!1%GgL90l?6N8r|p&C=~dI z#}cI;pun$zoPvBFfAKeRa=Fc$%boY;?S%kvI4VRL9i!G^5{jZoU=}h3^U^@wK4$AJ zj0O2n*d9oI=r|$9d8~d`iv4n#*Y~h8D2w(PvH4ICxC&P)kBC5DMq^Ecp0s2386_;p zhcVw({8!~czG)w)tgM{gUZIFcl7uQs&?+hdk^Ae~6!BzPI~5ptL^tb|<3K-QW&8FG za(I|a?%a2`^WHyxKHPTKtvvLn9j86!qFa7QSy}lK<6w2rD23?>gaoMh($}w{yQY=a zHa*AQH4+n<#Zwh6WF)Pm#_o?JM;IjIi5W2KK$(z%4;lERUFdbKF~dj1`dPSmg+$v4 z2$LqzRfKT7riRqT%tU}+PA1G5sU7+%QDOB&M~xE<1S&nqabf@fAOJ~3K~#j%<7q_v z?UipWF(R(M^7|-IP*A$zjMraq&gW$?Nawo#d5Wje=!r*o?U83lFU>*szJUvTh6#=f z#M+|c%`hE@a+5Hc3=j#bbqZ92YU&M>5Yb4Gp$N}BfUdj;Zd%iG2PU5?{3vmQnT!pg zIDqZ{`OI1C55Ko=J4G|oyk-Y}4-&kaPA`^oX9JL?gTR-@vSO5O- zRHIDD;p0pUYM&cnb@AoouUX^uoX%+em`CtY$Dd+c{{8f~|6l7>E^A%kq&rYJ|8bYk z*MBDUaEjyIu;jr-JM)?(ZwhfP`YjvyLRnjpm&N7D|fMX?;etq zGf=C=BLC$tU(QuGTqGM1m6a7_CkjxsUaw=u(#dVLpfrXwSJ60OrM_Vw&otEG`15Pr8kS6NYquO~;u572X2;E+c>cIT zkrrq7HJE)p9@Uw(55n*eNzS~n6`>S)^}nV5C<+uzCXA90>kFnp8JIk%I)r+K4t*== z`kg0)mw*v$0iytH`wB=&P;nT_*28aK$c0d?#8RVp0C3p z?#pF3KJxS*`0?F8@fy3ubHekxV2zWOWhetUI33M&#Q`Sjhq)j-60J(j<{OIG`MswJ zNRB7?;3)sq^$IDrXzD`eP!#4ljfxCvK;)|kPhDahEGJ=xgAjsKffc_mGefK^D`DZt zz9q-&^*Z!(MohuiV&Ym_Tf{Mru^ytM#)*jI%o_18EW})24@Gg9wFbs&TsB3N`ToZv} zQo((1)T0PbK{+@FQ5TR_l0}kzfbiZETpTb-PWBi&osO8WII;`M0hpMWroFw38*kh$ zJa@^-%#NFR^pB5`vw9_kg@sgBRxqaupt`k#w6zzITUf$BpZ+WQzHY9&_WNGzTU~XP z*Kb2??nIyBd4Bx!cO|?#*YnTUe}47C!{At?FP<-dE@f3f3=Pigw`Y6)@c0n--2Z!O zhkAJ4U?9EQfX3lqUGF6GN)?*OI7k(7u8ApWJo)t7bQ?mMF?>L1>Q}IvEl3e3IG5+| zlANq!0{tR+^6$^{^Pj#%V@)*&_WlF=WB^@z_fS=J7=U%_*302b$;pz4$-cxRe97Vt zUz#0znTLM%bAm%Mh)c*LEvraQNOrpZty)vcsu!J$zH>a|Q_@KES79F+VMS0VN8hQT zZ9(j0yObAz$VfM@d1=8q-hZx=pt3Oj<3F}@;DAtIuD84n{>T7o{bVL>$D6TD*}3ES zIvf+>NMTtN9es_QhE9&|YM^g^7{_(z{`+!;BDpdddwLkaz1wys?SXgLfa_d8;!!3( zgOsGkpLkY8^>KXP4zTOU%LFhI9au>Jth+s3zc2*K){E~CPe~9mhblXf#E^OKR7~T$eMpjo zUN5;j=;C_!81FOr{diI?fpBIIi=LCGd@skJo(3zW$rAPa zY&-y;lrM-s#^o^<5X~6S+OiL2n1sD&AF&x>M2?;yCRR$e3h$)XE$!40p}) z@MGTu@G>GYQrD21w{H3HJBJ&eb1v_f#>0ZOC^j&Iro*j#w6m7Zs{1){GLzv)4l!$W zAhDgdEKhsk4mxM*h=~a&#V?H3v|Rj)itsNIbvA=R{O|P4TC@v592TvC0je25TrGa47-mH!K zUtlv-CAYBFaFp2jQOYk8F50ApemT5Ik|d^_A%JCN%=+Dm-FS%udMRg8S^~oeEBmi7ZtDOA1}NQNWjv4nvX00_Fch-RKQwp zy7Fs$oa7y@rTv81ffWE+2kqT6obB@$T=C^z>XprCXe1*Pi%Xgqot97^`R^)IjR zC9PH~dmmi6BV6H2#}0N=)%pg>(d!{_n69>+bhYi|z1KxJ$fhmZ0KvX=CjC{QK(E(f zA2y;>j4?Z5Mlr8pUa8``@7zgC-BAX5x^bv{2oKlr+;h*ed2=~YQW#OmVK^M1R{Ieg z97SE-VQ#tQ+r0b6dnAPo@Qoaa=7kBSrUDp}zR1E@4}Ho6^qE$6{(2|hwa!tkZ)c5@ zA*k3Rp0n|Y@JM*ZcrMrfygZ2>(^5WqfQ%K1UbE)o#=}zvbw~NvBfBUpI!IyBWAfjn zM9>YCL*O=&lO;ZC+eM;}2`OoUerJqy*?RcNP42d&Bw)9o2C)qpsG3U$OyK7>4m{<5 zKN?12)HwKn&a@5u^nf0Kyu3UPRyP2`NOIk`d8|b!$qx6<@O}6F(y3%V=hXg`NRq@W zZ$5z}NnW@Emt#rS{>(v;$** z7RH!T^ara^gr^WWxr>;vcqBhRY6tcce8CV=!3mg*F|-fH60lzwA1(vJMeBMhKy`># z#1Ca`Ngy&Zir`=kYNxXAX&{^mZ{TSh1VyT3ptvMSbf2&>cRYX)rl_|jV;R#EKfyvAto>D zESP-b#5uD-w4d1Z4NqM*tmu=7z3VM{{ezg*>2NW66>JVa?KwJ~jz{koVOX`!wWhB5 zICc6OFC#+bufY@$jVTz~JUtOc;fYvjx1(G$<>iT(qlFpMJo=An*!$66F#leID&QtB zQU-_9U{Lu-pV9l})kmHtqcoT5rw_6ArVV`f#M^}WMABW|g3+vF*6P5o$;7CopHNCr z0sS-*%T+Qk*}@>lkHrvC7{*%}St#~)03ku%zL0!mh~Wg0JHSthK&92n1_U@Ueoilh zDlQIleLa?<1!lBIygc_VubYiX>hrmLk9`ok98qY{m!is z`8yLHdDrjk=9|CE-FM$9&-wk86%?0=%;83(k%H_(s#-+enk#P=b0dHG>Erc$uD$s` zmU(`nOoH zYWd*cK|)g^g==5`EYs7|`1xs=o}T8xdmbVtERL<)u0jDetjPELs09T?gxQ!hJ3!%}rg1l8Qx;||!t)g!RYJ+8tH>|eu43j{*(t&ogk?3Hd*x1d7 zP-v6s93Emk^agYz{fubz=*H}r4z8BH5K{PY6w#AJ1t-uy0c~%J-QvYw2$vB7!hm?` zFZUC_s*I*16+}fwao+>KmHTumFtYyG7_GCyi|A=sy!5!6S>}KKxPt@7y^XxZlCydx zhOQ?0yL;ofmI1@ll>kw?Tmu&f+C5L+gcSeoJoNdhvTJ-2^yz)rmcL^^RxpNsk~b(1)gvx-rxZ)41Eg zfTf=xzd>d!3&e62DhBW+fmn*YcK1DT2Y$qpkof_zieP>i8p=ht-biI-1^*ZbMW^pz zRu_O`t{P>ygkr7(bxNe$h$t+SjR}_#VKW%Kj0l^-0GGoI{p^_NCoe?HkvD58(lt_; zna{P`Z{fZ7?<6)Mnd7|!j067GHddwv;u{)7LroRKeR>qZQT*-c9XwSbsJ&g_2#EpmDAiTF*P+UX9Ay}2VZAoYDGl_TCEn7$;kcp{}M@( zNXkj)<#*mEAtj9i|9G5K?FJF<l0_!enUftM{EB+`q}yN(y~gt zg%L4I3UH-%J74~6%f;)~W1AD<5ueNToj*qxKuMugPg8Zzosyf(XyhQNZcX zFDP9{!5Tpy+gN)T7L-)J_fN)k{fv%Id4Z=r!!LOU_tx*Y$IYOK5nfkJQo<2IgjZzQ1ED`r0XDtY`2)#odC~SYdZz_b*TT4t0Nw|O1K&U`!RZo- z0h7%52*cG7>JKJ?e>m7Vii!xaTj^N9Hh0o1R(5~QEByJ%TL8$(N}|u;?;N8MeEh=c zuL~u2;R=57x7(--OLPLREu->#ubEDo%a8=lu6#!#dO7qldT@ zD}_SDPhI;R0fyan12`<=+5P>mEIMb{Yg|kw12N&joSbrS<(1cCG!9`h8CVym!DOn1 zK$s0tlNgnTe}u%z5s{r*-%*WXSa>0VBGn|@4l~^zNbH7rf-)@hb%)YExB?Et7uSDP z&NdCubff~mDLooz#(7ULa!u1gj8j6f+j{v8{O*B2A_eF1(ua#^Czp{HWft1G2CuO` zl`N(+-QVb89Q3+92dXt+BydeXT1u%Ij zt!eQ^gUnVP;aj(SgT5I-As+W+9&zL`87{C}li?#wrEX!a=OfHT8*#k*zSD@Jf~=k?i&J!7(1sn~&_| zn^~(kG8f9by;@Wy8`u;ie)}8dor&XC1`>;rvQ6cH_$|4>|MT-uS-A&=0`~2zkmtP% zsJt*YLsg5&o}61;B0pCg5Iw(A5U6}g`h*K}V4E9}F&ZEYhoW`s&%S*G17BguYR*<4 zIbZ&K%fiFpP>7l3G9J&DKcBKo9DEMfb0@$O3Wr$O>#7cmANg6d=Teru<;>5|FBaDm z-UnzrT19tT1ASdRd|0`Qg?T^f>zifpbZ%}QWd&}q=A{>3hfb&Cy*;my91VftR@&Nj z(%H6?cXztNmu{5%s*Q|AXY!`sJd^(B78cW4*GyY;HJYR(R$X!t?MJH^b^=5f7N$`s zf;n)Yf)y(y{^LKkqfm%z4hUsfww?p3P*Bt|2KuQBF zf}tom$!$0ork%=Zsv29onUD0IQQB@X&5Hi#<>j$4GfyyW4ZE{3C&UJEUX zG#ZISbr(a*Ky2n=HbzJAm5dzzexRAE%4QZ)vz&8I%)PdgU!XN9lnCPyqSQJJl15y# zI1t9{*lGoC!#2Bg+j4ADBS6Sm#ZJ!>w0Gab=(rArLgmG5B1sZWo!y+t`lj-al09!{ zGCy1)HBEgz7apD$0;Rk^}@q{HcGC|TQ&%OPQJ2?2*k0^mjRKc4JORg!k1PR(%E^4X|s{hfiaBHSJHcO3hXu_8Q{o~DKwL_ zz&I(HVkh+EE*)cmK4i3Hp|r;m9ODl$5}l@Ae*fx!LXgNy!3hNO4iJ|ez=Kaz6G$2$ z>PuE_I`tqprB88Y3^l)ceisS_9O#>;qCzB!^GUss%L047jRR{VsFoTB%7|1(14}TP z2IO-AeCBIl;f%U)#^OqBr-(?we*6R3%W+eIpgJo0(zPC8i(?+#~br+&yz{Yk5AM5t4@Fgn%)t!Baj|7A!D092+7 zl==ilo0EwMP2qS|Co`4>{E27G5|0XZ&I1>7k;{7!iaW0U<7iD?5*aBrD(oZPp=9c@ zdCUypJ2pt*i9rH^Ty+bnTk^37D5)PR!7(z#v6%>F>g!SZi4Y(W?jv_6-JIbUYK z^d-4XSICmNzMcrQ#DrOiiq7SLZ-D%KmEj_MDNVYTl=(f(OextK*y3a_(g9-AVQ9$6 zu3bC%$xr@^ygWC(smoIr9IV0D*Oy=Z@|Q@GB!}{D+qRwN-~5rFm`E4*Dcun;mlY@4P259+m|T&ewld^$4rHuDXh% zwd+39>lYTU=H=Jw@C(lte920+lZoc+o_}y;v`o+D2`X%85)mP zvwzPE*e3%Rt#4WuJZ;pE^WVR6hc6{Zub0D@^dpCP*U7#V=oiU}mJ#C87lZT8tbf}-dlVEf*4yL7=Hdd7PESu$R(1(nwv@?ukIKpl^m-jhnIgel zX~-lbM937bjrtx+1`iM!8Od!w{cltYDh8&yNer0-jt~{8#dp|7S2*;CuYte}bQ6GG z2Z6Bds>-FILV%P6RbKjrJAPg_47%gu`^(3(_-|`Qf?CzG{6Am6gLDjV^6}+4+U{%U0}U3q?m28pgJ=aU2$5IQ-}bYNky< ztovM724t7Kvf~NDqE=!J_UG_h&*Ed9V$jq=OmG1GL=YJnM`Yv*qN3c%zPk4vB_dc$ za#|iHQzryKbXXE&zM)tHR?$6T1XUV7I}b6Qn9j<&VP^AA(B-GZZzdR{$wW-p3Y6td zD1yWecj`J3!#!gX2E)m&8G<5w3ACyhp`Dw5D%>|EtHg7=?dv~wmOtKzSS*zdogB5< z$nc#&1KhJ^9Sfs+Ko~g783#s7B%=$$i=YTkL8%eSoVw_CueOz=CNSBTRfx_cYwvQ# z0l+PnZNxEmh@x*6QCxcKqWR&`z@qtfCelAUx#%yS{QXhv^gy^iL0}?U>sv9~tJv2W z$YNeHyV;0upcaQi;DUPJi6O|(j@=SR->?Q1MZ!Q}fN=5{Vz*al5uCYkuvm*RMV0_}A7P0S7$!`d%1;V>1!V>c+XoYNe~LhUx?X zMplL;Gd~fEr6+~Su^tklqv`Nbb*S-t|J_$_&i_#sn*Nf_zpgo>-+de2`_^}fn#AF``ifiwZ}xJ=`(I$h={Ee-^7TPXYd(4Z^Gnu}Um~y%jYkiG!)ICW^vS>Wlbf4I+PV@Bb~d5cTlr{elzwFbX^u(q z)oS6D0HmC0elXHRx-FRT$q9D7{4|$ef72QDPu`*NxIY*6fkN^5-g8f3ot@-FjQ}}Y zEEZ~OYZx5tVe{s46bfVy#8Xf0AUIfq**t|_uj6{lfM8%sNWkE;3SXs_Ju%lo`~dc@ zP8`Y}RQ|E#8Yc)I?_k!Ni+Zk|8}Hffj1e!Vva*65yF_fb!dgMHR*w{~lMM*H2l!Z} z)uQV&%2-h=A;1E|}EN=aaxXe=Dz=y1bMYRY0^Cpj471UTQi_+Xt^P z5gJ9{<(IQHDp{r-^)#jcRu8u$#acOTUmztW0Kd{w4Bbvz+HfB>tu3Iw*OLO)eO=3x z2BYN|fBUDKKmMdH9hHBI^JTS^dh}zT@7Nf&a5Jg^p-eX&ZY5Z)`q=ru>~+rc_vsWb z<$7Bovwj20t(n|K$M8`*nP4QyNO;2_nNUrrPg$tmzS? zl?Kz=Gs*N+6ft4RfCF8Jh8U$VxPl^my*^VTT_Dg=W=!)0Ba(@=4ICjT(wCcmdL=;- zzRZlyQ?hC!6C-iJYFPmRu+1&@{6Jc1DUnC2xy)C122STWP=u!d2;)GLkNQ)_9Jq`F z`MYPrHjM!a0{He#58?g%&v1Qo%E#r8ND2y}e|9+!!>9NDc=eH|0mvxLA<7ZPv3*C0 zJvPkL^c;8siOnOR@BxR7AoB`h`N9(KfrUZ*h-Zvu{D>!(tIlG?mx_zI==iZ10;9#V zPylg~hUnrpR%HcXSg2&(`a8JntJk0MJ{ynJkiVvs;!=SvEB3&c-S*R8)6&_9B0Qd% zVP6#CDfpz7;TZ2BwQvnd_5m`xcjF&9%3YbwVlypIY#!-!I;N+m*}wlVCex5to|uY? z3OT%J#fmtLMkCF7F|X6sTp+(^o_O+qb7|=X8HNJ@03ZNKL_t)o==D0eP1nYSrKJ;M zTpMnmgZ^>~$;*?@sr}|=od*-yzmI-)zJ6)F3WXEe;7~YOBo=*gzWy_-M^LM}l=jc^ z`bF#3V>dqoxRnpr=d$OWqJ41hdbvCddc6*xn5567|M{gGPykBiY3rz^zHg9|3ntnf z8jd&Zfu=o6GFz*(S_ZVmNb^A`28L&vqZVURCoN4ci14Kgw}Ar+ zO4pxr{}*Ov(au^q(bC4|?c3??KhD@mBh&L{R_JsxC%*8^bP*M$<*vK#kjK-7f6y;1 zFddk|H7i>=&^u3m*(LPUSI{515nJ~ja)U$YnVx3M5rclhinLlJs!C3l`1_w;rdHoT z@#b=LCaA2_xv>U5dOW4y9)*;1AN2=9FpP8|Wo9BtgY;XbNDfs~CIta`R2?-SNfK2J z;(VR57gc-|n=;*QbCpqtX>K0o#P}yCi|{O$Jp9}i`Fn^qkjw->E_Q~O9qtlyN#!4d zxvmMH=*xk5mJ>yI0>SCQGWBC`uL_GH6qQ*4scL4-Lx9$OymNA&?)k~$WOiA#K8K2m zVc^vB-zBb)0@u~fcz(OaZJ9(@H*ST*D7g1d5i(}?3no4+gmL*Y-knedL=&5^3XRVw zk&#+DJKa3CO$HO-%b+O~$CMJ4dIGz_4@uj~Kvy>TxjhW@v|_V{aq;aE?;VCIdlSW1 zXA+~G;6P&o-F^*3Yr_~}6bR$eHS3w~4P?$XOq_>C4fkkA%UX@y@ob3W!>g)Xycy-c;eczLl16_;N}fO5GGkW)qfp z4it0kI0BZkDV>X`{G*xO^8ku)t!x|wj8_w=6b8<(?))!M!0M8X&gU=Y;lG~T!L_$+ zKdbe{C5z|XVmUn0=jCBgIR8DD_4nA}BdlJ(mRJ7t3}5;FP5k~_zrZr@V5a{hQMs|a z{=1LJj!xrf{{TULO4)`skF_ovmUNOgh~pCGoH-=U)qCJ6%VkZzA$tNtkcJG0@F1m@ zma?zCgY6G)XW&FP7q8ex!J4%)?q%`)H&oZ~+q-_mHMeYMMSc!-O~NJX2~J)U*M~YV zg|yNuNwN=+v`|k{+yGLX2rtUIWFto75Xs4sm-j%DB>wP+N6=`3@%0t!y(`~HZcz!x z`-FjT)opj8 z$6Dq7c+I=BXkT6j73X&T`TEbVUWLP*<4r75%Y2@%|4i!h3$kcxc7E1)|s}CtoXXb1^g5tNuR9$%{2#T>!@Q=8OT6i9bJ=p27CnGLZ#J07})0gU~0%K zoAq*;ty>&3n0xBEYs;mK4~%iyx38nJvVs*+>xqsFX8-;Q!M=2OdG;k&{~BtJfOF~2 zFI{tr{)2YfiX||F4_nC+yk*~D0%j!{ED85tQ24H@NKcuA7D z@y6{mH#c+Oz+o(wX(A)FY)XnmuYZH}2>|cVmKwrfV-s4blw(m}(Qp`I#kxa=xkdZQ9sz$mJXX;fBJuqiW7j;}2Ncf!EYDX*{{m#6|_PzA)Yd2!n8rYPXhrV8i&6$|aWzf1paE$gs3@t*DjxyHc<8OiRIc#Gl zNDYKmJ5?1e@-@dMblmrI!CQXiWp`4%;euu6pSQRS;DS@k&j@Xze4MwOety6D$kS}S z^Ctds`?ql@1e?)v;Vtc5YWD12g*8}>-B0Wq5BB;Br8zuz$?*Ut(-6to$wWoP5fybA zBf4RTgav~yW9mL4)Cr7C4YLptKfBrL<#6^<7`4TD{Iyu<4iHgeiX}6}}Xz3wP zG3;byf|N`FLUkDqj*$?8q9^5YY(@~BhXNTk2<3CRaG)mh3*7wEV_dradSa8q*zmP^ zs-`rIPfgR@+)R3ib_pO^X?h*STnF~VPsd;Y2w16NMgQAqH(8kK-U+d8+=iSz8Ie6X zGj$EVjzEsQTFr{=bc#1@JmdB8T*M)td1mWxLsb=^;KL_&are^?^2#00@UQeYm~1if z`tJngZ5$VK+%f>|1Nak9SAVDsOjh{o89xo+BbnO(@N?o=&Q@IB1Ah`Y$r}K~W`yFG z(Z$T@JnMd`&#b$zhmG{{nC_hlzK_wr$(_!yo>PRvSrqdAYncDirR} zqKF6$xzZM1dRwp;U3uv>fP=I(uKp}~ZXVCCc*90OLBqQ{<+0J}bTTMCY z`z@gmSB`sSy3NTd=8YHjGGXs0Fxo_5xD~x#C$lewIFrY9Sj?tgPU&)CnqvCmEEoI5d%hW2}d(XyT*kXukO4-_zRA zPRUhYqNu2Z$jB&$-+YftQscS&hhO7F)lrg*FP1s>B}qb(Bob@Y=yZ#~#t!j(RsPZ7 z?}N=?;NY}_XP;@yxRXq#9=FR0ulElWf1^<`5H;-!Ty88Y< zLKB0;BnFAWT)=>tY(|4e$kYr?;y6Q-G) zg>@SfX+GVv*j@knweq|j9yW93B^R??BsAC7f(K65EgCKTjlH-+rr}H|-#%E%O6j#eSId|*JlDye^o61{p{aBfW!R?j3XJ$MV1BRg%G_ECR9OzUI<1-WpA|%%QB6X zj=>Yu|LLgzJG&x+2xTO8PXtT7OFogzbt0KNwQ4^kbEk0I75=ay0MD6!LPVv%><^Ff z9=EMgVwavFRH7g>BaASOoGx<=GnRS66hnk*d{#e`LL>Yh1_`U|^m@ekxuL9#=Gt0LpJ=1|#2JEn zRm5K(OJChEJ9VEYRxM@L%UtBc6^vmKa~?2=Tr&s^VzWq?q#g~Q2KocqBUMJ@np=Tu z^#jOC-h=Uri||bJ;EXE7E*ZoXV?~;AA?u{xJVr~R)@sK3DL`C{64Mnt^2Du#?Uj=x z-;Sll#sl~LAClIJNzR^Zp2IWI>j%4+%j=N}ms61w3xa^&OBJv-yeWA_^&bg1&4qrmi|JVB1`QyJn%D}fsu4ZAJum8B}LEL#2<>UYTb!iIP+P$FA zDDZgPG&gsC=BR zyU8sop}D4p4dvzhu;gxXKUa#p2i_SKm4F$Ojo1V!Q7Mz$dFNfc@x}p6CIe4D{S<;A z;u3rwh$o+Xif?}NYgAWPv2BeULDz)AVL-ZN3sdei+JYVQ$hP81OXRX&in~$UlI3Kp z*Dz-3Vb*G=;`-}J2~~;x_4Yd@#emB+M!8zc?%hxMjjHQnQh4^A1ER8Imja=L$iwIy zpCP?y3mZ0WWCL*DufB^+r{idso?CDFB14T`eEny8_|j)eFd7WF<|h5F=d(Q!GlCAO z0_s%~663=#P0oX7VHtDLr*gIAq|f6Ht7FpPreS1|rNppG67V1bmjyxK%YQh|q&fwQ zEtL48e8O6X7;`iM@W>ONBW$mnzMgbIq-Q-++l;=h3V^@<~Nqg{e7Cc6)bcvqLcU4-yw4V{Nj8g^*e9ysUwmQ`4LpPQw@+ zi&oLimb6}6g?(tA= zRLe0Wq!TgyD%sjF4tOMVN8Cc+@DQh*sf4tPbdo+V#C*{5KKd{Wvfxj{{Bfa zN^^MQu>(Byg}*Z6SRgGj6Jvia)5`aldAO4>We^dR;G6~(iKxI&Y3g9eue`6@;>LlA z(W7O^EIY6*gFP?GN+EYkWhL)HW#y+Rs1WC6bi9URO${_NLQ8BRxDruBr7|(mOHgPk zN2UvLpYGx+YIw#pK%OAxRY@-`6|n(;DqXzdy%H6`n?Cq z3j?f8$;RR6gn2QKhsRS1EP|8ozWZ*XqeTzr!Gl!<1ue1|`J}#c7HMz{)zycHNWG33 z(;+rGBau$37_pkkxVT{1`{aYJzrHEq+n@^c;(AuO&c~p?EWO7ev3~Z&WuC1MaQ%jw zn#CS`Qtdxq|B>rui@T$eRgUNDKd$=15|O#6rMVM{90x)enf*?IY-w15YgOYeS(jyQQD$poY0uZcAz-1aD zxTyF;8wRs!c?^%c{DwhMQUrx-#W0Ve{A@~=WKe#4-ySw*XAwI+%z`Tvv&lraLGRD~ zpwsE-9q9J6FZmKw{pO)Z$Sx5x|HkRmR9B1PODSt~jGC>aL@Nl>C@>gXnRVKUnu$S{ zmw|L-l<7Eeq0HY{N#`45{Ql5G^uFIuMDDBD!xVHqA4`)#ROZVobGhQ?o3MM?eg5>& zZamR8<~&wP^S9#hz|&7Z1%O5qgHowRuh(cgWe$$F_WNS9n)tB_0p_^uHcPYjsjlQQ^<*Ycv{gJ8Zb^ z3YN;S+02jbc_84sPrf86VDIb47#N;}C@Dti5Dz{2CsHCr zKzfowg-oHwAQA8HmW>6}chxb!!VYCzR1ES37xL**f`Ll}HJyFHgxmi=K9(fkB0hY2 z7MU)Tk+CRd=DtNvzDQLWH|C&eRKiSQG@P6TMC1Kue|?zI=>fKs-bPdXQ3^}9&{R{) zJ+D8;riLWeUM%N{d!NBmIE17z0sA&R&eOp}M=Y?Qanat@PnbrII&O~Gka?JeTPt16 zm|O_yAS6Rom4%F03+3xhqc>hhaIhM!R)fKyC&HtktTdCMGo75)zkw=dBcV>2$eFu} zFJac z6rNAYOblCN70j&r5{CL$xj1~1Crn|as$48g3=ls(&U$qS+R#xB8IO{lUqqu@OJ9Es z6KNL_G`f$N)pHg4e-8q&5Hpr}Y~xN*K_3^5kPz!F{(8G2f*ISlnDxXlW3eHLO69sp zH)F9u$RkD1$g5x40Bm6I8&#a?HuA&)+p29y2#w@(cYMcRZmc`X->P0^rZ|g*K0Bk1 zCT42qS-T~IsgZeH+E7L!izvCGcA3FrG>JRvk31n})a3~fyhcP(q6lPNiB`3L)`m1L zmIGl+6^cV_f4ucLctf+Z<5+z~C z97Uv1iq+vIYhVZmL)aM#NQ&kICI@pIbqq|CfD4!jHX;j-56JY4$1O7GEJ?@+D|-*_ zeqb8_)0HP;mJJo%mJQ$^&R@AoJiBY4=KRpDbnI2sK{N9C2W-B5G&h~_5SxnN{T>tw*!?* z$@jkZeX$!}FFrb6=A`{twaZGghqZT%7 z$XY><`4`uhh=yhM+OSWo{pagHdcDl!S%Qu}fBa;R9zY^yVg4lULwr+;{@f3_xp|CQ z&0KfeHU6FU?95_6o#@i=rIH*Cqh>3!<9&ohr7-FUB1aG~ozY_&nWlZJ4YOee>sTU! zB##Sj78SQjZlt^-m-5OyYO3^4BgR99EiH#x{nHx%&o`~C-IR4)0k2F#NR zv=JT}8tQ3i5Z%+hu%C*GO76PrOO%&y@+uexjK(^Iq)|Lts2ejeofVH=xQJtIj;~ZfTkpYHCb#)cnQv}|4;{d0_q-@B@rbl5RIx`df$vTl@);rF= zU8kikbKku7??^?-c=p``+_vp{()03p;f;eNWU81w)`>gFf{>Ew-%SmU%E7S&PzT~X z`|j6wVK5l{RJE^k>XF*4xD_e{VS%JwX#sSWw2EvxCR?GPl`w^z?Co}D zEKY>AP@)zSg8A}c7zS9(gzEs0L(Hyiv%q`xSFvf!CMqh#dstmv#q)poD<>^>=1-`J zj7(*H?gAYRL7Yq4ItSQsZ33~{DB^UH~@tHmwP#va``@+dr@j@IBvmh%#ZBlb$ zI+$^D2GU?B8%s+$)Y8Sa{7kGft9x>Ma?u5w*#F1hqDe@?Y&Ns5WRri6Klsq|fP|*H zBY=drs{TN=c^1dSBxmf_0L+H(b7NZsnc6YG(KG63VrG2aZ!nzg(UmGq3^uqJHT84b z^Y{DTOEuFbYFbSU$Zd?idm7mSMAX!H6QUL31i#|HbZ38(dH^CQK}iC^BocoPVDi}5 z>fuI9y$Un-X6)nzcn_>JQ&~~TJrCXo;D1-FB&{c^QK=K?XgEQ~J-J+Ldv(}A9vlWYF3?Wek$f>Vx zMo3BFI}d&fj|c9&^GjTENo9cd02awTBHYR7JI)XiuV&|G?_%lv{p(|o`;(dZ#=#%w z?}7EDr5|dYT~%N3icc?ZIo?jqSU>AMXRmu7=W+2~JLo_js%73AZu+7181DoKQbc@$ z?LU9~s7IOKBJ@bS`qlaJCsi)qRE}%zVf1>C@bUlNg3G&;de)0gB3b_bttXE9Ly6Az z7}OdcVEgt;ztRRE2^Dx@-~j|dz$vlwYE3646#{}FP+3{&cb~qT5W}xm9h z;5HeUb1MK9)pbV37c>Y7v4I|g`@VIy{tq6IOC*cCHmml3Wl2j-Wy_B5`peBHYB}`Q z3ru)3Pdgko9)9>2sMTsQah%utP+#3dNkzf(@Fisz^{rwC>RD+A!~JtahGeq7T+5Z8 zF5wGbyJ^+7_;%LHEAt4Cl(Bt>7><%tunvQvn~0!7dOC(sMn$2Ga3Kqc<;qeqH0+sY zo&rQgT`phD10lv8E-L<|TS_n*4W!e-r|6(RF_B}!r7TSJa@3ZH#`-D}i9pEZcT-t$ zDc`>$*U!Kd7pcWO^bBTO55K=wr1tAMafF@|M{s#Fe@g(D$wJTRF(g;r3_#y84-$#! z*%BAf5rVhmQ~AN&=1+kut;TuKY5;E03P`E z@_YW=Zm`(`cd-oy11@I-)9xCwF3TiNmqvBV36d^_w)fAb&0Lhc!c_8#J{t4PQsV## zv^DgSlO=j7>@%@+bR8oic|9JtjM4WSNKlB%_$^t<>~qEtmJmeCP!mq)D`>;zJX=3V zT>Koa@G|xfjevUss`818)gES0G zdZ|rspheM3_JRxZnb+C6#CrhZGj;pzx6|7j!k#_P@wKmgot&IJPPLxmt=-kcMQWFT zlGSu}cGB4?20B{8L_^s)YT)fN1H=q%WHxAwS?wA2zyAvaT`3u98_CVz#HmwFz}A3q zP$C-0;?n-_TF<>j4@e{;tK0Lxh5Yi(pQ!%gnj7^ShaQjH8#1|u53Ns1L=1z3gg_6& ze}H~=zP!9F^LWIs{Kg%NWr-)yzBph1@2~gCC-VD!kvYX15_+G(XFD8nLPq>+S~d1}mN|8*t6 z`qDDGYTDR#$!F+kYof2QpKe1x;W{IyPoECRJnaKd`@)xuMgx!k{&BKP)-mg_(B5?t zmCAxLs-LcbR%Bt*{N&dMx&Epzl9N@;YT|NB_ji(uu@p=P9MDokTxbj&(P zU3)1obX2SOC)yx#fA(Oq;mZ>xFpw=|!xAxywqqI+`SnnyRWQwr{Tl zg7A1?{e~<$dPKTUnJ!`3{ah2S;J61|rZEPbYQlo^K_c}pNIuZB(P-pIr=BFG%5M<3 zOeRvU6c~8dhEyBF{r5k(h|8EZ(SPC{1VKPuoQ>PABss{zm}i*71(RN?O)sEzRt#n8 zj{PbVt!D^!9j7>SkmPJ5#bI_r=H`~(DgP%SN%R=_J`2fEbsQ?a-}#Pb%gwu>=7BJ# zr)?}OcxY*9#bh!elqJ$~p$yRg03ZNKL_t)bSJO!s6S7D@Q_FjKzP!q&#@eM=(wN0mKR$hstw;g3v4lYKxv#@m4=Xa&|(^7HSM*}bn*NoWs$|Jwz z=~v(3aNpf@7(4w~h_qZA?kN+YHCDgUeJ)zp8OuDXGLhC5fbmh%vTc|<=4fv_1FFDe zZcAm&8UcXYZo8d(j=xMwQ6AB=a<*@+1Vlq3F<8o>LshuU{Y==W*_v5ILC#iki%R_c zZK^xU$5Uzi!35%8^ZO8jPHeagr&5nJGzgI4n)RU6 z$oR>3e~LWbgHESo{pn6xzI-PxlS%wDn{k;;IEog;kWMdFdWL?&Oo_NNBME;l6dQv9 zM#Kk^N$QXy!Ad>Bd^(^mNE+h*{LLTT=-&-r8td=z;3c3i@X)s(CVN8`*YCQ7sGajB(V)A3K`(QlyrSDK`iEbfD0Yeqol^doapoMH?DT43>no2#Le2S(D*kgD&53 zDQngUC=_bk?iVl`4OlE=7z_q3+a-oyR#jCYP1`~fsbGU+!3jjxzKJw5gBWQevGFq0 z@dC4E3#xTn7sePF#G!{9ymMY78AeEq+--X{&UH58YZ zFRTA|{r>ZR{3R{#RNOVWF`5xjjzNTi$5}kK{7%9lKS7?aX%M)=}HbhaRB?g*eU(dZfqtSGtLFfh9Dpm zmBvFsnG@HHdPVSbMMWjsD=NAC>dP=14P5@I>o9n8FNDTgFc`W3_~YO2Wz=jXC##s8 z%wqBAH6UuL^wd${xC}Tb3y$-D&e~ zz=d142H+oTHX9NNl&ml3XWx047@?W#Zrg#uV8EReLurbD(b!CX&=}-Kb4-3I$0nU< z#?P>YHeT$OvTokQ`-gwS4{o{AAHMYFt8ZbesU|u*j4gSh0r<=_Px09YVtDCKk7DW@ z_D>r7$reZ!bB-W^Gj;W73o8Inefm=D`;OtVugtqY;F#v>-~NDdwU!(6Hu)D%twr4L zj2~#_pz$E7Ip7)pF?pj}*2Zc{UDL!1hjPg+=%KGCgEHj^@j?uG&j|H+SvrUY;J(t| zn;tkTl&<=(P(HKZcUTll8A9j6a#b&N*B%rLM%DaPZ9N$HBl88Nd^2xuT*Xs$H zvy)i7hKsJrMY|^StdkcF2A{`e>0CHl&Se}#g{Ke|odF{{Wyxs(x*Vxl&;y6B^gmZe5WX35|OrR>hm7RBsE|i0J-Lt$Q-ut}T^VwV@ zVh&E9XrrgO8z?xZ5wv}MCJW<3$af#0{oU&riE3slDucGj=*7GU%NUs!^Fnw=!;vhZ zb3HqhDXmON*D*OW&Q+Vhwcr09+tz1NoV%EzI;SAZ@7V)U>Am&V+xh0py8$S%d2kK) z^XlV={a!h_A`+8zh%{F^(~X^EWmjMs93?6>gbDW?Z$Dkl)|^Y2owOrU1))^Q$SGJy z&W0>n^?E*Y%k{kQ=O>tw1k*S%PnRZvxi{WGrqy~$BXr2FxI#1*3Jb9}HX_q%u{Sm{ zqZ?#qdJy*$H!<Js&QG#7x1`xiH&jMwzQB_P(Vqf zm1Or~?gP==SV?QE9;H&r?YG~K+YMtzD{9FwVUfWcIwX2B)~;PkeSJNGAkf`6fJzff zdf7G}+xrfZaXn3r1ToQ{3#`Ro0AOsQkoGnM03LdY9kUY01Th{D>a~-^##ouL%rn?2 zQUd!#^xR8vSUcGF;vlcS{u{2@@l5~QC0xtoVFNgJZ+Qz9U7smGu)4@$4p@SPV_q~=~h-ZS4K$13s%59bO_8K_d zVJBz9I&Qm7KoA5R4mZKUQc($R=|Un|9#;$S#>s992tHs%~#)I)G8VUzVIc3p^Ns;lkghEY9r}s zoMWIdf*IW?BMAyVUwJLx{rXk>?byqldSe3D+~|s#eoba`!1!flZKbpG2-kh_>;Cab zx4Y=9ufaTFW$V^*Kl9R>4e`uQI{YC_k38}R^m;vC{p#2JG12}E)Jcgrr#wW(#BofP zk7uGcfPpDyVSy2=nY&BB#C5k_6F>!PG#XI2=TJ$VcF1F z2kp(5(cYvbr@+kX&w(bSjp0s+RJ0KyF_RhrqvO}JRZw7GXJD&PPg0B(LkFU95C@)V z(MYJ+#4^tTs~H7eF<5RFdDxW|qM_godsy-xeuF12O3P1w`ZIp;nHx#Yi6ef^%8BcI zvJwZnzM)tAu*5h3F!#-|;8c*H45n~ohJ^(cP2D4msg*<~WD*^&W%K3~0J;y>qrgLc zLL^NV7@4-?R;tO31i4ho`WPuaPAyGC<4o8mP+xE>*L>+7?+&VW#z~}s4fA;X^&sK5 zcihi~U%Zlo-#JL^=VPdOzLqJ?0+Z2hrtEV>P!O<78`x(NpzKpT0m3I@Sf4-1SMS@& z&TAhcqhg%Ki8vUaVK(XxJj1P*f07Pb)H=4r#CxnN~}1VIeY|j^LsqKZ(S2 zeKj(j4wuQqj82UAKXc_G*T2jpA#5m-#Bhbo#^%)#R;vt#}1^=(o5`V0tyKu=vA1G7^B*nxlNdfHH5Lvcy@V!e0c z#}|?m5PId|Bdq6(^6$`p&X+&lvLC}B@!!1j+6m((6KVcAQtGi z3ClbNFTOX4CT5HvTMJ3yQ$Q@;#(uuD^KNeW%ryiBL1iWU`oTx&n{smGs2;9!)P@46_nk(pQ5s|l8TCA ze)`j&iT6RTXWDU^S*wb!uEv1yB_DNb#fD1uv>s<`=A~S&REf#dz#qP(6)dC|IypY9 zVq6l==u`_*WiA^M)}pt+fzsP1mwg0Ta2&3=QA~C@5@6}`d&`gRrujq>NEXK@ueg-F zVsUZOH`J4^O~%^SOK4;;p^?En{q$2*R8(TISO^YQ*R?m9309Z^GYQd6ILu}ewIJ~h zVvqt-y*Z>(t@}U^LJ3UIX)p|ckn|xv2g*teLxSHpFqi~?e*~cd+`CChs^+$x2ADN) z?|sEYCkfH*&v3YrKAYwNP)Gw=o@>nTOGJ3r-{}UjPd&-} z6L@qUIMPY>4K(}0WlS(BgK&w ze4ZnR>{8&!Tst!_Ln>gwRm{)ayE7)qX!#z32Ks)#=VX){6v1n}<{Sw_hKH&=U5iL; z0rw!DdA_J3vouYdw9qAGyr2G<%+y6nJswEmep|bMx5|?9jqjDQmgP?OH->Cf z;|4srSZljLi^DNi!6DHSB+`(CZemy}5*BxSUE9(Gpzvpodi$5}fFH?8eevu&tm#~D z#Zl-@WIj>HoFsKCy}e@>x}{n%##}e-@iV&n9F;5(5%fUHTX@srKN|Es2@Pe)Oyz1_uj3R1=PvPxedtao>aI zRdBp#Ix;NG>(Ge{aQX`nEd>G?iuzpjF}n2@<-fCP{Mql4&3_Q8dh$|IQa$6NW5lAJ zC0R*6FJ%H~Y0zQ+z%ezVnUcZk`cMv6#S@R9P6KX4HZhYAmYQQdfNcD9y&y2n@1VF< z73W19T@d>DWbucXZ*`bnikQFLtWo}G+oY3auzY>#cnvoj^9G1&Pt(fi+EI6;w zBU_&s<9sfo@*AqJ$n`i(>PGYXrHus{19+^6i<$6$l-gOCk@fsB-_C%H-V$1ED^7Zv z+LOtA70sz*Sf z2h)B?nFCDF$e5cHw$C*czs2dXf;8q6asm4h*E32|nMzdC1W>%-_?P?rbF{Yzj(p)* z(jg|IkIqB+nFk&CktyraKc%|z7(%q2X?Xuv9?;nC&ud&n;_TRhr`C`9OdA<2QY?2k zpoE%;5ewEoi$lhBaE&TyBP;K26`#6yJqhVJaIHIjoj;8?KM(i!b(%e6wa+{-0nIFt zw-%r+mf86o=(|_VRsi(qMbDE39X)kQ>#FPRT>Eon#qSzXe?keDsUmeM7T$4xt`LvV zO*o~^_(E@Z(&5>|o@%RYwWo1}rFPDG3OzFNa2@BI>wO@b)oVnvlYJPmfPh5~g;Zo8 zxW%?ogeFv+;EgU_#|fPveoV=NbvdvSA?PnDTTXu(KyR8miIve(J4?24HE@u)=-Cin zs=s=mf9U)5EC~<^34D?r6UVo%N!yK~IA)G;aw!Nz2(cm*sF*b*O#wK%BJ_wn;DZPY zyjM7IjUgPM0>cEjcY1iwOpHfep#2loBiaLl@)IJtT*1-t1CtZ{la^l{eYSm!KqJ76 z&jN!VH1AemXe`1S)j0gm#^rER>kelU_g=8FYe%>LkT?soI0I#fAD8RgRcC*J+p6N=) zyto=IgBfB{gDP4vaub?x=2BMEX5{!eJ0J`wQB@SEh=i+y`7hVT2Lhb7_pB;PcfOUf zu%`ZviISmF?U@c)FZ|-|YLdQVZX;VTCgdBEcMX{23~&jTd_b1O2`vc6)?aOmI}|CS zq<-Ifi2eeC{V!iPushC_P#|$F^iH;N5N4E#yCwU9QeNKqD1j&2Z%7?T!p8vna}!^x z4O+bu`L_Enl(O0<9ArKDka+L8^z=T%D*c8K_Xk*`76)5bsD3p^(qE*uq%-4|V>4Qbn&+3#KVReepbqa-&~SR^db)F7UQR1a z?DqS+k?9VZG61oO2>~o!5*;moXj}Q-Cepi^$E22nC2yn3Py1_k4hX{$8`A8(@}}2) zR#fzVqq^WH`R@0>`XK^fNnCZb55AqW5Z69$sMNUYv#-70&Z#^QE60QUaSSh5U3Ei@ zr{{I3RxlLwO3^UfKTmzFpDRzHD7lj3#c*>C?;NO8cu{eQ@?ah-wZwSgGtR;72!>9>Dw2C0}|P^&dZ z4_;`)Py;g-`!MBH^b(~tMG3@r0I7haA8MDv0#k>YSDKAtm-+Us6DudikWc^AT9GB` zRhPueD!d@Q6T^#O_a!6U8lD!%$Cl~=!N0*x?st$ei=Pb@^40^{s^3gBLm@THPIAc!bnw@HYJWImWv4k*CqK!%Frj@)|EtX8C zFC^XZA8;WTuq382_|*aWl|YwilH)!|F@SYjEZFQWS~Uh#5GkWMVnk5x&JiLmo)}6j zjzA$n_tIn&%58=9&!2_?>9zBK4YvwpPiuq0b+*H!BRUo=FhPU9O=;C9=pT2-4v8=? zjG1!A+Fv?=m?_ds$DC>g(pkDut2_$pFSkv*)vhhV)jHBKk z5n!V0AxyH_$^qG5>aUWI5NbG5>(EA+Ut1f|Fo6jp#mKU@=6W3hPJ&UkT=xy~yCC|) zexPy+=MrT-m;pBVjjzojO|2~M+$4=?1rKNvjhyDZx4aD57!mpL|JZXsD5^=4iWS38 zJP4#F*lQY`yG}#rE)EjBX-^(mUy~N!$Ye;(*OP*LNOGDQn5ITe(ClUnJGv1~gCL7l z!&vDevad0Oqj?A{?D?99I0M?o&}`tG-{Pd({Zb#ni&_;eS->l!p z>#+Hqe$i@A@D}&t^CT#jofZx=5oC-l-wTCJ0z(aiI=?1u6BEHQF&{%3nM*bu9SH=$ zmJ^Fz=Y3sJg3IHy`JZfik(--j>-!CPK3b0;g5>vEy2*fol@I^5E_f;;CnMt&n4892 z=!`9!8{Mpj%aj`PX*8u^Ht>sAp3$kSJK!MXm3%)rZu+-jzO{vBL`dm47y7YN>GN}q zdcD_9NZ%}pbNv87AnIDc@ic9KhoAOono`anlXt9T3Yw%7Q7MBm42A9q3(S({^$9q5 zhcST~lNX|Oivn=Bd2ZV!DksQw(|h&>>X(eM&BB?y-Xa6~!2mC6cZxOXY63=->quxa zw%mwhn-O22yd-^*r&`h9L3W`op16umKS1uSR>ssw?WTaA=Uc-wgQ*Q5dFJqqV_R=? z_#5c!1s5uwkJ^mv>wL%JCx>9IEalw4YcTQ)BILGNV*r8)*R0G>d2^U%HoC;;1I5H{{zI8rfL4On#jOrKcSU#VirX@9K9Xm7wY3wwyrr|&e z^nPr}(^MUC0#wGeAQsjLUQCflT$=MYESZezWZoqTq7PSC5KygHp)ae=kF2+lEwnjgPtC4iGFCDj&WJMIM7v0iMUkv|kQuy%QGkMQrtKY22yDJm)| zK)T}jpclvLv^UEJh1=hw^$R0=EyUD)E+$Y>3-tg8+(+*j$YBvcWg5c z85nxS6QraEQDj6E=J91@9zh(&q9YAF60pSPV)BX241u*(_}|n4%ktEs^*Njb>&abT z=hv2t{F8#S%TLl>QsDxXf+gTM!ULEzi3N6&vVpu93e5GmX9SWkuqq(c_g+fo(Zz?(6vXe}Ddxe7<7c&AdRZ;7cUS z>hF=$Zzswd9C9R-0 z6ck)e|5u*utA$pGLNjCV89ZxGu49UWp6MeF+h(X*yUcT&lTl(;fEnMo-49C3ejO?Uo`pZa;f`&Er26fq3Vm2TwwgO1=4yBHr?1 zTaby(_!unXF)+V&+|5U!?z^dPGKBbt6mDvs|ViI~XnV6swU4RZxRYlN#K081{= z&G7;|f$s^Fxz^CCeK|>9)v1fWu9F4W5qf*q{WoEtD5)^3fXcUZE`AVn!QCzkk)BM- zEq||f&}oLr$fa=G+%6+`Vo9~G&1@>aLD_S>Oj)Kp&pUpcEG4|&+vnCMe96Jk>ph8LbRyejQ(M9 zlB9~1Fn2PKN!Y(f>X6wjMV}`SJIt%)li0~b!Ykc~a6Vx?N?^n(FJcp!=wx@q{7$Mjpx4xxtaA>L z7p3(g48#2>@3`OqqYN|t7sbuR2XqtIEnn~UaI_m(@;?*aL708jC7VR-SdsbAFdo9X zpGU&|gpOS~l*+enUT_x8mk~e6Iq1(0C7(Pn7=09EoU=(m`#HIy91p5-m1g0f1)8&f1lcPuQtOr*w^w)Ge~vYL?i#Q@ zUo(fqKx(SQxD?vo+~0!nH2Ey!>IZVU<}!4@|f+mbnlYBBUVuLGgt_3#> zL}c0)H%R@V=D3hRWrTk!D%J^=OaOXl0HZ8~(()~*Bgjm@*|Eg$PV?(mc_#bc?0U$} zn{+_@Ix1c7-i){Hzuce>Wd%jx)ck?`{)CO4&=`yF{LVy|jyIO1yHbAU`-+f3M=bf8Z9XGLA%Sd1Ongg_%!;F-hm6m8 z-n^{B+VliJpMrtmM*mptj>9(;fBCsYxrrm6gq}GR)BVPL$O?>zM9@bmRSp;Ww|XB} zHqFE58+e)*n$OKh+_AC?YrYo7^`kO_v!bgrW?}4=1ycXGk|a{nsY+16!s;d3iQ@eL z(0FpEp)Qqa5DXRtc`*u6-`v}O=#PvH98GEzKyL>4YDnuFpJEN3Bfu;O3mkT+9F#l` zCO>*VZvY1H!cBK@XkM+z?u2VcU;3ksv+T3>co35Jd?Q>zEYi9lqf6FD@8KcD^y=0S z_%j125)+j;^Dy*;03sDbTa{&DDtgS)D?5=IQ&5VWDemfXKiqq)432_SUOEJomDtIQ zhQ5Ehcr+FvdVEOc7~%3@KMVgX%9_TP}FrYG^0gr*V#L16Jiq<(;NbCIcwjm~S@U-C8WW|RP| zmju3ex^GtnTyh-3L`oy0+N|LXcwJt1B<>MIP8z1|{XCm`+v6qagK9w!JVpJ@7fIg& zq0#~`1OnD3qV;}bl;H3%67}=w=*0r^n{O^!t>kF``uZmxU>~=y{QdB=(_kXqLT-Og z;@Q2Oz8dMyT?tQaDh-QP653$eBdo1uamM^`F_pf+Y-`s zS=Dkt9*2HY|G&>CV@jq~?GUPW=s*Jje7uM|#{!(&%)7kR|_r-D02UcTmN%Pw9~NhQ!^039SS z@9O7sHTrWOxo+?J7K)iiAps{#Nly3MB<6&)W_Ykf^Qwz~1l@aeDuBcN0xQN-eqj%urjz1n-0! zxopk3F~6%ymiM=LeC!T!*vs~NbL$Y(KIuF^wUpRWoT_<=x)1EPU=cqar{Uh&@ChTI zdbp)aN~RzkztJpI48b=nqI-iNi(?>CANO$k03$fY`j9zNtRFd3m`^+b&$n0KsdEF7~Alsy)8@NcMrPwf${`)8q0#Hu+3aJ#5!=h-#R6>BvkZ4yzmJ8=4}-RJe5 zKqa&th2e9*0BhkyxyuK3)EFPa?Zz8hRg50-N9r+&=FzLc+|bts$KAx1l%EALb8;}= z-_dEfvHHkRgYK7565o->=lM;(C`3_ejd7hR*1~cRW9`k+ak36sfSW#N zg6q6RTfxJ>bM9@Lt=Wc(p|HIqZu>XrmMib+m+2Jz^lpv=%0nD}p;MsdC<(hZ9BRzp zW7t)(JTXnOovb6HzW)q@^T4j zDH$Rrq=P1FBF2JV9etZcxs9?{o4zk{V1m2(gf)ADhG)DLmIPoz>2)sK_(pA6auwp~ za^lj9ih5T3G7U%Vk<01oRs9+tev*E<6popk@-AuD5yr0d@z?K`N@QJiyp?-Rp09SuVfL zbx-kZ1?#@k?L7TONXd63AWF-&WL{qJTL9}KVuvhwAo4K?$5RF1)MqroOB6~%aYo^D z{o#EZV!$Hc4|nv*bBc`vyxQA|spT*ex*&i?f5Tt;wTJz<@AS^EP-^{{WfGZdWBh#I zAWENvyisG#Md3(Tt*MR3{mW1PGpWv}q#L_IA9M_uXVpVMbsK%DJ#~~)^8PrKqV+s( zZ%YaZEzA!eF`HeU)O5Nr@8%dbwC63J6&N9Ju}u&c;u_0QWl#`7v{cU~3SrP(clv35 zKFDsm9q}*ld&K#_#kCQ!;&k8C!2!H*kr8vZkBhzO4h)kQA9KQpQ8H>?yeq>W2iKmc zf=IWgyBa?rlp&Sa-?zP*Q}nwz(t{`YS^#NQx;Z>HnW%5xPy*1gymmRaZ%7h+c?dLw z-9~%xu&BpVH)7j+nzp7LwdQ<2CNkpOqRQk@roM99(Li2kr`-ZlwIZ-V3q11*lZ3K3 zI+qX$i=6+a6nr8yxQSU*bVYx^-5J5;T9Qu;qpq&*&`^XPjAMPT8$ELV7(Tm_Ew2Ul z5M!!VxP{}aPOt3m5hLu9mUDO%p8b7pQt~+VQn7nl6SJBV&_eiRn%MF@I(YHYpPPzL#0m>$#dzJ?(8k)kt zEyrEv56P7djVOaae^CE5)huD9zka>*m?L6rNq=t@!?8XInKN!d&LBo>(VeZp0K$hZ z#x~l}cyAtbeDN@h+i712KKI=BjdWCyOhm%T6Mxx|{^p51ts?`PB5i&g5BI$2efm7V zGHPh-6?1ceTN1CB^Jba;+N-B*fBPmRg$hDD>8T5lNakf6tjBz5G}q@{>znt(w4aGG z>UI9ic4c=Xo}5|yww(q8AH!;FhgL(_b30XFj$6M2M~ir4 zs(M$Rx-Kg|jP-zn2Q*UX6zW0CuewAgY}VEA;vAgGGpDQA*wySA6v98pX=5(sdQAON z9iN7rLc(cklLXS3cT#M;H@QdJJKgHPYdR`mRuYD@)y<*OjmHa5@(5AU3!&3p_z4BJ z)iHrqZW(POcD{mbRad#;Z93Jiz1^7kR0V#MDP=^wZViG(rePhQjj*dp7~_G{5(+- z7&_HO2ZiYT$&DSx^*kEVBlvu8T}!HOsyn|z$DHO*y^-n>5WLL>gtJT&52aGVol$W zk$ciqyDR=3;cL)b$%>g%?8`|1Y)!#Db~`HT>?BYAa=Yia-z?qF)uy9tZat<`z6v^q zrf7_hva9Oql4};`zfdGRJUvWJ!J(qE`~pe@NbbmJqxPg(-hP9n!&-}g37`G+&G&%I z0sM15f6|8~Nwr6YL|+40R5!I8cqJu4y1T{h@b8~Dw$0rf7kRm7KL~tmTY2Id{hcB> z7y>lQeiMOIXP+CDySbk~L0>i?4#eGN$_Mw9QsbNl{K z@bag+J$QNX3Q%U4f3LNcI63r>Mx%{lHfz!Oa#IhJPvH#TEup82s4hXO$ihc#haAfR zrkH|P0)VPf#6-8>Xw>`AgJr;8R%Ms(1&hy4fpFwMYB<}z=ZNPfaNMM*RejTLrzbZK z0hA&+G3!_mBCIr_l7vfdL%=Z+)V~psa39_D#Ffs|^Dcq}7KexYqi=B~;>L3FbmMtN zs$FpsyRzNHn)e-h;*7)#TXBnr*F>xyMQnT@pzzG|Ovw`=vqa4*sn4OG!p^84>&svY=3n6*hdX%OE?4`#5q}`P;!#`0 z;96rZn3ezC7}Bp^`pUD~j8B=iiqY1VRP(;hb<0frC2&})YWoe3gt)iU7WfLpMt=e~ zYR2=3m=y^FLrF`LQEyt?qJvJ&Offzp!M7|j+2k2&DDW3mSPUJ9?pY4BB1T71Q-gv= zC=;LXM_)f)ciZn%4VZTEatNVI=lgQPu>SY9=K~V&vS!a)EUv;SipR?wF|9BtR8Sd@ z&4$|eOYaX*@7LAM>)=fu8I_Cy5b!|%EJKXWQ=!W>ukh$NzKJbBnwZxz@|9(6mGOH? z@_r0&k424SYoA2=gfQAz9d;15@bt4#5^-XXvLnEv<~iQb!!X3~gsKn+9We8R<-%ud zwa;-(2WC8xy%Q3ZnI)Yv@}5_D1~q>V6+yCC>lzeUr@dp?mqk}5=JP(`M?J7VOxJ!Z zNKJw68~76s8*o8!Rblyk+A=KnQTAl+30=juQN_ecX*f<$Uez9F8N=mpiPfE9u@~cr z>QuE!@Dpnp$q|;3FaWr*$q$TPKyhgSqd;k;mp#u%XW16LzCj%o`Bic2+ICr3Hn76P zw)CGq*W-)lj=Oc6OEt zlT4&mbx8wNWX==`y=Vi6iDdm5;8#qwC{jmGnqEkktHR;lz$O?wZ!v`T_i&mR)PB>o z_YfEw>Xwq17r$|hR+Bn8DFmG$Ih?>NVRKU`2rqb(z&WcSj^;ghp9m_9rni4g{6@)) zdpe&-%g?7EI()l59WdJ1t!0dtcl`e3Wz^)KiGCh!KluJoZ>s%Uf*$Kfo_M?}!Eul_ zsN?z($_p$1#h#X6g53CL>Ac*|o`ljIA78eh*k^!w3=$Y;ZpcV!ggC!0u}>3hy2~a1 zXb2dHJv%q@ubxVc;btVRPfO9^goJZk=ru0J>vDxJZFILkjV6(t-*0=)vSXX+bf?9cnHbYL|q zNWiakA-uXOUiLsE9<(7(Qt1(r#fSB^DUNiWN4xvBIF4piaxU)tq zv%m$S+&5}W#-%jwi^b#cX4NZwA1s0(zj~{d5&iLHb_!SH|zxQDYfdI7hCo* z_l2-4N!S=pl14XRn=iCZesy|9sL}?u&*s>eezem2eC||rX_+_ys46Tu7ba%`lNV*= z(KhD@z!F7c#Kc_?K}^_bj09c~#Hi!}^YpZW`q`)`L`@Nca+ZX^GlhU?aK-V5dMAPi zigUI_@pdj=0h`;B%c#gl7a3Q1L0xeL1`ZMD^^1;M9jgf_X@s_DyxJVFcc-t}o4gA&%Ye`BaRFrI5 zAkr{y>!JIUwS3Bo|KPhr=Uc@z^fepKqz66b#OaNNcE@K{uEHu?aSA*+Emc;}kO?i# zz=8*SY}J1kN$mmX>};QCZiPqaIgB>y7dzwm^nO;`UN5Ke6JDyPDC;u8knwp)x@b>1Vk;*9`yH1|~4o%*IsSD7Q!NJG#y??GV{EAkmsQAbCV_QS+lPCXbq z8d%_et2`i6y0*tVz}l|;Nx7Raboj07-s>Ri2{Pjn+q@qwq?0v1vDJ+8@knBz6ITKT zS^(dkVlFjsoXiNuXJYOAw)m)iT2N693dhvOBZ>FJZ)P=`y+BBLe4L7eve6S?4Q@>aj#D(WkE2{uMtRDEVpXTXHT2|f zLxYl%SBex{XsD=;t7@@&d09#lq+NaQ_?iMJJ3lTuH2UM@0i!GzHi)0HJJvZ)Ib2hM zBvL;O8@y{N;1UM#O?IMo9%-|%wKKP8qu4qr#M?H9nMBlY!bXF9#NAa~E$GICtORM3 zqPVd!>-tCRTSBfu0R@W0#9s$1$`367!BNOCMpKaQIAsu#0V7s~BIIr!ECp#H;P@(j z8zXA+bH3B zFO_HyzWi*{`G@1Kdj2ocm+s+ohp*Er(a3WGM3+PmW+q&QbjJz+I9j5(MH4d|W7%)U|JwO-=( zk*(fI5NzlSuk4)!=2f#|naF86g5>V7eTY9ZGLDA#VWxnLZTgziUeCL1h_TeH6 z|8{ir>;B;N`Z}2@8yCHvGg3?znE8vysWGBk^I8z97)$*UXnD_f$nhuZCUBA`gx%0G zuRhI=$i^sRY7PmEIFc@#1F%%_#do;NETsE&(#XS#I?Z@a>fK*p~4-EcGzZ?a86@K#84A^jHl`s6~;&9A1GmE z-theOLFd^kl1d>W$p}LiCk+#qa<1|5c!W9chN#x3OpPit61r%UUM1;km7+toRh(z8 zux=n`T>;h()ro$=BOqf*_Aq>yFw7w^qv4|qDpk74dmXph$8VnZ>indA4#Art5dIEh zNd6Acp3kS7x`WD>`vFBz@efQ!{7Q0;R?LkuYuO`UjbmRk1S-~?i z#m1vr>z&mU6&VUrYVu*KU}3|i$kjFQ7=qWPo1YW=9@Y0eIN7I71%;Tu<$77WKEcg^ z0VDWCd1usIR~uUlgKn$PbA9BGWk4Pm`C&*<|CGh6*>AI51z(s%8r;liaVRCLOzztb zm)NB}>7GrPp4;L}kD}XR%@4q>c3$ugA}LHU6$_eqJ+YK-U7Ctnm;KCBQ2>C9UcArN zN&)6@q3({9TQ;()CYrR{?2^k;$ms5QU>G|zS(%wXS=8(dcG1UeQAn}&AV{V?A@U956)Gz;SJToou=Qw;a7Tzz}Sp8ym1pLl6bNcMN%8q4iz zCIrlL6n5K+IHXciuB1{D)GI)bML-zCGJKuTtm zog+kyNW{XT4npki!fM!zu((F8b=|a1p8jQJd5LZ0qbQj|0wg}E*U@~Dk)@gGwrWZ! z>>2m~S~Bc$!X?d3uE<z?>?&fu}W)h~GuznmHJYWr)fJh-!IKpKz7iuR2?OXhU~LB~?|?;r*>d z^^v9pf@9ON)JE_@eU73a&vGjO6V4wpn3}fdq*|`umK}eD?zDCsNxDJ%9V{3RHWuF| z|5%(VqNN{T<_)MDi!I+n> zDeLNnjy4XtLGHJqVB^kaCQlDxn&*ZCYt7$SM~=qopue4s@+Jsjria7Sc=Fc5fkP%B z;gNWjCMAXRdTncT^Xh5~`)OjAT3eG@Ii&W+tmJus&Q)80WTq3ad+;SHh}g#m69W(% z8T8l!{0Yh?rZ_A+4adCHK(=gFnT!EqnLWZkC5#M+>6$}mKG%~!0i&S7GuY?eraV+o zC!WX^m7>hCSy^6UT5y1TWka0&kv)gHujS6SlLclRxuu1Fo?$G)TYB;a$ti0am~vPz zhN!4}QaXE!oD`h~xr7xlte3eE=i2fPvKl12CN>R-Pc!&bkM(U+!fjJ#m$C3|Qy+?_ zPd?|5Xb+xqFPKM&fWuT1Z(P4%4KpZ2Je0HFm*)xzN@cc>x}n-DvzaY)qP? zN!v${JH&cEjgPb?>NG+dT@7u~f{=gW%a|o^$eO>udq;`1jj>hFv308pBgOu;bag?{ zY>*>?e4bQgiZy;U64o z>lh+4?MTdo6Fa69&6Ju-3>o?E&@KbS7V#K4?K}-+W8s@#mB4q5hcgmp`)eTGr!71> zl%bn#^4ix4_8C?L7f>qc`|C&f0L@htV&-Hv5eWd0OY}%P z3D#tdB!K!+oh>NC-{yO{$K^11VVBqn%==k^a6+@h7QK|%*Etu{r%vu!UT<9}%ZS(w zfE!VxjDt9NK%DVa{~@^kT{@ouCFI6qISD0sBU?8$+%^@&Jskzoipu46(fUlB^1@7r zyiP8fFvqH2i;Rh(pivRq=u-+Sen!6YZ&eEBWlqJKPC*O%cZGO^VRv|}N6OTP7}b*e zM`dw+zHilqQmhc!`c|9ge%CrAq^K}{l9a7dVd|;=+*hrvK$M-~kH8B;O(axYZx7)l zm!cw)QojenWlt2>P|T*}yaaZ;|5vsS1tc$(>=)QeD9bn=)AxJ~?Z3qh(?Y)v0#{?M zJ1e$3EBFy2Qv72ztUxGJkd=u1l8yjYzH=TE1ALiedMlK6Oso?HTZWZ~<<$OTTt5ZoN1V?wb#fl=}&=_yIoVm0GA z?G!=*RLp=}ZV@9@BzcC>=1QglZ=nXVU6W4Gv||XgatN$)2)QgO{VUc&P+5KXT25m0 zt*7DetD2l5LnwU-2Rg!zIc z2GG!7J{Px?eEDj=f$qyBd{_&J5U#yto5u>!Jg|1fXZ3{lN|;Uh0Dwf^mN%5d$yT8< zm^fIn$32i>gQC$w@CuwRj&qKgn@?b=-q!eKGAv-)vFq9chLL91Z}N-Zeh0dW^JC3k zP#B?9rhz5nH5r%MV7d}Q#S_pn`UKzjSWMxqqmYi8{@t^HXz5^6xs-{@16e)8YKW;+Cq&UPsW>N*DP+D4=EQcH9 zm)En(DN|wzKz@ipxJq+O+z83M6#JVy`NhrVkXuaQ>)B>yhTn;`a6w*c!&z5JQBUir z#;7F^2N#WEx;71sq2RTu<61x9!NyWej%-VoEJPfhbJ88Th#PN%d=J&akWw_q16(s= zVnD38voi!CbTk|vmja2fv2g)N>(ZDMjL<8s*9`{XPOzp?0$T*PJ6o_)MaP zAMYEs=x3q&T@d*(MLc8!_5MsY`1^ZI63G0Ha;(oC+RgPBGBNS~OYc<$_t?MYi*k~JLS%&++XKk@!w}xKD7x^{>3v>pn zd}9=|SHA@@6ke%4PGf&Sh^!yHHtm?Ej;Dh$?HZet(t$Bw714^9^YPU`lZ%Laa&)Gg zfgDy{V&=yUM@(ROJTKGxP&hU7-rE7p*|ZM+j-G=9?R;TEs=$7R?6+o(?Y-oow^2|iYKCvc-jK<5|Be0=B=L42EuONk5bCAoC zZ=~2F;5U9;e5}d--TcI<=;69{^aiQ(TpvASj`^#UVo2Hq8Zhggy};_)w-=?LN$WxH zFr|C>6Mh%Bmp~xiuKW6n<>E^k)P^a8<_=XDpEV#L{Y|L`qvn?BD~Rw^6pbY4yR`xI zF~dp+C>A&)dn>XOrL<^yL8!SHBTY&L4Kf_4!a^4V*FXgUET`*w5q z`#VEKFI!x4vCMF2W?7xc2>wai-$ki@_!mVLonuwRnHxlXE+)498!KM7cAve55W@sd ze$gFD&-PF3bW@laR`*-U4^nEuJ1s>` zDJZok1wGejvzNS3I^vV>)lDmSV%*(7L2cogj!g7^a=vLhe4daz&_O*R*>&KU-KY0^G@LOUJb?|fUwgJ&9B|I*FECRMbsU8Yag@9El?U^%=tudG zz~?cKk&RPp`jLt1<@>D)&@X6p23-tFFHWYOKHGa83UQO1(`-s!{n^`3rbFYeOMIoj zjlUxhH9*kb_lYSfHC3L8a6Mx2iE zz(~dRkBeon<|nS&#KVX~yzGbTaMF1<+Sazby;AwBWe7P#7m9+&S)3X77f} zs6IEPKqh*dL2_u1_-?%rF_6}Vu6w*GBO^iVyKX7UD~#g0TqCUQ+r%EhH0l03I&rlQ z9zX;I;06{L;s+V3LX24y+jh8P^jF@Kv|J9Dej*99{^E7uD(Bbl;|)WU%Kl?DHFQS zaAPtVIeGFVxw(1R7d@z*0pxA|JR3^N+4>3E`V^F!TOn|i*mxD=Up>yxEn*u!%1B?9w! z7LX}|q^n-){U=NzDA9AW>MUj6gloRzE_Qx#X$eK8;^b3bSBEV18lKs!plLQ@P25A! zq83^DG_%$P)MWwqDLk0lPV<{5ZwEklOT5;NH#|UE(H0tOA16BY%Y040kze`m1z^6z zz(lBu{aPh^tX94{63UT=gM2qSmg3^FOK$IvE4S3NVl&S%5v1V6;UVHbx1O3`yu_jX z`zf{Q>6+^243kU*DI5Bj=-2k}HeJK6E zIME}8IYdWJa%8xQRE3`PS6z)v7Qp)@o1p|0`}d&|G#sganJ8Tt+40x%{PVl;%o(Y% z4Wrnw3Fdc^sCk_krH;JKSy-#Ic;<|_%w~igw~?G(L3MQ%M^EjN@Ct5A)x|3dq!s)F z^_>gnw?kkQjrFG~DleDXdtG5MxrN2N{>&~WduKR&;#sm|%g_mGl9B|;66afZ2!cR# zw3g!a<$UmbHIYIX+qMa8#fWh+l8TB-Vyd4&p0gRFQS?9@?OVV)(Mz>|Bwt#vGtyhb z?@q^(I@3acOhaT41Z#C_ly&zFP^rH1RY{x}@sqHHzZ1w_zt zW@Z6yH&XJqh7+fux5w*QI$zOfYdFDc9i425kkdXQDhp}rH*=_Ch#{vxScid7klaYsMvgsrHw z{*VAWO8<$!bRIdsj-K;>`Z%dF9wQPFgHUaF6xTe8aUj;nLRO z0iNA^hz)8Tr^5tf;mPR3k{FZuF$uJuJ&a$ZKM@mk0IbXE#WNO4OuERVH#6>J%qn_( zfAi$+1V{KY`{V*}+lptF$rQ_)%=3xov*nVMBzm^$pAqS3bG_gF>f>X*IVgHqDHod0 znrmw4tUJp$>g-O^dP&$^Tje0R75a^jpY&=684GeUs5WvtQ30{p8C2%o;_%wZKPu*?!ix7 zKn82Yw4o{G0V{A1farYylH8jKmRlHd%%Lh>q99bKC1P)CA}b(;@##raW+(sr))Vm7 z6BOrcB5P63JzmR5V|@)x9WC5*`#o#czqv+ad->>(``Gr)FH-;X5k?d?+IlCM2$C~l zSCAeC-S3>mlM{+8JegDB;1@1}a20Fd4K5}=29nhh?;Zd|0OaCC51#Q}X`fFy0Qm8D zzRluzFBKbZA~7U@J^Nq8Vw>dDcmQR2<%|G2s|}ZV2!&pxsnm?yc;Lsc^1+^0q$mwp zkbums1doUIE;~l^HH=PXVXX>f+qOzEtf*N8_xijFo;f3N@@nGL#`Eeg*H+@Etspf6 z{Iuc%>G3~B&wZzT1)+j-$gE~97a z$jr>6Cg~dLdX*3ak$$HjIG(O!AEMRj(L0pbx@2tHbgh(e*(X-(FlzOZ*Tz>jpVFWY zSRk}RWHf281reduq17gF{&HwZrW8rY9Ss=F5Uo*hRi++WY%={s&@xnm++kzRX~q*J zV?no$vxaeklve^`9+c(pw?gJ-u=5BB$sUxpM=%6GlOr_8yr}|l^O(fFN#j(gN0?O_KV3V^Jg4JwI zoLI_z5Ck)eDhZe4!&@v5Z>*}S!elbx?+-7&xJ$~E0!nOcF&KY2#%A=a`_^kZhf&*#vP;Hv(7(1ptB2d)(-J&uBnr*-&JRz ztFDKU)1%BfL^so%Q@p3!A$kXf#==muGEtiQOQXn5PPF^uQ4&iGH!z~F0|rnnqw`(v z{Z*)Hq_VA)X_}4S3y{v3&CX@2elIQ^*gwJCYP(bv>a}J z31ArxVJpqUi}ai=z*RqnDm)cO?`cSOOMUa}_jgP8=aS}sQ3{F+mi6uV_5ZtApIzP$ zc=Is$G`yuwTe1vX-v77XUsPU(%l-&_%JV<@e$iU%Qy3JgDBRBF3zCn&e%_`$Uip3- zfx^;Rf*^PoXxDt|`W2U!Qe0Y!2WY6PlHR7nxaTJ&<=}Joe4CASQAw!Sa1)E;z8QTClf}Z}z4b)tH5hwaNldMvC{06U z`86o?kv#wWE+(JeMcCJNif8m1X?k}r(Ln)tJg{wBB>*+=yv&Y18|fLhKole(Vigvx zRU}tD%;t=PI2v0ZJ(qZSHF2R;fT$cC_0CftnN$?#ZpJPP}yNOH+B}xckj!F9Z zjP&*z@$(buTYU-VET&1`fBOS+3kr#I4T=m*IWn}`ME8Uvval_QEg+mD)=**t7O+@G>2gKTIn=e{7{wYn z31T!VLc$}63sVCN%oyvi_0Hf{%UIAC@xw=+;q^cMo|4o;EY21tO%NX6jIrY=BU2p& z`yUfoi&7!RAB>k%y@u9aQF$u4?oS+T zZXj={6PepZgng1hrYV=hqI-%ArG=mDewZU?#JnEI`ZrKj{Q-y5Gl*K)W zDiA&#L;x^rALIBNzm=-GIb#RprV$r9#X$E-)T$_E<{>U*ije6K$O<>3@)H=HFtJY9 z!V_oyLUdTt3UIPtcnY%gs|g5CLErlXDvzA432Odt$r%Y#0I(==$&_V3@%!omVu zw^kyTBPB)yBuZ1G(MUnTI*djmGu9>Vl+GsR^w7^bDV`6bUH6YD(}F&B{4Mg1vpzXh zSBDIEX73?nY8{P$EIgTjlq;E-=w$+E?LCa&;*u94M>~FjP8a1jPu?ztGNq@KlAE`Y zf|AW#%KYS$V;u&pwT+~%_;u<0_#hFS?gKviWNvVpSO4%kW?jL|Iu=O|%i!#&nVl+^R^;VJ;~yDZe$EbQL>GAZi| zvDs|g@h=bYzBl=3dHF_(L26)b3SSuU^7d<}uc5Ky42uI!PMOXyurXE4iQuJ5^#PRu zRE0&z%Vl-k%g4k=Vo6qc8-**|Od z@5&hY|LyhH<^7kwUsM=mGGv}*8pY-EXI=(S1bQRV|Hk*r&C%1=V_Iev@zB;i`^l~c zgbULQ8$+OimGVDS-{R6TaZ;1XsIRT%nZ1XA>u4C5BG?&>c6vWT<}B)nfECJveXNe; zv$@DTqQ%eJVj?@X4FAvHz@h!Sv0DQfUCiSDB;QGFMH%~p&tPwALZR0)v2Qmvy&i=| z3)5!4{mUO>>K$RBrin#+0GW%))M)yVZO+Hj)k%+6LGTMtK~6gI)X(uhEuPqQ;NiS@ z{(+GxzWwE5lKlcn3N0Wpqzo7XM7qSoJ@w2vtaucGMCwv;y5>nPDQ82;CN_KSp`pHx zxRf*zPJGZUd_*cALVo_~Iq^sGngM==@A zKpc1$MXvAFa)I~JF&RyG{xo{Th5UW@-OsZxyeJ)?TUf$^+d*%~3HH~&%nc3|i9!jz z9Y%>lH6bBVir0T{_W|aecD7%?m7M%61VP}?p=vriTgc578JGk?z@vi!c^rQU74Pd; z?_@DDp7-X1@Qd^(^suoaIM*~%G}nC&nAPv>FG|JZGRHY%A51M*%oGc!2bUVVb8#Scu#V)5nRAl%tj_sGG3jUQp9x zo8U;_>wIhdO?0MR!?8)D^vzeS&%k}|I0=hQ+*vY1)vOz#bPF(o$0K4w)?#bw?KLto zVwOAyJ_W(Y09I3FV8Rs2hySi8wz3}>;ocwT;_-mGc^yiDWhAWgFoE4&ce@g9zhnh2wB%>;J}RTL>@VNxj5 z+~`>jKKTT}ulf_E%m;6i56(_srnK_PyQIFuJq5PTj4=^2Q{0)z!D0lp_?^~^Ge!lNg-vJbV{O;A`r zZPPI;+Q8+d7v8z^Znl(*&+Eg_031D1#p3W%LOi8XiC>5omrBhe-})u2F~0f4=aF=t z?PMTPPeVf;P3_J2Yh!qMtQ~u&f!Kt6bcgGR&}-@LG^`0!2Ba{f{Ny}xmEjcJa33GM z@ien?3;%li*H^T6Q+>0fBrGXLNN?IFpYMGq%Rc4#m&>1ZSyUK2t2Bzs< zFw#&{BgJU{E$^oYjFJ{(3RM)dc2RNoB-aa1ngT+psWt##0U#wl{%=y>=x>8hQsth}5Ox7amGdTDC}i3HUyLfQC~d3&=me^#m0}a^uFW(zO)& zSn@lE7>JEUnVZMf6fGc-oLz}ukWo5rz+vOAyLM7tT}4VxC9o8N6z8^3=Km}3{DdpM z^f3SV%;PLh8R>I0((e$%l~Ol`5v&d1%;C3rss;HLC_1d zwd<%pS;2G9?E)YwJA~{FrKlrR5|!)B%sa%z32fb3Nn)ZPCA@R@9Oo;D3;x!GS^R?o z3CQ&_FnPl~-s?S#XTnL8W)sTl1I$g@&wn;V%!AcBybSofmhE+=d|n7s!O*NWT7qr~_ArC;x% zrKXLRldaM|WttUTEEH&h$WPwEm_q~cW$fuYjyVnvN2C$i@*XeIMxJ>BonJK3Gxj9~ zLJ`efk+(9uFiL~kgduo{1^+PS0~eW*rDIV9;*=1@wd3N#GBwy96uWBM8((Vg|Ns35V`q8kS}d0luIDr zQ*EWJ%j!jNYLJCZp)Rwoz(TxSeGkKJ^Q!>W53G2$xPSnhKzvXL;Ni8${zQ7|Iy&pl za`NR91Su7q3G=7Y<3xdsgZvXpDYRzsUaJ*^wPeB6 zD|vU5EBiR3A0$3NP5i8f@T6(Bd_IwyW`VXdNQ#p}6(zNYM{G{XyJRvMxg|24)DSIo ztsU5GHqwhXvA(2i=_|iLe=L_*3@6dgIC)`HI`%go7sHH>i;Ay8ucu@(inRP&IO*3x z*gX|%;t*~PO_S(Om(LGH#bvzk_~Wcz5BSQ^8Ua1egL^LT7@H!>iI>R%6R*+y{MM)l?#FhQY-u$*8iFR zpS?4WYwNty|5r#L0b&u7K*E47*sR9JEH-!poWx1%xJ{a6lBP}KPMfCfWZK`fooSo4 z)3oWN`*cg!q^;egahk+-Qaes!Co$lK#bAuVthSK=BS45%fFvaJ`{PPi2;($qn{@v0 z`Fw2YDsiPG1JY@NVBM?4F|5h1#VHD(oIy((e>S&xPD zBjd~^YS70UQEQ_aX=*~F9%8cH1b{;sCl#uRx$}1BFI+F8-gIPXU}fQ3G|Luv&mS+jbHXj^$@()QJU3NxJ}(85e>kM z-OX_K44K9Z&UT!TQnvzp?`L~xe)@EXz&8+8sXg@<@Eyf9t7psgy8s^r>o=iN$jGe_ z0Y+g(4ln%j2%}~Z5L?EqjMbjzgK4*8`VXim^HXGi-t$mh4Z=z@iAhd6+H}~$yI7&g zLM4l1;k-w3>;yqzaIhDpG6tDUY%eUpz4z{tvbvbfX4=}?2oLx1FU}W{8R7W6$oU?; zRTNNwPXXYPxh1Kkn>FZ9Qhs1;6;o&Xwzs;OJR%0$(&<|xs_t1Lza+EgeHSc?s^14 zAi3u}f^ZqLJPPcMY$B9iBnX1k@4-Q_Kw4E*6)`btDRWW41VLbU#zp6u6UiG-$3r-=l@?B|Azi9dc9-3bml0|?lw`V?6L;aole_BDk^8c7)C-|IGT}5 zOg#BpKS0Rz1BCB$wdX_N@Ap3R&{eiyX>0O@(DUtWo?n4zMe)XsfA#nOv;DJc+r_pN zVG!*quh+J}>)Q(ovgx>RhGu^jn0NE|g(U?%yYKhNRep!e=Ru*;(^OaMKla<*Ka87W zF`Gj<*6*Z$Ee#D6NLrUoU{yHpmi#=f-E52908IXbLd7rxG(ug^qSD0 z5%mm)@I;2@M{qL5^st#$donkDEFH_)*Gc?nEZUw~v_4VGVIPfx(Q{0iO^o{~N+9YU z79J|X_T>ZIk#`TL!aC_Z_$=W@BZ{b(adx*!fMG#<%N5{Zu^4$_T-1sLz`<8<7Ww%B zF>-*4(A#UKrlyKxo>4A#GyqpV&_G;iYK)d~Ghxe)@6z#a?mCCUprtT-El+nI=c1yY zWBb2}QC9&(+6yr;QS0J~cJF0q~Aivt^~3)Rg=2o`*O8{DK4&EEY2< zVb$DwX9X*_9Fw9Aa}gu-`OYvp7z8{HyPFyNJki>4=3@oOmOX@%{k@^c8rLH5kT5Ny>JTH9JAv!Y8;mE%J^2 z(zlNlPv#?2wqeqPDMkEOUMK>HP2YS!m0lnEw4j)=r>6&}ZxV&tOUIy^)Y#R8hx_>B zA9qVphrmj3;QiUNZ73AtZ!w$Ad?XEOYN|->`U$0gJa01%W2;bHZX}}o*9?sJ@|}~t z{Ljk=@Qn|l(}uCq(Tc(qiOg;%F?kgOYBTrTxCX7(OHErc^{t{d#p4{o5PpG(+Z)I{#PtN8@Qed}X$n?(?-o z#>a84>kU-VHb!g{SZpxs-heJPi+P)FXn1+S*!lIwNgu%~JFL#LLWV7W?G$ ziF1C#4coEX#Wbe_E(h{(alQJ}|Mp+f_?$R!2;+*ZU~x)(L@DHN3oNW$UxKycJjpZj zM6AxnVlfkL2#8GHqvzK$=5g96m_12L`ZmUZ2u(WU3A0pj%iV zCubUyEEvZ6@BjLe_$C1cYAu+YTj6*SFS+&t5Jw4aAf6J2X}~cmL$22`ona)>tHeGu z1U^s|7ojj1LL$c=tCbm}ct0Bae2?UGM_X5*9$bOWnvYs(VdIVC2*TZ*=xXDKZB^Wz zFZM4bLd}57DuKfjb!UN9%Z|fBL>TG$Vl9L#?dszjc>Y~zY++#{f^*jya2!2^!YDqo z7YmgY#$;r2Idi8Q@K~)lUOvS4fvuMoFs{hrM}8f`703OX=U+6*f4JIy|H}S7PMZ{A z_*=ezZTow_T>-Ky0PeN+d*23`e`Q97OeTAmj~DtRl7&TxtClhu@92C0-hY28Klx^L z$o|eZH?g{~o0^*mz>Qa)kZ!b@)DHm?qIs!jMo{lM2x%|y>Ef{mER?a z*J^62ICh{BK@hM_b#wSl53#yr7GfhPy7@LL%_BVjaxnA{qN4~fFf@rLdQKcnne2-3 zee&riKnA6mxeRokz}?@%kGIw1I`bRgg8*dYfn@~J^rCPX!~#7sBB<%9B2{h1)4zu_ zBP`6qLiaZ@j)N>p;8K%-DM|cpn6`qITON_b%N>LD^tsMR;9y(vXK>GW$-jOh>q<7$ z(o{=dPX~>yM~K#VVK&hZJ}iKMY!P4xWJ%H_Z6r#mrM%?Ben-)WZK|6XV-)XKo~Qj( zKVv8f^JWl{Y#@6&j|8PyTVTvJ0K<3iqeu4=?Hy;u>NbQF*!e+mEVm{#Qq?Q)?M)xY zZnrYp*T#j|Y|f2bV23sW`_K?+acY{In+XqBGCpo+dfFjHUjivG)oL|nvjss27DEdF zq3Y@?F#}Vw3zFARF!u|81|}Q*!cABv-An)ty-MmecRJPMT_ zL%8V4D_S6RaL0fYK|QfX-0w6rT{|; zYA%gWaxUC~+0qk|o#xM9zmGMsMs{txowV`|XytJs*Dr`;Dm|;OVi!+0f;w0Q++-54 zx);RBd6%DGP4#sl(axm~$h z6BlNuH|7js;V#q(UgqN`C@=XiXWPzDc4HpUIRP2^CC)hw>&yBK7`uSdwvE`*M1 z?yT63&jOzzpZlbV_;dQLTRp|+8M;Te`&d{?OSeDEW?-qv_Fp0204`y8Dz zPe>*s!8}8bG8Kiv=`|03m1DC@)vI^h+e~xTXgzviob!O`C$Nt z+#{S*PVtnopRj}s&KWkNne5`r9cCisS?CUlx(7icN9_*^q%Wi)E1QzCE~)Hdf1MF= zB*x#*E4JtOv#Sn8vq)W16^itc0Cgz<99(B#AVLY6JMN}nZx1Eo#{fuCsxh0*9Cr55 z-ql3f$_m_`Sy7B!vYa>PTQmXS8gG}x@ghxU6ot`9b5{$+{@NSo8cs0Kae^>)Bu{rX zao5T&T+Ll<$b}68-~n<$kY{nLI~t!)ENphEX*b($dqj*DSodNabFs-#O|QRF^A$at zHM7ZRCOqpKT$bzDx^5?rKKcj%f*_`c{NZO^>^py8+22)ATt-208P7db%O@WC9vMh=HVN|~CKB}f@=7DpfgeXp+(mCuv#qD4p%Lh4QgR%bzUva719 z@Y+J>d8xgAu%5yl3yfThV07vtdwz0=%F0TL%L^Ep7(%8==6JsY!gQQ)jPcmsI^-EQ zuyxZ`MlQZV#Eu^=DvV}c5YEMy-w^JRCAJGqKx8CCy8u z-bke0NPT}7HqR^_K8U?!V=6d^``?58GJtXmB%UBwB;Y? zPe6#!S^B+1@XpUSv5~tf`aSS>uC@PBZ3P4no=@`nuC?F$HUzUIz1znt*|-t-J&P?E zVR#3}M=ah3P+QeTSw+4-B%UVT5W8E!=esJUNL{fV&-55$)vAtI5R!bKV2*_l>GVpOy!r+CVJ7+ZQC!)g`2aR-$Z@8_1(aO$et zxXX2cNtcqac{exSvx@@*UaHS^W9h1gE`Pm;EIZg)K4t4PoT~pVi77DYn#5=B#JMD8 zYkX0W1ROk8E85*Jp&E6A_qgl6!I(+<(uahPF73!2&EM^{k^bsm5DkTSWF@OjF*qWLu zW?go4F#?TIM~Eo-1?|mdykn6h3rQ%Z#sC=`6K}-koFd2f33{iGlYG-Al=})e-Fko< zVsB+)u8&5-(54#Lv|1F0>vZBcc6Eu4pTprmt2NNm(}PxPU}4HjQ+qXOsVmXPq)=X7 zNnf8CpHEy#H<<*cryb~YMyc-s=d`-Iii>aliT^SQbPU@`D@?;Z=0v{f-+AV8BChdX zNQ9}GWBA5YXb~X)0s?p&XOvAZy`(`?=L{JQiFX)pycLzC@3v`%k#0Nsg8>s zjUbcJ)xMuZV>~0)<)a7XC6&@~mSzSD0EETDXMmiPNZ!g$92n;5efv55njcuk8?a2e zI8r-~d9MiI0`wwTLOBuJcaiEHK+*RSnHyH}xW6zOJ+Mg-fN-gzbzuC@pEsk^=@0}# z%7q^&idI=EQp}2q@@YTYiF4A6KHbRs?)-4bc)ia*UQJC6u))XfWBa+h?+8;F{xp;Z zgS4u>I6Bz@w00in*~trhE?J~Gg@pxDsERJ^xH%Ss*i{5U5NTXXOo|}C7tgOn=5>w| z9%aPm^ROmg0GW*EfBHNA<#QkBk$<^^gv=F8+AnZn_)kQvf-+$xj3O=!-vIGz=iIHkmRz9ee zDAdVPCZp^Z!$?TXVSo2-Nr!N|)`X?U%&)%kQ`)}&Q_dx7+4<2=E;~OZo45XB=X;3- zB1&HOQzqC`F3spxz+xuoQDcCllX#ncNN!`I9b&=IhCc z&PKTmrD$k=m?8HFBQYwDDhC*HH!%_u$#9Aaa1g#mU`u2&w`Ap0Q6Q#YtU1?Bdsh=H zX2;NbrkEswh;cU$-uppPUOvPzhz*5Q@ zUf3gs@$(9X(3#>`h>PRt!AoSQl1b04q_?Arz7f&U4hWYQTUw$B7A(W!`@Rt*VY9_z zrYy$D#fbrS-nE08n&5XUDsKq+J(fKL7A7Jn_pG;#p5` zRT|fQ;{>)Y3n%1%L9PfRzo22I+=Z(| z4T9Cr~GNd8K8Jlrxh=+QX@dNTqC%h5^7b>1H}3nn#~HM9n!1HRoj9 z7H^Q7VoGFfQ(QL#l>R8Z!v#7u(I58qM43pkrETg&;~$Zp+uLF ze!Int3ge=`i2FbE>|x%2ow#z}HRZt+*!mtnzXIlQ+CU};pNGo>7x?*CKgXo~0*^f` z0tB5&gDNH!K@gZ3i$F*bsQ5^wbUrv74ry*4|NbN5HDMnLjt#*%Tv&h~9NxAX^e) zc(;#7&>7Q!&o>V;8Eic$+6;(Mg%!psma_p*CE-~WSS%K_C2Tf00z+$|7ZBQEPc*{2{ce7B+<+ zWM*8>?9qMb4e?Z0i~C&+9Ii%R0+@B#i8szN7nX4b}DDvMz}lW+t}u&h@Hv8 z=A0tlorX?lB&yqlrpJVP>I`!|3A9D@(5tRv)218H=?r9N7qWZrPYFvcW8zF5xoMlR z+lO#Crm@?Hn4cF#)IB{tWM*b!GMT8Zu96&Su~tFQ>2^4#Nlq>y;2@@@32gD1vDE&F zyUHuM%Vp-cYaVx!kFz>~h~m$3%3s<0_@BiHL|XJ913fynD^$P)Cq8$VGb@$L$~fx0a6p;Psk$xz($7HO7CT@8K=b;US-j3!tdrpk3{Rqr z&&KO?6FsM=D9*r?t)CIs5b`kjJGx(&tS^%|pfDOy6y;0b zHJJoXA+F-O7{o;ckjKuucSsS2>{x~L`8CDs+4sb5Zub{pe5?Nat?lO8dg)oQY^@Yv zA!3juArv5(HVe`?F9rxzRaLaLwb9hn2!MSK?44$Ab*nk@lb_SI2<(|m0%2kB{geCb4CksJ$1rQ=-dn?IZ!s|EPN#PrfQ6J)ajg1AYKhi{^WvMQiB1T|?uY{2TIM~o zB&THJwT|*RlNc>$7+{*A$_ln*tszCJ#$*yW{+D|0zke6c{{C^Mhs_Y5j7xJ7G@#p@ z#!zn?prpHPl&wkGSb^~4r$RCr!Ie6MgoqTf&b-E*w>(72`cfX;aXo8Sms6Q5E}#W; zZvd|I-H^2DJ@FTOKIpjQM&S|s-{P7M?^XY=wg3LMVljGL z^!8f&J#H75mExKEF0E}rME7nUFE=BCw)Rj?Vq3daI`-AF6fG9+MH^QzZiz(@R#97Z zp3;ioL(XFz#CfJEc)S_V*LI*ckWzR z^UCoWCdZ;#BZ!P_7ouaEpP$dZeJ_xstfRLxifC;F3#*mHOc!;u!FPV zMJP{%)_d^TVo~SJ5v>g;DKq*C-GjoYW3Fxn*g~zWgO{d`K=bm{r9i>Bhuf=gcDJ$l z@Jj&v%T2dXSX{ufF9gRjV2VgRaSmvmdq!PiEvuE2G>wF>ZDaT)D9w&i?Jps z`O?l0Q(Ya5Mnvk3B&DR2UsR08?cws7QKp^o9Qb-IKWpklktFB2H$)E8xW^58F-wd* z<9e?AML}B{Nl`7S_H2(T;2;H%2raWMFaet)4wCAmpq+;~__wSP4FGpXR858MC z`d9(A`UuBT{|DR91m3Yovg7hF%*0^p9i~K8ip@F2s@Nha`rsXmMm1E(c!Y)H>etaI zikPsy!I&|ZO`CRLw~N0I?wOvGSGl^}Wn-*F5r!P4xRC5QF2rgvnr_=P23n3p{Cync<8+EfrK zuZSK59&%Qz=+Fi-k1ZA^L$EG{$s|x-Ude@szjdNU#9wL(=LjM>&vwDmx@>!Wv9ISovHtxqo#TzIp4pv-lYODufaG)DvLZiSMVag91 zu5M0mdu(nJ~pk3lxFOy#$>4`;vp9X=FzY|GgZ8c_Zr@r<)ieNi zef&CR9ChgRbI8;h;)X0V&)aEjzCcn|w75Dn42G;|blQ0EQ&H=x&W9lA^Bn>ic@E;I zR#2o*fy5F%`9JrEjNj?{dStTC@WlS3G|wbpIZ;nkm<|27cM*7i3~f9Cse`9di_{?7L>=SRb8FR7Em z^m3)G-Xsut!H7<0lpe?+I+ZW{?^j8QP?K9=!ekOi^V2hg+)B#E+VEOO@y(jqx?bQ< zN2iHc`4Hc^?tQH5zRbobc;D@JOXpAj?x*=i%ePT1c*FuzXGSrr9puc~Irh{+>MuIT ziZXI^osPKNNXGl;@g+NuXNcK7zZo7pWZ~QO~N;C2{h@>(7bDT@*bqnFM-z%)mU~{`UWb^wVN7bLoz;b3Xr4tpe3Z5t3O_)+ddR70W z8oD|TaJp6m5CB`R-$lXtjc@z@TvAd7GN>8oLlA@z;2W^AMGG@avm^nWboZlJZ=}+n zi3woWw%d@&WE2;dO2^;-yWQOW@m+8E{5V@%FZSo)GpxwXq^o_ubeym;H;@@}Y`HQ4 z&zzN%q-ctZOO^!)frtXYm{SA@<2obrBXM{-FELqlHy(R1jdUa$j+wiG4kkH=L5QY! zhgjUtV4ub-6YpUal`_&2!RSP~&jCEwspYl!m5jaS;f|bFnL%Jol}6jh2dUha&)Aq9 zf8rtOoL*d&yKc&kXUNKlu2xQVx6-JE*Jn@htAkTG%~sU6z7I$BQK=RJh!vIp_i!d7 ziG8%s9mj{is&a;&&lgny@TFfpEFSb`e@DL!t#$1PwK25Sb>QxRg#{(AfBq=fe=T&u zBmf>{1hOi=H~xud&L%|$0>xj8){AqTr25VNAw(rb)U9 z1}H_&GfgOrM)GwsTr;73TR{-Gd)sztrF6jM;Kb=yxFIH&C;s%q5J!ER4;B^x_HufD zi2umnPJ(Y5oobqz(`Tu=@CK)U{xqu#(~(8Rpf_sJPj{1O&|vPf^2q-@3Bal?adZri z;2F}P)P}Qmr}(s(vAY==jc0Tuk@*WVXw44dC_%|^NVx6y|8XbzMJ0q8*t2JMh=3Y`(UY_^f#hT@3kz`IsTXEZS5i~+JSLOC`N>Os zB`=e`u4GJW#R$a2L@&PaUY;2=!ys&#bmJSZ=k|nqmIVibAP}wb(pXXQhuHU}pCHo&&Wltcwu}7_L=V=E&k?3eALG;`(<>lh%ZBwscvrT}c1_(6~w5AYEJh$I>tAA|7^CUN`7>mWs z=+s4`l<_pSiWT!3YJb4X2PTM(6&>p>*WV97LCMCydjAe^F9JD- zuT|QwYjzf0Y!=Z3ROHX5!xAlb#}Q*&**3{gH+)B8FRLC`rHx5bw)ZS(-@Og zU^j~3?0rcV60C!`(a_In048aacKx9*Zf5PKPf@f<)P(%;6Fa~pW+mHbsHW#NGfq8J z`NTBO>3QP!(sO}Juq7Xam`ZAgDkv-rrp$fz_m6Y)%{$58P$|*V0@1$ODJyZ8CRsla z%lE9$O5+Qn20?wZn9(m#55Z#{6c>NaH1V&4zvWZj%~A%ytv#!-9qXh0=`*Y-jOF2{ z9_7RTAyQD+l;ugUf%hN+h^3kZK&p0L^W;8`{N`n@dvGTJ>&i;sRsUo;3q}au{{CB9 zI;D+&%lEHs|L1I%Gz{15pKojO1zOw8$Yen+!QW~DZY%_A8-PD@pq)dtu~-xxtMuf$ z>(F^+OnAKvj4l8$G(RMX?=mk8Qm`VE!2qSmU}Ac7gi$6K2PVw1s49XEki}w__`)Z; z+xTJAQDRfYT=-#O;)(d}rw@@6H%LuOH)HM&Ji`jkU4D#2V?3)1)9LN$K(C)8(V(HR zy&bc~%4Cd*SmP-6;So^6%8l_vYsD0HKCg^0XEJjOP=7*=%@&U#H;VMw910@izyOzL z+lgZmmpPb8rlO)!tc>~&$9sKgDeFtc2UlZ515fNf3S`nWFe&LCR^~Za@W_a+JWsmK zuYEw&J~+nQjPwLkwl3B^hz}$q;3Hos#h9~^A1Mw<)FnlR5m`YrGu;h@>y*@tIw{az zr25s}q$NU4O>p%&V7Uc3j7(HYR3d=PvU1*6R6@;x=V+@FA3#&qImiO{myWS#t%g~( zIBz|t_mg3BaX5SqHm`&6UiuQ_3DXo2kQ{7Up~Ta06nV~L?`SLoX0eE?!Xf5cxZ-mK z?na7YhA95*9TJdhYOLpB%SjZ*1f0zl>9b=pCEjT{5s{h9bgQuRS#U+SV-Q-{xWgDC zo?gt62JzeoL?6s%(J2kkmuAMm7S+wMBH93@*S918U$dTTh5{}moAnrx3dYbmJs z5FHJt(8msAG8q}~TmBrq*xA5LxsjThD(O5)j5kQfnpg zaitnDb2coNd8(`3$f8H22*Of;z#=A-_u?CLg-_zOP9tMC#T7R(DQlsk{4OG8$?QM+ zEFb&N(A1$@vhwlGTBxXafKA3~T%Be>OvnJx+YY@QP-_RGz^W3ks_q8NA$pdh&pyu0 zcZ&01O;F`sSl&&{^eUO-NJrCdYC@W*ixH$bNeg`bj{GYC}Au z19pD-`!hsq!%=G^BybRypG@Ca8cA7mQsf|37e)Q?2rMI_vr?22M{$k;pGQv7nq0}5 z4A?i0eEEv;v{=Nv<$uq0usF|nV?zUbUwjRj=3~5KUV+ja&^N%MJ;HF&YTL- zJ!pL$Tyo{&6>^B~uBX$rnjGaS65~zeC|8o7vIX;w*bwTHs<4oW=4K#{1_v}S&PuI; z4|onS-)%>cazA%yGnqYnj6a_5m45HkxR?7L{v!YTv9Hr!*n)XvglDR&nfyp0!cXcL zJko)Cdm#&>9>!&IsVa4^1}S17FIk%R8+?O%7#+2une1ddF6WBvSF?=u!RU_92V2U5 z+5bIG8*)`>7Ls3o=ix=4U$Q#2#8ibvG#`3}(Vh`((_X|((sA7J!MmvYQybgwT1B_* zF#6b)^w}C1ow`VMwH!eZ@cBd#5lDp!Vn(I_eJK~wd00$ex*-2g^tthzK7X2+`0Nn+ zQouBB6Y*}<6KGEiMCKb)h()|L@-(0fIF*ymK}X8B5H%?DW|hn047Da1iMK zNc9kcAdnbuAh#e#8t28)s-*y;;nWYX4NY+T_0R|eh*^;G%kntGFmNSs4%pHN!d?kvmtd-7VF`rCOUa(ZuMIN1OV?P@wKFEHS1J9qLPZ)@kNp5XR)Z*wyl&`cJ~uO zLdg7`cGcsVcvU(w&bfJ_Bk+Z~q;*&s7s2l_epcsrruF^xh3Z+KCGdDuF z`83<|wsC%@ik-K9k~0k_C@dAzTo;rEpG{}$>M16dH-B@8{^NS~{$w93W6FqHJ%vV@ zLhg!_}-A|axbwz>{R>ue+_Q#kvTI>ww;oXlH^ zsVI%Kq7v4W{k1|Z%iD6-jv~^)jJ4)1{gt;ekJI)yfA^aGbL?7#;s1~otjnRb?Nyqa zTKu&VLanK>o~rg%Iv)KhQ!3B0wGE_j=`vwb@$Z97JlTXom59Pyt6yn&!`~wQSDH$80g9B3U}VAPDsJnfdIu zzesym6FSv29+^OXVLE!B1>0C3GPQ<`GCeQ9SWk7c2o97exO8b0UCgXRDFTsJWFE;v zA3cGyUCVR(D*+K4B#ou8eKi!{eI+>fYgSj?CUJo;_g<7%8~wZeA!URixt2Avb7;-~E%ddB#plk?zQ#qP zi#E$y7*K%M6GB~DS}^Y7#UV}&p?y9Jyrn(AG{{XX>r*LSZ7}$4#|Fk{I z+_;w4s?HZ(NxUD zeCn#&D63daS!F(Z_V_3-ujJQH{0N;8PxQ(W+Rd-PY$Bsm7p2s(_us!u3ezs7FI87p z5#=>A>#}1?5ttc2!c6Kpo@06Xl2=T>a)nteX4=m6b7#T>T%d`Ib4{4tuaHs{kHs1z zeJ()J8W^5nXflFNe;}UCrR${e3-md#`fjyau~-I~n{yKx89`c_5b}Eh0KzNxaNSLn z$XqY7dZdkl4?f6aCnKZ?#KL$l$1lFYmWe*{g>}dh(nB&ArFsXXsKh<`zW{zZiqS}n z<1!T$B6T9b5BK@N>jk;LsJBSN$)viviv9av2pO9Ra~!wsDwKfMBdhgda)qX*Ag6no z=h^KKd~DgV{#z_csbywd&dj(OA#ViRR6jD?h^XNhnx>{kbl^|7)P+Q>0;2V$0HUIz zl2?xGyCMRSmz|1Fkw{1P9GyK)Ku}X*=`*7dlB9NDpP2xW&}0%Qn1~^NjUsRj+}FAr&eMLTnYlltA$&wcTY>9(W637!M*I2D z`t?*-SFxrnFC-~KYh62+PB$`mB$kUB7w$J-qUHJLut&u*v-ADz{LH^|a^H8EoPo<7 zRv!4yPkAd_dR-}0dWn9voUihBOrg^ML)aA8?7cIE&*wvi3?DugX&jckUfcd|Z$H~m zkLA>HaaMdjNpAqb$bl*=A5VTf7p(m#v|?=o@TW0d1QY_VfmCg4VvQ6euVQdy5PgJ} zjDkX@?KVc^RZuyP!S156vQly$0uS@fljk_|t%Jk@^=&U>*M;HBPXtvoC%W6HKG)54 z=omN0Vm6C;t55hdC~7z@%8=n@sCYNVd6|2aTH5Wq4M%do`2=Y+xq_7 z-5xMgTmdml$wR)ZyWowRW1? zYH`|oSQBf+GCGW1T}pK9B$M8C_+omIX)*~@rZX-kFG5lBiMIs~u4cYvC`2LPz@PS0 zrb*}H1(A>zNrEa&5^pZ0=g4God_HeTIK1)qr)hbkhMGTgBG;;z9-Zg>FE8Qw??e=a zBysg`(2Bw!UK4W*gM8(`@20FWC>9O84@42nW;0Prttj@btmFp`RXp+N_sBmNLzq&e zFD({Nr=}4;s*@D$VD(CkjW(Aa=G~74<8G0Vtu}#=Hn_RWp*%AQO7_z(Yq$z)!Z*DcQH za@XnKcKt4A8oh@6EjJSu7Ea5l*U-f0p^FvITOlus^UeLJy;dSUS=7{+u~-D@yH^7c zpL*a6A2HHIc9y5>{WrZB0j~bg{PV_GNqOL#&GuHy=k$`!j&3K`6RK zOp%*)!%7@uI%dYSdW72RnD}l=k)A?|z4}vW-_1*IP_6>hh?h&j+FlUe~zz z8W|~SjdTh;4X*+4iOM`c!Gr((y^!(8hcx~`2v7m>`gJn~J|C~X@GMEuN-j3;!P5sR zl~pKnAURCbEO`AHUi(I%uM-|SQp~tx9jcr2d7=6!hgy|5yW3D#YzGjd3VwjFID!y( z{n+K-^67=mDBY9X9k-6A;V90GClMAeAk(B1KGzNx%~#9>h{Zo+Rte~Q3q+NQi4%r< zX0W-=60HsAr%!&A=!9_eFN)XgZMS?5A5c`f86U8&RD8~zKhuPJD3l{tT)$U2Cg2*$)Y7c1?_b;g&)F_T7y?Cd z0vGL-uh+J}tK0qapomPwX&a*U#1R5Et%*UkN?ZX^Ws2O%sFN)WcGQakx0nP89IQ)U zgV#PvhtWuh!^gIj#mtQiA|&WAPdTIqmd}@sAP7A9{0n^J8((2L6N*WXV(VmTk#Xj$ zy66N?uoKgioh6u+;tC^`%I7=5lPpGj`&C| z_x#{)5|?TD;JptC2=>EneG}hd2eLLfzM;#p`wwBC?7(WRL~+d(LKr|c$8ypje(YC+cK&m>9lCf@nqF z;GMpViRuPSO$N%7e#5Z$QoQ`%By_?d9>Z=OL=g~;eR2Tja68{h5T4_^xBp@OJe_C! z=ZaJ$3=UFX zE2TVk)@}-ipGL_EAxvGzMr4*{hG_c@Ok#X*#Gb8mwmEl_2TwR+d7@BjN636 zQODB7Ntn$>@#7ym4SiE`Disp!x@PqI_F{HL6qZ>)UR}@njH?(o4YF7ri{2(<15k>A z{ADRPm!^=Is9|E{LyC&DVt%$n0zs)U;{V-nhamj_$f;(cqAp>`Foa4Gi8de^b7(L9 z&HZ#(d{KIj;id2)G+fBfwi|?E;-VrgJzP4PEJmJi3LFPlr>%l0 z$Vp#DPJaHpalz^QLdSWolop>x?&H!zTzQmVLifBP{&;75oF8f655pTKS%Kt?38wlJhtIji4& zhO2J8hd0{{ly%n-HW?1SaCOk-d|V)<(RLPvS`C(I%q0f^nCh&?n`%OrdNFjcmYHzD zfO7g@c!5(%C67Vs6C$2NNX6-7$Dv4Kl>yFdCQovnJ76T zD1`3fX?IG>To3!)=)*mC{+Pf0=`jK$HDdbGnTaZLSA2y*!#J8)4ey_Lnfre7sE6V$ z^AF*#ubgz?{Lt&_!$xt1qjXT z>~xx%nrLcj5(;K*W?uR53A|Lp7{`0)AG8o=^CjxEf{EbsBS?Lkd=c-lTjoZ!&N+$4 z?=x}=Z~|#rIXHn+l_yz|kV)N%k65%$Wj1J zO-)GT15}*ak9YbqN*aS;GL#netzd-9WG^!_Q7jz5tBaZ8HqM7A^{p#&x%1n%edcxC zEytU6eD`m^B_kEq(N!>?nI`>?bi1)JPNb4)qi1_4>Bc3g-?M5V|9@Sln#&NqvZJ~KhG zP!7EJ21_z8$PiyHI)592eh3k+hl&lGa>w=E~$7r={0IhJJ{t-g$ zigi#h96rZ)+AY~DSAOB&`HS0s-B$MLp4E%nFJqgzawQ);@j6ofWbCGHvNM*Vh!j#E zjvOgQH8jrKU*E#EZQJPaj%QI|AXC0?qt|Olh~7w)+?V`R0R^O}NXx{im8<~^TCL!v zaykXlp@|VI07vTuH8Gskc8~C_sf~7sRT-G0e z%3Dsz^axAi12B5G(`kU%tWjQg_7#Zs;kEsHF~#I_rlARyqK%FSC24*MtXh;z&H}~A zbLC$-&ap{LIIEi^7*7b*ans-hL>NBXwl6G@;^O`MIHyQFPxU|cU>)p3@zu*Ql@@~} z8D+vGM@ovh^|mea#V+B04b38hvU5UDLGa72FuUM2cT5h>BQ?AGo~I}((h}#|ufcYj z(~h&0bxvbGorsTG19ESWdlT}V@602N^H!^o1?&UBzj+^FlioBZf5pRim}eZgiWTMI z3j9ZeoLeuiDIkTlaSBWURvvroF}`!vy|kP_9N)UqGMdXzlajxj7w>q1WmhENH>M)( zQXzt-*Xt>o9WrpvV4v*w@TTuL{7VW}rt$dWk8$no0s@Fz(GMDuGSJs2GN}Ue=`B3{ z*irua_)e_!lC!Fi_|;O>d7(V^!+RO%74EB}L+@c&FektE-1$vil7n8a=lZXwP*kKP z>8>l-5NO2DCm6}#0LHPi==DiRBzQoeI-Ou|+>322oi!V8r{qX6e)x#I2M^z~nPqB~ zn7ZRuypNaF&YSnSvb($shkpR6OLAG4p2EGi%tD(2aO*~ji}OWe0T2~Pjb;loGeRyr z2nK}BW+O0A!K<%sL$BAfZryA;k-!bn!ip7zn9V{It-XELIGCHp($OI}J^Ul1@sErq zcF|&9E_;u<-ddter$7gh$pOg2y^&9PlbgO8zds3$T z7#$}q?@9t3dXGzU=dsT<5Og{rP4rv?p{lA>B{Gs4qifD z@EBdgoPM;~usn?S}zyHnkI#9D-6>gVO0_Q9%bFAnL`8WQp(8 z+?36b^_zJ0wV%2ibJHSF2!JBo2R}(Lqs`t#M5GWKlZ3y-#LR?|w7d+ zTIR}o@4vy<$q^$5(j}|d{@PxSxUkSAy{GYY22(veirSfhZKRRSSNe13cWxK2>(q&p zT<)-Pd6I;(@(D~&TQLEPfJr~dyJ`t?AAbh=oE)n$5T??g3=2fk-oXQx{Sb*{hM#qv zBy&Q}owwXBYEN6YKL-*CcYgDZFKvA7mdVK&<&8=VPc>-#Obch<;F>8p9UXcc#uBo_8)@oR;qTMOv{yQI z>%f9aqkuVI%%t}Koio);`uJioO`-5(ZB@ZrB7dtwWbDHY#bps-i&>0*b{Xr zC5?^82RYh*45`0RMD3fonb8jqGh_8Z86HE(Xd}y)r_tbDgDOQRZXFn(5U*usW*n1A znB#5Rwh@;fMU+9#Yfn6nZhHlht7Fi8(800rKJ>LS9*rD zf>cpy_BhcwzmH8y5y#!FL=Q=Px$nVe!Re%~suY|~>T7pl?Cm5XNJw9DD{EP|{fXZC z5&**eB@}MF9fPhIy+%Xf#x1Y3A|AA6xL4rQ-%p zRSt9A#;Zxo$`QwJ^5C1KL@ed0KfXsz`7w05Qku_}(cg9oV&QUs8E*ky6Q9OwynuWW z@9`IWo{Zc=a5@E;SEmys-#}MYLG6i;2n~tD+-+yTCKwQJzyF+=!eksfOL1|r2ZXE9 z%Zr4FKuqIiZo6#@kKDeVnJx)N=K#-_%qq=pLvyZypwS3Xi3>3h<~j%*Z66~EO~lVq z22y`+&@SQI-@1pbe|wg$UUPoE_Pef`oO# zGthM66vn0=91SCc1qCu5lzPb&VH8zWiwEX#r0}!ZkrKo9v5|8_IvwIH@4zuU)Phj_w5vYtLHZh5` zoV-sQud1@L*#rFt=v^1L7rvDt5v)U}`(?e@{CS?5*4f#=o}7XhtDwVd_;FN|JZIGymDeVsh|)IDU!29uo} z3q9@Jq+P)i58Qzh_~CaSMR%qbFhR76knw(M-x%cGnP=&*XkwzKi@6d7WCRH45Uu{L z3>P+VthI&y77NKi*{B?9l5HcHjYskIhtfkY5E7S#wV@hZ-W>P+Zf`s)u#kS)BHX#lGZ#*^1vvS%|gi9jgTXAr6+yV_B0wzB3_}xcmWD&5EIRlELs{u ze~U#Vi<33=VlvCI>Khqxp?jZVWL35%T!ob@3f zFoEhuJ?p-Dy9kx&F8mEiN#jpX{tQK!gAU6SySG;}JS+w0EDDrkau7miPrEK-PBh^H z#eGY^dR3^OI5q)?ckM+Inn;|ZhlF4sqNFnvWu&0j>*=*ZZ=;@R+Z4&k$(V-*DJ(1` zK3)R|3aOi!x}>C-<_aSzk)gDd9uXClW%;W-t|2Rb4cYl?Z~{ACcp4g8`8?vDgP%Y0 z4X(T9ew;v7-s;cw{<`ISDM??%`jD2BCn#2~~Zp z1Isj08kz+*>VzQ;zKe@kp;Yq9E88gCcst!694FElG0#8%#0Y{dCXII+Mu8=tXdpHJHVXk*Q zYiZfJNPx=9GW@c#2&>d%9Ph?5WcOe~F9=i->k}v%5xyb4Fb001saS{4%o>UQ5#l=^ z>F+~J*-=``j*4}B%kozt0hYUoQC;I9^NS#e@&73O>tg%U+cKO^p)to&cAm2$T3)kD5EF%CVrH^nj3HV{j7!PJ|9j_ohT*NJO*A-1R5Jr4hp;sD(^_zpF4=kJCfvp zS=Qf7c{+X5{q#)@;1?4_Y-B1YK6IkY?PF1aHv{HAq8sz+uGXQ?#Y0#y&AiKKNP0U7G~(>%FH%j*aj!!Dv_( zHA1-kICw#7#0Fxs)A3ftbM2MaipO~Mg_mhOP=iHkq(OHYN!D^~i`VdA=oAScA}$%i ze7P~bP+WdWN{X2>bh5--VCQ}7ng3;3Ug4}q@*Hn%TtF}vD(Qs+I*i^>!81FzU>TZ* zr$M96W79SFgVQM(5PbUk{b}OF`A@G;wI>B*_nntN0H9B2Bv9>-(PxZdxs1^zYbbAN zLK2$DFkLV42Xmc3?%A-7=gjv6+y7Yq){~>pN$~Q@Tmqu zc5E=&HUl|7xQ^VsIccM=>(9zv<$51n_xDL-HfKIRZG0-L%BgOw!#g~Zm%1yUTUh5J z2gXpE{K0oNav)Qy1;R9`l*x*6SBjBPlb}gRK^3S1vy-PE5@14Ket8=a(@V*_;*#^e zpa0DFrMjX9P>6kY>mYLf^@7oKzV&0y{xZi5NF>~Q^#=Am^**_BHK%qQ1WO%J)t0hU-*Wqf>YTjPo-~qfSvJ;WHbtE<7j0+-qSO5J$ZmG4#2g3^mPyL z&R?HlQGNz13JYB4cVagPwywebw&$v{GI9zE#D2F&s;<18;+OVN$2Qg_Y(THqlaO#b0h&ko@adZ<&|JaV zyngmH1u|`D=dEX-#L_rONTT4u)jxL-5DbGjz4C_aZ9|CIdIQJTwUjLKLB+Lr<)a zf~Gz1Q&glCy*jJZCA6O@CQczh0JlKp{HCQ*@1vuhQ53hOn-a%0h@RMt1}(33~0v4pWU&Km%2-fZEw(<$WP z>-Bo1Y9%v$M)Z0;Q+-|R`McneG!7bw`^=$h+j>I;3+=!4^{oJGZ#aV8U_?=*g~8c^ z2*2zc3R}V{TzNIcwXflqoikg1AeCZ%?_FeSHQ!eh^B04FoOI2!98LOi5!j=oq!?v% zEI-@%qxnvOFY5cfz;olAnG)Vr*BG3;|6I0b>$H>pT7gtDB2Y@1u?M-Y7Y>^WUrflz zMh4jEJvW`9yNLcho%NpfAQ>4ZFe#bB zIl0JduaQuFyp(5ubrijPCE?MhXg?FqifDn9N|o)vhLJO;&QjlSmV~evG4f!ktzmtp zf~Wq^-K@QI3mG{DWG`94j^Spin@)M;n11h%KV?N=Gc#+VKG-({yx{z|kfE6d45sMrv3c=1ZjxL`0|L>IG+c{UxE3#mkSFgS8O`D}f9eNpBDCmSNeJ?#J2VlmQ9)6f1S%T@ zk5k8h@cV?w79y0x$Q}MDmI?}8;!He}h%u3E+E2G1U*DT}vGE?-hlG!VButC7rUvh% zMS}6*W)RQH63OBK>}n_GjorNe?lv6Pry>hfQ&8wxTn<73W?I@T2ZBTbT`gwp!Gk14 z&acmyp6v5z%lsoqTj{s({4mQy;^rk0<&&O|IX`oI$((Kv>O%9sfCQPms4Xqy<7eKd z>~tggZDqXFGsU9eFxr*|V485^Y!p2E?I}x%4HdkS0lwh`_>POmNl4JZ@rDJ@v5>f< zE^hhdD|_+sLNpL0p@~Q)oA}x0O+5U^AF*yl3P1eee{;qskv2yNLtKl*mPkKx=*wf- zKotYV5YpDx5g-}#z>R<6>6=Bby{=zMWJoMSwi$Br^U2A}W9#3ZrF~x~bv^!!OZquh zR?Dw;x3D(Oo3-ge5%${j6b@EYa>uP(a5~}HC!Y}wiC15L34wXy^NV?C3X5r)sAM_v zaBuP1mWO$xUKT*>@d}=J`eq`gmJlFS^7DtUpN&A|uQ~7h+Ru3oKWTlaEh`t>=Nbsp z3729v7S9?8!85FlTg=y1q)?Qx*|Sjn95Ht3P$#94nz@wtcnxJ`C%NaFzvs0N_i?wb zpUOx%Z7wKYiBg8WOfV4L00r?uJ`~0D6aUq0EPeG@Y)&R@HYP_u;I}_}gP$F zhp#S8A|qczHa_^FT2 z{}cN~lq9EQ))Jn(;-ZrNu%z&#|U@WYIw&k?^B;o+AB_n!i2phYLD> z^=aW4&Xw0Oxgwgiao#wGdx?*L-ti6yPor}Hj#lUaa2QKir7mV>0?w8{&KegrfWrvK zbb_&veDz_x0yH9#Q$S=iS8TqK=bm~-^sqY?$g7^Nd>+Tx6nCs&jwB&~?DWm#<>ymb zUe0s74^Z75Nkc!#!{o#d?T|rYBA}VX2sAQA7ilp=o5*y_ikYSZph? z`i8)%dXa5fvGHrzd%6Lz*3_`rhwRezG5^(SequVRB_+BNPv4(<}h z%?)d+(#ZMs|M|KILEF)x7jwtG17eso)j;TS@m?2tKIVEz<{1lfe!tN35w~bD$6Iu) zPEHd&W2=(W`ADZ@?)q3)T1G~}O4?7hvNSjri_V+Z+fVTNODBl8W^?CLyI3@6qoaG8 zrC+-qo~_^8#BE>y3ZZvj&ChS0#oV{q#Ll2u zJT8%r@J;Oow(hUzgOa0EcaP%bH$}>l6?1(eXti3#o4e^bSt4HN`HG(1gmVkYEthWP zgF{c!P*#f7Cm5MJf)qgy#y{AbMJt86o(b9*_BCNPO$&w)pn2EL_MSQ~{X*ui!agY& z-wUlTHD%>UfITh)p}#i}g>N6z3726u9-cK2Z0)Q~UCh@rQdqa*lMRG(#b7WIsMn)* z@e@4oz(cfERCxSmW~iO1(?0_Q10f;U2jUcLefT~x*Bqdv#7Bg4?dZ@G5MdJ8ruXfB z7=WW63j??A(k(basLh%4{>&AjZovyALfXko|JX%i(-}HjduTOv(_NV4L6SDNP}yCF zAd-%@v}0}7vCCkf%O+zUkOMIlDsJ{HNfb5l8 zu#SJVe)CBvNirlnlyeV?WlH*M2e8iI5tMnF+5IKm!9u^?>;`*)Ay&g0&H>-OiEvH612 zNp))v)!l+J6QB_oopYsw#0P1xkCqT0Sw!hLNbnI5P9jTC4HvU$1GJr)H4fa;IUuy} zc*5y|RNV$Za=|(-cVWBZbmEvCMCKPc4wp~yNWX|$c?7~of!!)whth=MA;4(A)Ex&G!gsPjU3Z^ujMYN}v#7W3cB z3)U25Qqf!i&Y5|sI1A0sTn$pDQi;k32K3UGxStWyNZ!F>Qg!di-V9+KIXqozD;FGuD@q1ePs3|QYb7ej? zW#wW7!EGRz&1R;fLNNQ7sPqj$Vrvr(gf(fK(Pn=3;&iu|Ou{og*I+tZQ7J^FbV5`& zCNzLM)~i{anM!y2SpuY9m<-)?bm)2Im2D!!bWxF3G#1X(H4+f)=K`1~Q7 zF^tVi3DpQ*PmM-HXQ!S`8#jqwZYMcx-F<*#Qw4;!?Zi7|oT$aY1P7kQ#)M!zw1*Mk zBPTK|oJgFMpZFvDc8}00Q4$6o=SL!;e!P=RiDsTfTvb^{cJ4|fKz-$Lx*Cq*1jh77 z35k;vv8QBlGA%L>K&uXTCC|GWSP zLHNGq5&nDIui5$C7dgE8BiavjF*fcXCn1@J1{+qq@xAgoYW*|tJ+^bfx(9iNf`p$R+OkJokB&hJ_2~=sPEkDLUHY_v;?Hm0Omr z+d4gJ+q9@ZsQ;!LF0+qw1705eYni^|M++f z9Tp=s%{u<}fWXM>MscYsFXy@4hma^#)L(ut(w1gSfr;#H4<&?7@pw^*xyU11U9|%? zEJM@y@h-u^&}&k#{l!3*rx%i)x0<|_LTyrRem;`>1eBPn`UW0)vXsFgDL?)M8$qQB zIDe;0=6=rrQZ<>}d9&cb-1f>-Y`66jt8Zj@rj~)0XlyCLL?z2Tj$wLlp(6_l@}NY* z_Fw;rtr2SoFn2MPumOv)gszAPhHPF)R2f|9--FY8l>5GM4d4CdriBi6LE`>ayHTvF zGJj4XhV%Yjlc1r@Ho`sMxg967JP;tDFa<s#i3mgcLaJ}c1lqZ^vpbp zUav={R?wA!$v{*SCE61 z9)@h)SSiPkXnct#m|Q~0qd&Wx(Txs*w>mlB6w3?}h!*B1vB*p`QoIIxDF{?CF>Rsf zav=?Du5r*^yn{7M(nXkEcX9ITjYHhIT*Lm8hgd3K!tj((Kavq3guPYXkzy@`UNwZ- z5sGN6|Vhfl(Tc@83(Tj}OMSW=2$j zSgY&Fz2yOn?UpnKAg8h%xC{f6rktLZAj>1FCQs zi$#xE+Zn-NaHk@5+qEREDPsMm$5`xwqTH!FNu@%v;CKTb1ZJ*D6Z`+PZH&xa%G!n{?EV8F=VS zG5$-^*uDLEmPq5sDavHgA`NLPQ~9{XGu^^-Bo-c@g~Z<5>+$>aAT@P8E!4~*k;{8} zfO{KukW@WN%(wqQP;CRl0Rgo3+K^R!~1LE8W#NbFDJ9Q^XSfXW*t`xr%*CNJQ7(}c`u#XRMUCQljw4}4M?Y97~D8eZh z+_9P)Lz3BEEuiOo{JlT$;oCdNNiSq(LQkw$2_+?ui)&`TB%FN{!K_&n%uUHnbPfn> z=rP@+NCGqfywzEZBtRpwl}AOX=H34n(XJ^i2cYuB3i>Su`fCSh43y!QxLAbXbvhj) zDVZFmi+Tuv1jD@x&fDCms9Q#;U{u|M-C#tmPDh~-YM*Qv(Q36gozT~# zAfAjQSStVv1ZIx5s*gT^Z?=EDlmZ}P={33hxW&(sM%xU%3s9t!EcX~lof}uxeKK-g5J|s zk_tnRy9nf*Gc)uzTX0M}Ft%G+{S__$c&(8Txq^5v4I8h$n~c2tf607ZY=7}>+3cS@ zmA{Mae@|NiNPR;W_{A50zTAQW9M%^A@C{7`m*=vkvX)#ILeqsFPojSQv$IyIk z>XEzM)U6`zlDh%$3fJjJ}h>zOA>bz#;E*xBcf|EzS|%>1tQA4E3D z7;VU-R=)=Tt@bNq7KKt=QcU$B0diFEGzrD%ZV7aZ5he}f`QQJD*ADFEjmmnCcA05t zkECN@0BLdxvCaDkkPL{aOYVPB$#N00Rj%;HVl{HQbw4uyX{34~b;&0sg_-ejWGWSb zU;8>vhh0z}#!cAAO$@)kgD@WjC-?4Stf7aa@0M~ZE0&O0Usfgiv8QeRlQ(}nBxFP; z(0Y#A>#k>zFpFT6)tbn`{yN@i`v-kGBY!M!Bqu;dXK)ImSyqN8oERf~k%T59br}Ux zWh}|oqYNi)KpMY+e^zFO+W;X-q|s=^`VD}!ao!yG<1^yl91hsL^C^%0KZ*4jJQYfr zTFoC1zD#0dI8T53Mvp!>iV=MJdXtx*FTTH*UGb3T^(3xmBs!Dfi4lzTZ48Wd5S1Ll zvZ%wDP17t&9-+U*BBn0^q5*N;HTMhGiI>MQ7ph^XFFgbDS=?Qj%ClbOw%fLd-tlXu z6y$`2^VT!}OKScq&bBrJaJsq@MTkE!kxrz6;iLpz$%>_^RKC!~vynoI&tUT`($d_q zwzo7BeC39DC`KN|@(YOj?~(;xV>hv;8_`M)K!OK?l>aVmce)&{2qsfC?|D@JVCCQXT!lkf?;787+xRwdnPFZohpCZ~wW4ZkvsD z>$GSz8ulGHxZwKmS=;XQ;?Q&N(=pah)9V!sjM1CPLft6k^DT+d)$>Z(82vkF6u@=G206sG#L=j+? ztPg}JM3+>_s&F4hA{LQ-)h4p9TKIl53JYA@*}~{kCrfE7ucPK4A7P*J;)?H0VrZN| zy|kB_Jwm$L2fytmDn*WDIGRMM2B~BM`OZAlga(dzJYGdbTI#DSNz2YT@BVJj;7gCyrTCk>NayJ`a}gFjV6(SQW)m0Ngy z>pNIYlUO2Z3BN3xO1*{jd@c1YCunM_CwWB<1tBV)>uw<^O~dMmU^;yCJbYOpM~)P8 zgJU;c(ij-}h$G@zLB$gf<1mG7AEzyZkrfx>wwCr5WLq^uEgYa+_Ces1J z!UA2MMm@fX;V3U(L1uFgl3l|bC~Lw${VJ-uM}@ivsZjS28KOq9baGD7w4I6KUR0~> zNLnU{4{K$hWdf`56r+I&IQ5MT*VG7D>M^k%Y}2yi_1vJnn}LxI1`K@!giq2RWv93( z7e&Zdv6l|v@Dn_A^=AwVKA(>9aqQCq;!u!Lf}bm|JFvx@XP)1N{_iJw@Uj{f_fKQ; z3Sggk5@o?v&{slrRvKQ8I7VZ@i}~qAUZag*ILhahbJL5QaSC8L8jWV2w>Tl#hsPg( z42?#E)w-4?OOibLB@*d8;#Wg42>W4(Eqh940@fQBWN*`9j&lH9yvhKiWJ`e4!QIVD4h@+P_IYsguCDQ9Y0*mTt`ct50?z=fV3cJR#fn=B!XfzeI^ob4z^2l#MzEhi2pvv~1(lsY}Zg#{R!1#iH_ zs14g1E4C>WMcO_bE`LUEBgmqaeEc?yPYDi|q}jd_Cy(7HSO$u@;wpu6u@GeVSGFaU)S^D$1t-j2A&ed)gEnI_6+jsn0db& zp@LEB09d@Fi>$k%#3N`l8Vq59=qp?J>GvPOj%?XQj@4V%DQGC}Km zgUG|ZS-tcwP)fM<+dmeMKda9OQgGenT+~1R-)hT5OI%#hF1G*OZMR}5`BKg&q$Rl( z5Q)Sa2_X55#~bbtJW8b{Itq#ev>6{&JQwJWw<^V!- z?Lyj8-~`>KQB3VoES^ln89GjCmWJWr5SrTbI7W4(ytIoaBLnfWdxIYYC0M9z{4rCEsydf$BvKfc#NIILmX!y zGG%HYP^LmCB?)cmy@lSEmbSFeuXF%9UAS#8ZGmthAp{6b7#fEuP~;(r?bwbJ%aiQH z$D`zVlx)ee_5E=qc}#%Le`Gz6pX05gGjHv)-o4g(U!r0*(9s8~gfzAnN)AhPi->u) zlY&B>w_X7xpwZDGr2}kE&ZI&&#M8ImM_ZdnS($;v*jQGrjO9q#8Si<`SD=km24VpU z3RkmE6GgSDoMy2Ky}pnQTQj--iHAAzz+*h}$d4&5Hh6QE0Waf<$Bvuoyv~5Mew-6e z{|1=LH?M9B%gY9GZVHZjuOh0|=t zU#~}@)6rMeN~W-tzL9nu=>ZIhWlT03nd&g2F3cq2`XA8$=#$h=^;1*r(dv-;PpzA! zCh3n27%yLmuC#-3a|6A-BP90w@j|zgq=M@i=q_O(5afy1AP0uwV~dkLrq${s&f1SL z59hrsECFZLbAY6M5Hi|Cc(@LiYLNSH+jr_N&gw- zp$U+*i6NUn)a(o;eVx#E1>y3A0HU|Witp4}@S6h+%N0Ghw~K^@g)jNsW7j|EB6;@@rHF|Zv^AsbnUF$%#- z`snNIykj>nPVc?owJtVgMha0q9nur}1mkygRRuN8XK9ohqRQ3XdnreIk1F;nwP=~C>+0coCU;-vLU^SOuUKL0xuyxB7^p9BZ z4^d;Y50a6Zizte0noS^M;tV#~6d7wRG@OaX)Meq&;m?wBPO3plSz%$)F^$t~W=kd% z1Qv4Aq6g+U|M%_Ni@n~2qrQ>E_3P;{7_d2KKk@sk)}3Z#s;tLUac%*d(Tqcf9kW{# zK>`S#9yv-C08{v(AbIY2yQ5?QQ!AH!Mv7=1Q}i%J_kt*bLbsJNQyn+$+JGPk9NPC5 z_kQy~NMD;q`PcxzEP4@GK8kRgHjwrpB{$u%W0@m<{QGzR^O8Q&na0C}u?4I47{}jg zX6@&+3ksI!ry9*n&(LeK60u6fcxWRVaxP=EOUcf!eaS13xbQUQj#pkAWa0 zdnXW9t`w+hGO^k%MSr2~&z>rytFerr02kdQzX0IYOn4v{Ua2kQvN#PVY?&C!lthG& z0I)i(jex`OKpW3xw@C(pdm@L2~ayGN!X%eBCVMH z&;5mHA%KqF&Do0uIm0Mcxiu3q}zHZp~O zxSpWo7zWG@$Q^1vdqW{5B?flwl6dA_E(14RcQf@hRdk+jrEg#g>p2@1(MZWz6I<7$ zP+~ku>P@#GlR;vlKw{!<0NUC_KzeC7r}|MbXO>Z4a7j6H?9~p3}vJx4&JXhIB zlf#C6untS3jrhoxB}LN<)uydzU2e)&rJJ&~&W}D-i1(P830wJ$GoGhz%Av{Lieh|_ zDU%WN6F)?es6+RKpYwwwuQK)KQ{-iABDlN@MTLt$Uz^CfDHZCf5n2O-81aq36)-_f zY%&Z?b1vK$dH5AxYSX`$Esh?@lT!#5jf8bbgzCw@6JRrwv34~L4fWsy$Br4e(G42n z6ap5j~%V&^#`O>vH-0HzmW>kqegHIzs42$3S>Rwtj}`NYbl`D^a1O({eVojvo$}G z(9t216mwya6k}a_uFH+zHC2^VH=jkRjpX^VLtZTejb18&A3pLbtA#D(cLm`Tf*80i zf!V|erfRAs(X{?PoSmKCI)qn?Y6uvXYLnz7;hY)(_s@7r<zI8O5iKd}8nvAs;GS*qV074NCM_yZpQ{IL-OW>qMN}ci0 zr?$6?=q4O!dnafCzWd$paNTv=8SU=j$sc|XfX{sH7S^rbu%!R~_wFB}Tbn@NpN6o< z24kwJAjokg{cdGt4?yq~D|<8%KuYloHcQ3I4eIAmxbOMQ)PR>IX>k;Igi|=pW&%~? z=n8wt)-Q}AblE2;AGdJyuHE?fz+3-Y#-V+0@&BGoW2(kTtWv|iy?dFNQX&WfZ|(p6jc>Pm!`%K#83EcPEaDgq z!iR+1xth=qPVlo2PAn)sOh^#CFQLURBLJtxOsqDUgam=zyLSUpwCAK-Z{n$EOZeiG zKSE6m*M3);P5;RoU*mU2?_*N70aJG?*DcxWoGpI-o?P}k_p++8l0CC^R5wL3Ff)R6 z&_R4;i(Btuaq1FFC|hsNzJY4M#Vp3Q5-MZI5XB&nD+t*cA*DiTRSuFTn;BFM zl9G~*$uuW!*U(VE?EXYi^w$2!WU%k8_qpchQeLvsr9nRVHoiG?PNA>=3hcuRnUI`j zGh(}ncA0b@iz5@|;}%xT40@wW9{N~-%QB&`5DbQ5h|psym&SsVji;&YZsGUe`_+=? zzt}ETW0U8tTaqG(QlzSn8ncr#376vv5f}zIq2ELX$eVSw4YckhDF4?KB@ zh(I~I5eKq)<1&YqkIV;fntK@e%NwXuGWonb3^WPc^XTK=55Q0Q z-#*-kTrEYor0ADFB_#%QnRXHqq&~MHNML5bK;!Gs)o85 zD9|?|5Iz#jruHNZ{Lo~1-`zJwl;Qq7Z{3zoSzyE7boxoUk zlD>#nIQ_;TU)rC-^LLquPWSWHB&4QhA@h+Daji5V;bAk1PV?u?pZf^V`qC$+;hgHn zskjaMa3i1p?mg7KQ;pvWKW_QTZg1bXnE&7@3ct|$kK6vz`hVT}Wg-lVmzUQ6v)4;c zNP0m3=;N&O%t;c0Bm5!ks?0Hl{-$ypPVNvnAA&yuK(EHr`sfi`kt zgE5pvdFvejd;%TRPaG#Yc$DeT9*q6(kr(5~`SN}uN0W$54!}RimpFepowiX#^>I>f zb``(#Gy}nQysFx9K1Gqi20Ns!sgF$+cTEq!X7x$vc3Ph2uqqn_|BfWbU zJiq4-JjZ!iI{$U!PWr_2h@!~mlq`IMwA2C?Z4jB~`rQ5S;{7W(e?58m`P9{%qP6)P z`%8^jCu3w05Y|Dq1rSs*(E7#Pc|EIbQt-JGmI`<3w72SP{FKv1s~%BUerA4 zMTD=Qxw(drStDA%TxQ3Q0uUc6mv61BnDXDz%D>Wge( znz&nU;IcShZv^2&CX;>lJgr`|0VZN?l;#6m3!~$M{n10sST@W=x{ zUb3Cj{SNljne|LTcw{85ph)&SyqoxVff@7O1raV--amN#xqbMngBWm}#|899yn?A@ zjFhcGUU2aIU8W`42qCfn##(Ijnyf^n_)-2+51X$pq^)!otNnU<>n2h7MPMIqL=`GI z{%i8{S(~5l?GK;Wzq!cy|EvA4OY1MZewhfv;^n3F|LpbaJZjHXwaY{p{=Ua|Ic;7i z)U#}CwSKDo_taOTa$L?7)yQONWENylQqo6)+Q{snxBwhfh$2F&6glXTfgr%{-MewQ z;I#u1rQ%CvM%oV)QGCWkr+fvj;WlKU34CQ;JZV5~Ryuk4bJTQIm6hyyzmDprW+K8z zSR2w#Xnz2qe#s0EM{@dgDNofrdzL(XAg5m+Bv~6vtiJ|vC=zS^EEba_Sffj8!rWw| zsK1FnJ|v~%T$aC!TU=UZ%mb9PSK;(gkWnD%S$y_ZDR1=5sm*-&)?tRvn^_m6q2Fky z_DUV1?*xx%!m+I^pkLR7kHSUkaVfP5?c3B%jZ$7*&%S3~WPD(Njt-G;{a7ke_N0^u zf`GwbAT}zPVId@6#|4@qDFA}G2l<7nj&bQx| z(kKFaQRn2K&dKqzF41CV!eGGns#QdM;Xa0syvmg6m#Eg=iftfC($TnxEsh?@LKE;C zsbHqPACzH)Bsa1(SVR^v=8ls1V#P*ZNEvP|M`G@FT4X^2&75E-DZ zyn*3)w5#z^u=Bs*!$TksHxQ>0>FCoF;8HEv|NP~0$M@btx4__X>zC_4dHMMg*epNE z=wb1K*LdU34ICV8|;`Ax$8Dy{DOjTti?;U!V14b*<*YMcU8ie>% zHf#D31cCUV5Vqb`=svEL!iX9e6TOoK@yqlLj~z6Y(=|ImQCB zD0Dg$x)>Cin0boIJzl{y5Aa@>kVRHVGC3P=q2X*P;;9;LzWYwr=1JFfq33rYbD9Sb zvZQxcjC~)+o{>J6heJX-sKOv^3-lhyMC~8W9oZ+S7~74^e;0Z^-f<7$^M+S>I5i7r z&w#hUynNhDL7(crQulJB?hwp^!#uamy};-BBAebmAJpFKtK857-60y8Zi zAWu%=%gK>klbgH*94xl8C(G%oJj1p?$ia#2*f0>}T_2bbNZfEC{sUHmcVy7lat%&M+c-&Ii}WIhyAsSzHpHN37;Z>pf6Jd44U8vZB9z26 zlA3m{djK?5))O0%qSSQo{^|s}I~$47$xu7O$+}kQ&F8N&9!H^t zFF$kx;ejg<1c9&J@gVEhY@x8Q5J3<)X)rP@`XLAc!yS@CCijc*I%VZ&yHRY{Ne)P$ zmX#|7wr-VZ2Vef6h#N%_?dZ6dqdp^l6PY=AZme(r8H7Oo zDw`2urX4Ww(TgINX+cN=?A3@}Ah^|iJV0SroYX#c)Pm`JGLtSDS(-I;oOcV<4bPw; z3>us$&PO8mQ!{Npgk2SkIwb?=_^_0sl${MF<=k8F5YG=4(fac50Z^x8;uojDUi(Wz zuit^K(}`_BVjgn#Na+Xj(~Gi0L8H+S7NlhLib?v%!)WYjK_LsKyE}>x?AH<2T*>OR zHhe-MFNZ>I#2{I&%z@J0!E_* zUgt+D;;pVZBHVexZ5OhR4iP~R$l90zCm=aCg;R|tBK(wOxdFY$@kmIApZr*w^_>}j zjgiu}99RIz7PS1~55Kzjcjgs+=H=&u)4{`= zr1P1hl0L?PqcyAyQu6Z?!`zuEIdEUxel_v&0*^lW<7M~V<(QzP*g$QJmT!ISb6#K& zDOZxFiiJrjdNA4DvTUI;6LzNDlOuPfZ-tO#?zwXzBbZ`VM(gaw#s9qDb?2im{!A!{ z!`U;4{;PKoxe71qQAZyfFNIcs!_cV#6j13bqqY;2z)p;-Fg5;;F&qwjGuQ7HjSv=IU$6to^6Wo3?rQ?K?C zp!H=-`hQS*=2bGLHgngPzH`yzdw$F-_gGe@@K zwtwjH+%_{c05X}EM;aD_gM^S$&VE>iz7WFf&^aOC<1er>qmWZZDUWkR45Az(_seca z5F~E--Me>l^o@5(ND%nJ{~n@x+)43cf1qP*E}Wc~k;aN(I{{4%eCJy`Shpd6+4J>q zLj&}lYQ}cD6PQz_1X$~z<=yYPfGpk~E+xhhLSLYochB@uTyz+j462M}yjAL3CogCfZMF{HsU1NU^9xL62c^9Jb0b702au4o5?R5R7d%YTM^#-n zU#`1>ye!G-DBfemIT%9brcA2LeJFIH%Q|FRQZkvUu0s?AR<0C~$t34fzqODXsvqVL z_x*^Mj~yXz!ilN81iQI|a!~>cu5lZv0;L(fnuYsS%sMaHe~eXSbhSu*#NW4+fz~oN zIFJAVNT8tjq_os;1R-w8=>w3t7Ct;F{XeX>dpoGYKSokC_RLxjJBd=eS(oNfwoa&m zfiNON;`u)JasM^-%cd^bO-2GzG6}tY2R(nNVs`jEF}_-^U!y^z(RgPzMN#zT8p9X8 z4nWCS6R@4f%T0WAxM)E!e#B)KvWW0LQ+cQpdzyliO-^7GYpcY-BBdnF6)DemR<+t_ z@6rPr1_tK9gM69U%+@9oXHHdk+l%!Ta#Giz@{waVcP!bqtw9nu?C6uk1y5L@?Jow_ z`wMK$+Qq>S5Am%xpCT(*$Coa@g?C!&mh8i8p>mj72qZq~cvSq{VYVq3?yh;vNhVTX zcDcaZeFn8Gn6PBqJPi;l0b#yGYOQ?vp&Pv0=4EZ>Yj-^8{(pG@;koY~HRZ>S*5lu5 z!e1>c`~B>U#7{lmuHU@H+s@0+N9JB4gQ^ONdF-7t=QwQ*V}I$B0DLi1nmIpiG9uS$ z`CUsL9~8Zc?tw=!zutnz?Qjhrc@=d|E*o3I*qEAzq4t0`WpApcnwha-rd!W@6_t?( z@YTomU-W#}ZIIGTKKA;U%SX4RH0b@SE(*OV<07*na zR7jvyUkC|JkdQG4Al@i9)2#@nYhssISHYv$3=$JifhL;aGgX`&@*z&Qf>Q?@@U=TQ zJYLM>2mc@O@d70!272F=YJ{SE9pnU00hLTn$6=?39$P$<({T*w>Tu>pqo|I#ARt)K zKbT|~qqi0z&+4K}IZn1d89@-J+9P@+^Kx}KGT9t}Sj=eD*f~ML+Iad^8YznKDc;YX zD1%G}FVIGaPt`HYT*0zrv-GvvShYn%*>gRlrxp;_mB#~L z+el9SX6bk~HU4VNlJhY(nvrs7=hUnf>TvJ*{WboETp9dt<8NJRfAY2hJU@OHxTGg~ zsr|2QgT#_lTif&xKc1gL;VxKnvv9baDAW-=d3QV;SB-E(mQ-^vJ}ICtEF>{^7cUiw z-n1fsO)2nx(K|#78ek3xxLmO6)^E5Y2a-yytF4o3a+3iU|MBJB%$bX-6UU`|NcZ`@ z`I~2frQiU-Hr=-X9IOqP``_Z|V}DR5`{|@VAp^^_8JHj^CX~SY4ze{TfbZw0@Ut%- zzDj!z-g<)4a>A7pUH!GC~x8Kgbw?cXJr6Nq)&8W%_di4yv;2~lT zJT!J!VjY?$pa2BjdZ2<7?FvlYOJ{Te*0l`qo0G>_6Y0liwn)yAAP9)=w1!vfPEuw% z&0Bwbi*~oF^o+w!p2J0MW}G)P9;?*QOx;Ull|oXN*+>jy4sT6Od`d7b+W>YyUsh!lUWVzq&EImUV6@B#Yd!>EW|v=i6K5)0;TjwVdW#E`_|(%4<;1rQzp?jbgq4-j0#Z3M2$BGZ1BudK_Y zekPQbMWVYGyPm(L?McVNoh@8dS;>FB_yXnQc7F4VZ%T#AjtOu_1k9P>S3dHfYkhbfQ+p5TmF9M&%$&Zby$`cK_e`3ZjmvwjWAUtuICL@5BJlkuv6b{Cn8YJ_;?g@ zm4zSd{uyzXDbVS3oYc1Si1TiGr~60?NTqnB6hGfi{D6?)^T2sJ{o|?9^Uu;F{bN z`c+~4&(FU-zej!S{XJ80im`z{0<;;td-5Qa_UAA+*~q?0%kWGW+WufHjnX@5eyUO6 za3-_E0h~Ae1x>gDOS5fGK&=U0dj31!{x<)3cYXcq7d#(Hr%6(?maD@h;9#HptNPFU zTkzLxf2sYiYfGcCjD-*LQu|-p&dFQH{+Hebgn!8X=SL2dBd3w8=U8N9KGGClLPjB1 z-u^jCji5}0h>&P}gVl77!>(P0-dWhTHjx9zjf4ne42v;@3ewb(AV^e^5;%a|ZS!({ zWq1b*m`iyu)i>~$18?AKn41NS_Kn0g-AA-|X1tdYPFK4Ep27dJ?Uo1(R>5jW*0eFZE(Rm#pk3-yVuf;kvjbHcx zbW5JMXSUrllUqJ+=2t)ZH6W!uy!q}&UhojB)X?Du4#!PKwxnhfAHSO;*uYh5~{?&=RBAYyC@Wov{hj@Rmc zMvN?4qHMJdU>%x7nUccP>C>pQv!%l6Yp-3vx&%_{QbTPMV<*q?ZuB&Nks+0cx=cbs$m8deM^qO=WCG(O7ev^H7;&Jhu;#4lKh zCTtqN>7}Z@9vd9AFy2;8NK6WT0}_0j2}^@e+Xc57vCg6#??E|crv3d>6c+k0IrI$0 z@9!bHtBzJ*HLFvX;YSBVQJM^h3~8dFHX3CrC>%PPyGB_x`X2e~r09mBxR4<~Uxs|9 znV*F6t^L0vt7IX7P^cquPW91IKfsyFN?fxpOqKOCww`0MY=D~k6G`f_aBe0L<%TI} zHloaof-V=SK?+VTlNH%9=HRW7t5Ho4V=BYV!qq{PkEA{hb5y=0OML=hV#q;Nom5xw zjqY2p4ox!|vH|Ph1X`rRbtc|mcxal^-aj$eyAhO2bJ)G9n}6r=_@%x7$E5G9w@^7S zU!dGgcREpg>|+a+on|wS1Nn9ZVFYojHkktL07Co@Hpuq@fwaHBowx{i<()0WB*1|E z^Z3dqxZ&=v|Lxb~w)vncKFWZ9*3yWA2SEJgFm&z{&~N%W=DL$!8tdX>1Kr&s4s!sf z|L+_XU5!Kp${88hLZ7M;fIGi^D*y%h)$IB8?{N;Ka9Z7sP7}?su~z&pU(J>>J3GU7 zV43ct*ByO6V>9CC+X*NM^*=#UcnOo!(tu^Q2}G<>FgAD|Yo?BkUu{RHbEkQ_XZH2_ zLT-BbDV*kE1VNyyw|410n00_mhJTQToA3QLH+%2byf1x%`}@Ot?2=&yO+%h)=1 zYVoJpUrm*C&t@E>pXmFS+W%f{2{0_4e7e;B*S49{Vfb73Hy<2~ilqqhGCKNT=WS42 zDG(kikQrk`?6ni3QLrwqiq=^xHdO%~;{tlUfFKAo)HdNCqNe1miPBOdCBJ{2(oX4x z>>6%kn|o9_Z5YPo!W-(JU%+*t^ZnMFPr;i{q0s4wT^G!@-D__5xGy5MSqxv$eqlft6U%t(wFBRdp?LX0P zy@rRbTg{%wj_}*ppJsDPCeOU`OD0E~=xvd-1=ijWPT$cObUqPiwb7W0Kf*dRjiqst zgmfJ9T5{o!4dJi340tfj=MpNN2Bd=e2T zE-?_R(f}Z~i^QrlShRse4~`?AGf<#xM;Lw|Q6(~QR7-e9Ap_kfvCVWL#6rBgTb4V* zQ3vJVw3t!ol->x!FAS;PbNqf`^IY^mr3Y0Z27>`X5EwJB=b5G=0?V5CNa;iJEC`+5 z3~N>bBFBFHGeTdNW=fY!!K!baB4WgfCQOO{tkw%22I^0c;J*^9y&shZv^~=E@uV(I zxKotW+1WTPmL;r9LuNB;CVgoiv0yxMin0_Vq1W#~{$F2{Ey}po5XH6V1S}_#Aw;**XJj{2Ah?>VHT_be)ij0kGShML4FEy(|r<0WC zSPG)#_HkmvPV&v~OSG!r`i{Vs@hQ@&;(@yy_=Wrku@yvzKvT^Q6%Mic9+;m}|UL4!WnY!*_- z>@)=`h?@!E&6nQ7)N3Zunn=ZMK`5uYaE=esd{Y<-jS9zA5|_VXbPBqfq5gQJ5 zr`D0Reo?yCU-7&Cc*0yt=Xpg>H;1t2K0U7TqT4V$$-RfD^4*iL2F2a(q6S$yr?Ug}D?rk8Mto zYAFsJe2Y0LH^~(02<*d+tcafzzx*Wk(^IhA?>tS^eWa%r&~@rOH*Nay0-Dp0JN_qa&rA)>Wh4BR`%|bR=D^0^ zcs`ff|J?S18iq^De~)F}#sZv^zo1TvLVv35kM5Ji&(x!(^tVbtVN0gOgmNOPkd={z zth!9k$x(qGm56>zA=NMZ6sCj$C!h%G9%(kMZ9crFgq}fYq*WP zj5M;Nd`Z>%lAD#z`VC*>k3aquQ_69g#hwNE*q`M5=R0g-dkfcu+)S;tZUH#x3-O~@ zqXs6(%SfXj%2N=Xf5H8F3X(l$s+3+fA;K8JjG{D5qhFhXe(ksU>F=K953e2Nv5_{e zdC-J!mO#;}NcKE-geqeh&$Rp!fD?O6o&$UM>KE_v-iOSbJRZx<upIc149j1zFP(iag~L{emmzQ+$=m(;H>gPNP=N8$Qz}a z>p$`ZvzGvky_+SyhX%)jx)47gGQ|&B#2nB9ma0vck0J-0(a}u2{Wc1nPKrL{lySGVtQsGfdvZ9f*`Q-2H>HaC^>85 zXZwqo9n0s%G7}GN;(}&X&SITC%UEwCGqe6o5zk`hWWHtOI=JPl;~aiAkU>o#RhJcV zOIi^bsnTbS)k@NH9f;?~nH-VC#NK)B=ZIY{;^PHYtdI)ji;E3RAOaSy&d*~43j^XP z4YeU;tg|fZEZ)4~IF)}|#Z}rFtQEm@=v_GLhENI9v;l3?FqS-vSvQ746NBTbY%kl! zR82J?MRz>?$YWi$<+(-gyYprqF5br@_gu~FloGg!s~>*@*Kiw+y)63OEEEy+L?2)- zD&?`hmJ3I4JW9_Eji>p4Km0s5f9`&7?)S%yZyrVECLbrK>gN=d!zLAkA%PloPA)_9 z3Y9(g#`6c#IGH!$LJ$PLx9j`N^z|dQixREsz%c4SCH3dpcw+yH2!g;}*I$iZU&z6O zuTXHar1DPaBbWhsoPoE_TIj6)5Auxn^ZC2)`NZ#;umAdctc^)te2W&?9hXZ>PekGU zXCN*DdR!p$6OaH0LHNFhOJG5v3#Y5+GzNo#;$j2u>^sM}d6Ih`$pkV9VKpPv(^L$< z`H7?>Gm_KI_aE88{g2$v!{7cd6n(Q?byWd+eIfhbE27#Ay&5&PR29R)t2ox#h%7`P zv++%Aq5deMQ?Xnc}~Arl+WZ;8UPMyuf5$x*LH0wARt0Y7=+ zJJeQG^4f2H>+Z9EAAiKy(1R*;ZtU^(k7jyu4po1e{Vn`W{d@RZmzJM=Ij@G{((>PJ zDOZJFbiD^0%#R#+@{qfgg=8!eLK6gmWWB_mqt6xCwM(GkOcSb*bVilK3=Z4*O4lr1 z{sYKrsyQfY$C#1B4L2n7CB-1Q+tw`0SmbiSkYy63Ls;2m^m1A@TCr$3!;BjQpMsBJvW3#JN6@-{3u z|M}5@s>({9ef=0`d~;|oJBaVlAWEeRg*uX%1$qo~Bk`XrU!wTK$5@-RjjU8X0AmAv zw2XFA;BRNks%peKsSpvBRC6Gjmajc9nzVfWYi8bldp8Ydn%KHkqJ0#L1j@(FIL$^B z(K^H)f#R0OcpD0JZ%n?@+@oB+Czr=&2@eI8Uk_=b$ro_Hf0YWE^fyn?Fi z-NYXMF5Ls41?HSag<8s)b=oYbLRSNGDOk#@9%p#?JTo&N(%37_xcT==j-sHnqVZWc z%e**s$paojyZSK?*szBAF?ISh&bQwN!iWrw=Rw!KeCx9f%cd?33Id1f%K1>6ORhGR z$U!-Zm~ghF%oQ@vH%}4g54Y!FFc^qi9p(iXi)mFgVM?;DjbNh5kBKHfY|-bLnqDem zHs2bml^lLHkXybw&TmV@VF(WI(NH0`GdZH9JUNX)lNs&!+W7JWW@?G+hOF zDLp}A3WYg<0MdGOPOkTR>ZbG1RpnhD>p#bKwwPK{5fj6s`-^b-rD7<44_Rmem&IvF zTNMwirn)7W)7CKB%Op_l5fO|^4#0m_i!5SniI5;jz;b?sLE#sHb83LdkvEy~anaf# zlAANh6MwuD{wUQKr6z44Gi#%l9jWS+1P~f!PO2JCNQKI8KD9tmS)tRRQzda%e>U~A zr3~m|V5GyHV$|cEK>6NvJ9t^y%oncOPC=lKk`e>@%#DbmNSwbkQ4t?6K-)0sYf^}x zaq)pYjNYR)>@PLq6PmzU+Gyz?XXg!9vvQ?$4{y8fT~sllC|x;>^;mfK(5qgG=#P6Z zogFpPV4p$dw_-uTug9X4EexiBa{v;;S(1`;%DKzyq*rMmw(caw#Rdus3%RE7R>}=a zqX-51Om_e1r#NHark9`c)*845j6jT6kg%b?4yWD1Dg}g(Tk(Bw6SAASafD8gpP!8& zNO}nR!a`z|8WIu&?{Dw&%L{q-&8t{Dd?jaW(rn$xDGR;ReKemqi)DIdhGFf-Xt zPTmcldVij}%)iHZU0VM0my!;{d<5va)c$v91IT=QsV*-kZ)1TM9Qcivq8^(A2k}u* z7APPHQskg>Lhz$q*#jm*wUEH9qOfzfCrHrPsg?+i&%(TG9g ztZELUX}TGGKq^s{C$LtYz&|?MtHs5lwlq5sg-&c2q{MTsXt9%=P}^!Cz5z zs)D@r8#q-_>D|}*4f!8?zYhNPc~bIMW2&sD^YnS9`lP|SX0PNZXvQSaR-4UN%cq)TZi#+Gny{>fff&c~bL`k)F<%%#IVLptFze9N2o1DI7zxTX* zqSp~N3!%c8*I{r@^`in5{t}o}xb-I#>IhuMBe?whmt6nE>}E=PQt@l3ATzU#@jj<_ zmf3$+i$5%?5g9mkc7M=Og!vpfh=dt^IfA-!HNEEXIYni+U8qnwt;EidpS#ZD=no%Ba`V#IzA}-u`Cs)?xbAtw!dq?tkv{80 z@7AUWid149wBhUP!fv;J?EC5POHX-^>ol8DF;_G^Gc|y(zYdqnNnFHSMB!y0En89s zNz9N^k}QTtkWC1D^!8qU{L8&mR~Zn5WKJLL<(;22Vc~t$#PFYwT*m#6+|K=v+`iy? z%S=WT(Q|+`ZPN}q%1V~ZUIzwhxa_KAgnP~*iecU{?BwVmk0ija9%}|4c0N#GP!X zJNfV{PjE6jj*a)-2Edw)1>W=5C9Pm^2ttK%L{UUDE~%MTHJO$~7?!*KT=z`-{Q86W z>ubv^SXZ!t|K9yWuKdsI`QT|Om)G8J^+pgtQk(`TEWDZ(Ia0{@KMQUrD8`?n_dlS~ zBF%7&h{33c@s5XjcjRTlV&m*diG#fR^f<+a_qj?HOZr{u4Eanj5gx%|V=KLFW+u;$ zdLs{2#xkCH<(E_$kK?Hb4G5ERr#;|dOfikA*oH3MpVs4}WZwiselPIs;op*cI-kq4 z@1?f!G^eL+>{_dz2PG-s=y09d`0;)m+{Io6lCD5D*@Q|{ zNnhB~I+GA#6g!}1sWa)E?473bXJ@0i_FDIKE@WLY z1G)zu<+l$#M%bi+p>3^E-XGDimcAAFiF`vhZV8}$WtR@+r5f|5CLtr=BSnD^M~oLp?7aul#&cKmMv z2p;p$s?NVpv(n@;z9FOdrKK=&)U;rm`7>gRBX*GM6?q((8NoKY0_~WjLaqsu(mpyw z9ddOj+HfgxYGAM(yDF2`PRXGQ2=isIO~+`UlfE_AdXGD5GNMk&yr81;0zCxau-Qz$ zT|p|D+?ut8FYf*_Ak`h&%^mQ`HRk|W86VG?&UR^*8R>0Ag<}8!AOJ~3K~&n$R913z z(h9PiPR2ThaE#Y-qT?jf#~JL{vE#%;?2y4` zD3CH13WPC%0&RiYGW51kD3E(^ftCWjg|?6|Bm_u+5TFT!5JF^Uu#-4;Jdd%DJjs(h z%C;=a*7uJi9gl&gx4)L(TG?x5ZJ!(+>72dy+53I>`#jIv4)fxvHbU;6)8Ole(P+f! zgvB9x`Xm~U>?GvmwkCM+t!Z3Z;%I9N%%>HPQVGm=b#lB?yKg8YuA&QA`yrV z9Wrvb*~<23UYV9986acj5?Qh6CwFg@e{a_o5Aupd+B(K*v()2^OyFpel}LRE7v&F- zGCDa?mJFB6j>BS2JO%L|l6Bt=q+B3jL4ynfAVPV0IqNrEiB_wnu(}q7;@sPzIKKdZ zgRku&dbtEE%D?C&_+9a9)9!1dt3G-BI9opcipzfW zB5Rk%k&_{C`%N#f<+szFhv9)y87Hmx$YLm@hzW-RO|U1mxdZq`sF-j-TYnLsmfnY7 zxC&>37p0ZHlvbXky10tlZ@-h4hI%?%n#fM}Cp;pU9eYm#5FZ`D=x9GdN((=lEsde0Wz-cf!(ncdcn=o)EQOt^`1WC=h46q#2=Ak_ z&c%B;W@1zwh|Mbi8@RGfUjiDhIaQZ5K=6nsJ;o9qDk~u9s`Z47TbN(e%+jnxR=IYM zYRpl_Zru(&Z$an}c90I)$TO%4t$F;2>J#PeFGx%YtWr z)?-GlEVqMVGKr}5F=w4`GBPu#)hCaiV9Un`K=T6*w*}!-DMcmK-l3>`!mzq%GxhyW zm|sJzsA4280YkF{mFlsNQ3`S*G`C~$Z9If!{lg>}Qn>el=Xv{$=c)dxh#M1sKIOid zlMH{hB8no(fO<(hG@JP7^{r^U130;BC*eT`#s;MqcBn&ozGdqlqvE8N?`N#x#s?mq z)=s;&OE9(S%H4$P1L-vPkr=-MUv(gcuqb|d?<4Gg_UF(mHICbfpPIa_xeF|D@M%pv zD!ratQjg*==V12UfYE4V<4>OkVB5B>7z_fReEnDX+9S2)ILu~_)RfKXFccWeakO=_ zzg(oC=cg>sj*!pg<{HV)&Y@uM4%V*CVZ+roPm4S_onR{}C(28U(P-pMbsJvZUMz@~ zlBZ>4X7Yn|YjMx-6Q|1PEICPFZ4@Ov<+B`!eH_B!(}QY2M5AqI;pMIL7N179!iRx! z4Fttt8a|4t5ZOtXnj66lHPQsDDBau1>dP*qvD!&TNDr}{ZKOn8P1edJ%JM7a4KaYz zc|E8V!T->@daiY0e!eWHI#)SY`%$5o6m0lc-2eIdpIfV>3CTSxov;7h^%uK#5*+Hq z`VBv4brLw5w$apSq_Juf4y(Z08{Q%|QQ8g9HCfs8-X|3OPun!-AT=srQqDB_hqF|J zoKsxK>+jx3&nvG|dB%j=sYN~Pk6qzGcUupYtAjaE-9h-^2q~lfT8j4CPZvnefkvs}(?3fpA>E~2GVj1kIYF>G z3e(q31goQ1x-yY@seb%8^Cps4CZbSCi-pl>gaL5WskqpQjMoLp2)pjm8!64NL@)^S zO7;@Rb1TTomKG+z*dU&J{h1kUHTQkb+_~KHWf}kV#+NR>!NsglMWxqcD=tQ*lXlaU-gbVpOv63T|6b;W6tzeTx5loSw!^Fm z@x&vi2+0i5OiKlSM&rq2ULp>vS$0bgSKB)A1yuGRjFSKFLoKJoIE=Fp~ zsjn@kWl0icIoTBK*@+WS)=K>`)p2mYE`lIna7vJ+-M4?nH<6xUlGv*c$z)(KpFz_E zIEPt#K_HFqoW$2}0a~q=eyahGmFpc+`Hsc^Dua)rr~|@-=C=#CZS4G4QX3-BcLPRUqy?He>^o0!_?wvYlGBO`P!-F z+vXd0J@p+1C_EuW9~!#qad`JK?$d)RWgfOJ6|tAyNcsMq2<1bd_NTM29q;+cpjFT5 zAh_GfJ1&Xf#sdrujuE0ALfu$EXU`a&^?NZ@e#!OMKFDZ`!-Y9_GPAhH#j3a@a?Qp$ z+fvGo?Me=I>M%{s^>~iinD8CLF+4&*uqV+eYgm)^Bq>>vBGL^!3QUh83=Bw#90g$k z=}RxA%RI=s)oB2IXpo$8g+k&HH7i58CN2wekCTTUdvw}wO&vFrV?&Di6rMQ2#Hlixit6#MvQrRt z0@STs@`JZ!!t%anx>&e6fchi-pd6uXq=toInJ9w?P%pBe@KDfRZN)>WV4!o9(!FB{ zhHwVT$N10tc94?3k}dCUA-^h*z@TV!aWMcSuS}$|QIzk~MjIzb%Kz?h{(rA0i^JB1 z#(S*{O*&Wmv9wH-9fp71{hzP@S+z>`z@12r1m}tKD30i^-1Bj+JMA1uDy%<-jW^o;g^N+JUE0aIm z`2+v~UV1uO>SZ{QAjHv47lY>ENoY|H-15-#vN1Iiv+8srhoA*PV9-3wdoS%GH#e6n zqi^H2Pya};I*OoVf13K+afDYVtFY-X8*He+| z3oMr%1S^oa?-ZwQ{2sR2ayf$F=&6QEcYjSc*yk#9IS7fvkdm;L)cBYHN{*$}c>DU)J}r?Wv-1|4!o7 z3%FoeJm#tbZp?XvzYTmTKhsnwR>YzJl-<>MJNpQ3Jw>N!m;k^r2o8|>52E>`M4kqW zcfCq%WCqt=^B@hi73fmZ{U6G6;!f1S(-~r^DC*%@1o}OkI48@G+BOngxF6htBIOM zc2=r`ag3Nz`Gj)wh0tCH4s$!=m_Ss#>$4Q(R&eJ_uh2^c%d;a` zxj{e_BM=0Eon`qL3<6I+@R-bx^YD;rH(bqVH1gGsT>zLzk)sILpX2(tYs*%Cc+W;M zR;-|^JddztK~%-PCG|5<{IN7g%!C?QEe?Fo#4u#(XUy46uzrkMW1l?FYl1zw`2&vX13oKg6p(&@N0>pGTYtfX+S)JF=%^e7}q>Rag-|jMdWj`~&^zF5|XtP$=*T zUdE6)7o5^AT*itOIGI%Kd9kG*oyw0(>IYal>W|JdoP!gUSe#Yp4FN3Ai6A%ENQf^u z$AfwQf8PWoB68}+Op3N1=QF(&NeEF#Q7@Lt_i)QY*8}jAl~VLzW^peNxS!QEs6*7@ zv|743@l_*lMIJm7oM&|&&I}h|^X|u27s{RwyGhCN zLBH6SmQWpHS>vqsQ5qIY26~>6{+0>!OC)#}q6lg&QC?auAJf8u%UQj8E!(zi1He{P zM%s#DyuI34cWFBZcR}%fDS7}9rG&>^4uUddQeXXW84w69M#wcnOt?r)_*Trr1{4a& z%QLceZ4P(bu@Qi5lgNF4ewG_FHewPM5k20DAVg4LET^q_F-&ntls;iNY;Ab@=p`{rG3o+8^f(<5i)+J?oX(dSOO?Ww>?`6~N0czQ_ex*YWE=@4^zi0H2!U z7<#20*O}6sGnI9iDcL&OkJ|17z$XLyX-O0SWQtL8IS2+Tgof$~^ipHJ;wrgm9aPJt z=ef#U4nl^#45wcbf+m#v?*A1Eps?^b>FLsY>E)P!>i6dSKA6t+P({v$Jef=)^@D>X zr>1}F`&#IdI`s?*=glL#CW*=}7?SygC-6>9W2CiCCMsWlJc@-DA3mrmnD(5SU|)g< z&!EwH5~u6N+2xO7$$;yZG-!jp=9F)BM-w%{(&kI2?KCg^^;Sat<{<=zA_xM94;xYH zXXxI4L(znIq8asMsrR+C3|0~rv1FQq;D#AZjUpt*r^&`>Yf(3?Mcvfqck$7SxeSd? zFh4L3tIq^CJ{B)2>}BULVJeyZuuC|~A| zB8a(>92wnARH~Lyx)8Ee2t<&bog;}+td+P3zxb~La$*H}EpQ79xa;eDBk>yd!mJMA z$3NOI+5eo|`ndD;ztH$q6K{?_#=%oNSoiBF4n5O?F2RTPsu6SvKC=kRLl!%}!79$= z_YoReO?P(};SN20twRJXiKJ~zPx8Vubkq&;(Y~($2-Sw54e=r^aS5fTdx#e_96$Cv z?ezxIk|sAmL{TI*R*;Y1`uZc%(la^T(SXVzPGfa<>g(qjeGm6X!dQqS6Jub1Dm z&)e&BwE?NRX5NMqMRdhBH6W%NeEWrBZ6} z@FIS>0b}0h{O0!O`S0y}dHtxCcS>I*CqrQ4hG*Flmo$y@;E~`YGTEDsx*;MKX$bFM zjkRZt`mO>rL7uc%jWF2ZV5rB!f|Lfyd8jPGRvpH+&o-jfYRStp($&|FkTg3tz$;Jx zgps6V(ydNTpDtoSLM(MQGZ?f4haDqww4J&<30~xe544U;(ujv$#Oe7#@cPrz-`P2m zWTGKrxdYjw{I%jMxV!5XDj6 z{c`W5bgV)-Z6{OZ6NY1K5EQf9-QA%MvsuE?D-@{odM3`Cn)CDSIzppj?b0|l-*+7~ zO{3VFGTGI1l#2f58N7#1*{O3&w#H7xpvW4KiPN2RrFh%pIn=tD=KgkuRGAF*NIQ{k zhi0nklEZACrn=Muw1lV$x@tX18(zleibx#&Hu_pdDOZN!9hgXf<_KypJ$*xAcn2+^ z$#RgqQX9i3q9|S&O25!Xf29|yC6P3mC8B@L4}wt*_Q+U!cd-?nlJX!7T2SdDWdm8e zC>B-TDd?LCB6Ib_l*o^)hGZR;G5sq;x>*@#VRc+L^TsW-jOSqL(9_ffU+mgRm=McP zfAb&w^}k;xJtK40_n$2f!`X_#An?NOEgXKn5^!?oh1a{jSL)}@u7qjsjLHDEBYBe< zmE)4Y#nG5aRCbund{ldo3&y3ygeRLmM%mv)f+3MpMg0sZqA(29QQqi9Y@9_V)&sN1 z^?+-fOy+%XI}Vy)PZ@=mn`^{i5O}{l|L=N!Q55kUiamliVbkM*~$~QT}f_9Ef3%S z7<142-(GKj<9Pr|EN@6Wgn!+#76P4a2^Xy8PuLcw>xm>avw!E{MdvCjUay~_R&uzVxv-v9DFrUs<7v@ho+UM=g|9{r52!qpg zc)tEF)Ysg08^6BgR{F=a_?DQ+SiXRmlnAW!aoyT$S-VzROfZ1Svdm3J65CrW5OF6|_BoUCEESW;*30+zb2xhx=C zzJA!}3`G$=IBLszB<*|b*s%k%+03Zci{zDwBxfZ6@aKm&aW3V(m!!~gSwR(LE=OU0 zS|WkTeh4?u<5xfX4bztg_fFC`KkuyKbbjM?=UQt#HME9k@m{tJ4{tjMo`0CT9{x4@ z$SC&iKhASzFIIk3Cuf%iC@eq1?VE1L+dhmU&Pl(jp1y7`E?#vbP5z%ugT%B~Nk(W_ zO$E9{AA0?)jQMHN463;0mW_-J*+`t4Q4`6KHe4ZaN1D`cCX-0{pPyxY@=8Q;5z+cw za&nA-w4j(eVB7+4e;{3d>%~z0u~fSq3T2WMad3a$FaZbuXA@1G;2AF^Xv)ijf)JAein39C=r%&TO`1uDCl>f2JdvMbc-A+WrA`KH2 z8XAxH6BF)BXZe?eFd2PtLzkvzoAypkl_4#*;$j?TGl~y(VHs^^{=|ipo<2fgvIgHC zCjr*|)LBPS1q7pVVTXG0VtZ33(ThB3u4{rt?mP$)5=UW5TTI>cpXwm|qs98!UI>o* z9EP(Mm0nM!-HO9(mNUpNwD=G_qM`Yv2c^h?OUcNs;xsj*GR)>7sPuYLdZF85=IG$Z z%qNG&h6WZbP2{)FJ}%3bzW!wyg>$MejiF&O>$JO`m3vP=ly{lLqmxMwAx8AcJU!An(Ih~Mh zbs~x)7c5Fb5fn*`zZcor5(F|g*Z9rv`HZ?~N`~d4f}?Wu06-J&U`W~R%CPJq6P7h0 zUO1f-oXPJ+pWr*`C=4buGzgYvB|=&tVSajs#)i4`fkzkvl!`Il-2DmV)o0|a?*I{t zG;;D!-B!BZEYzG+J5ODA6Bla!sq5_d`d?Sih%n%quFvLSoIn4sI)CGXKj%Mw z_6(Td`OSZ#?9@rBP9Ed!x3?k)(&SiBkdIoeMyJzbGC{$Bz-_k+R2@CMQ15mY|mg!SYRXziopwXe{5hSNSK;fk{Z*U)E|Cc0&sWKIuB zTh0eU?WlcvDGay_ZC@=BRTlnu_$88(Bm?iVJ1$_o8}NRX;*K7a6;x7stdbCQH1EE& zi=NRIS+&SB-jDUS-^KEkS)46$@b|QD$_2^1_hBWlm|}WlV`V{1)VJ(>oMZng6zD8g z>N_SgLEUlnrI<%2xcT_XxXhet`eo{VE^4`69#0ZVnzb zk^UnehAd;VU`rr55AC>%9*RjJ@}J+o8FSw@iks$E=V&}r!Rf+$mSwD**8VDeBrtx`xH-g?!;< z#y2C5^5$WJ9$L>>NgHDyw?L2*Wls?3{b%Jtfd9LL5E7!7jA)B_(ug)|rhO)>u9|?N zK>~mXKW{pK(keeT|22d8UTtiC!otCiz$+f~y_=*&Ug|h0v$nf`zM*7i=g7OsPUm#e zv%9!=;)AYQPuJ#`I6Yzd=!PH7JStqbej8!4@=^* zOLKVlrH{}piQ}z%_EX>Dg+45X>Rf0YmBJbKJS9bVN7E)K7_cC|9?2g!J;|LL?*g%# ziD3~#gh)&>j8?;{0eEA&nl0}9AZVl{i)L>N1#Rt^M3IB}(%iH-SdZ2|h%Q7cLyg>U z#i{%;cVrSE_k>g*Znkn+S{w^Plej)JS$2Nh5lnF5{Li}cExrG5zcF`)WjA426XJ>1 z6+Q5%Ur1=^2;JRXD3lYFeA-RQHKCM#+KtLPh?0F#I3@%-+O(ihpz;m{^7!pvwsP8) zQ)roMd;n7J1SAzErDBY?KK_LAd?P~qkQ{xoM;eImGtoa5K$W+GV|88 z#X1lRF?cQ_(sv#mV;!iSUi5|cqSb2gj*nq{aS}pBAL93yI(AM6 zv&-P68TI+||FZMTrYRdaNlr~CIW=A4H~?>Me}{E}&}dVu!~^^|yq;p}ZBJ#jIY#rhJi7@(qBMQ)&iy4OENp@6Mhx002$l9^>>#6kV( zS{Yhos|;lK{x@V|azIiGm%el<%d;}2Q9QMM_&>HUQi3pmQKa2HK@ixsO(bou>;BRH zb^WK#GHIZjOj0sCoRf*^GBQ_i^7si(l~wWUm*2pCQsfu=I;bxyWTD4W`t_p>dvsIu znuTFy9}#grL?(OV7p`(;{q$gqlA{?#33|iNb z8JMm%(9au#yl;<1}A1m@r?0OLl9ui$nl=6OsKpg}SU0gOgahU5~Z z1gBGA!!?)k+@75bIn;b|s*Z-17L?o>vzqiOCbM;>oT zyoZd;6@2j5Ke1rx3J#am$`ZytM~;)YSY)WjMy$secv$eMn2%;jvuqT)llcV?Xz>~A zBt38uSyoV_eUF`G`Lw&D3+}AI?)w0^Q-sVN6%gSeb}0vSH&!+TO9yQf{T*9!z@rBqYhK@q*#$r01z(2kyTeZDt&8 zW>kJ51pW9LnW!A(iq!P(*~t>aYWyqu08g|o4u%_IJMzD{ah(Qr1LEPqN2D%iw#waX5DhVN!38W=SYDY683|$Rj7{XR!u4tmJtBa@!vqnJVHLmTGF(dt(LCdrS#`)!& zzu;&0KShVbtz0&_v9UB+0H>5dObAZnB&v1lj z=yMF?@SBtjj)@W2^|#GLE$=7HS;Zdl8ma?^`Qi6tX>S^#slmxXXET=66xz&9T#=qd zs&_9LHU}-o>u9kL5?bMh=;J_}nkv0W%a^0ueu(nxZl)mj04hCv)E|#RFK~l?6lIej z=hl(#UFs~QXTY>}K9}`T>E-`#x3A8h|Hsa&P`LaDg_9{Wp!6YEeg6Ev>%6P~rkqbs zOPA|Ux4%QxseRPemdUCU8#ZjDp+V&N=bvTC{KbrP`Y_Vphtr|pt%sh(-fd;5NP-r* zqX#-FX@j>&NARAq;EUzDIlt;K_sG3pi*w!{QLhnVYIB-qKJn_hU(ZK8+_za00`dzrqb5^0tVCj!h627)YC? zmDmMoEUEP8HUC4@_Aka%e2|dnQHFZPxOiP8zA9h5BPPkXnqUWAJvCG>Y@+?+5p)T| zv{(I!c|Fa#E4t=13dvCi3kapUAZ)6K9;0-;WIMA>ZoBl$|d7ah$};^`UC5+qpATkc0+8`Jg8R?S}1G>Lwq|b{Hyf{&$rXqTj-h*4w z0fgK_wOM3p7wCuV5|3jBhoNQE%5!^mOcIo>ld4`Sy?#!j@-+of1VnUk==8f-KWj(j z7b0^krV`{GW;5H(W=h)XU|QCY*=2Iacyjz~ugZgWk;k=re#ppN!Rh?tZ2sNj{9)s7 z=m{F4p~+0u=w%Fc^i7VF-a5iUdnIXKSJr8F6k;mL-r8elsK-HGo{=bD4a%@E#x!0$ zrtL;Bi4^B{Fk!I~>--@#Eguu+r=)AJ7LD42d!CZoZC%by>@&WPXq2J|?##+!>V6!0 zX(C*f9YK(gi71NPc7?#OYf5i&iC8&iB%OBHy3qPY;uz_~IV`d^V*{=2?PU4s$j-^( zwo4^h)q=rpp4+=!b{5=3Wp^~e)NkjSrEwhg5qR=v_j1SXS6Ok#g2{P#>I*uhl;u}W zaUc{FojgKKX$f_um6UYuA^SJpd^Cly?9Q+}GdF@lIYIrANvM%EOW~}D56{~x=4Bx8KrT^gE$zX6h)IEXYdl$)wU+9Sce6feB~c13`R&l&-v$cs4obwn zIGv#I`n#TQ>iMF=(=O+7-rwCm=g)t)&Z{IR(QPfwU7tVy?>WCTNuab`;vqBW}#MG2j)bTz~)Xe@V)`MXp`MZ~y(Gnob-p?W#r-Y?4(yia)lXOE^wnm66_60d$WqXTZ9c2SW|y ztxON_MW)q;@gy|N? zCN79dgO)-3L%ig6&TvK2PT9tJ<FR9q@{IVZ zL$J0$`qE@_Pe}?uQEER#+T}4-sZmH2O(zu9l)84bofH-xXM4plI!(2tFP%9Z(U&xNG_iJR z56<>Z1P>q>gitBVg%AbVsW8|Eb**Zew>9(Jo3~5yp7bvVg2p0!RyX8-MeR}eA}M>A@uIqNzhg685^*GRy}PTPL%L4sKx8fTT z$(5l|?5jPBk0KBo{jB`3jtjPb$>X)ky&mc6O;tl_92vI{#In7yjW5f+MpiS~Z z5j2mIFOq1tW>Rfmgiq!1IpIsrE`Ky(1871#2@jBDS(Ra7l5&*B3*TNX{U@678ylmd zIRvx%QyzWlA#AjfnY~1gBK&dF`}}d!`())TAu9)VKJ{N@Z7YhP zNZQP8goKA39|$W1TcqfrS5 ziQ5VG_9MeT3gwss6k0fKmLzNAk`M%e)$vJWXXj9S*E4k0PDW4Mkfh>6JJf^A0xzBgEjn#=OQq@X>~Wy9PY^KTM?y#se}3Yw zzx#fd21N4p4_3p+AIQHc2m)pE8fIlo{&&}b!T;Og^=Ive*|lW2cvm?P6a08%>$_BbUrGw6^9-kVMr23l70zXz5wi1E zsvcmw@^h4n<6O|MB+{aNX)PGU*CuWAIVNIZBAovIScVE43DA#laBDGPp?wVXjIl7R z3#(;}`Rk@f9^B4D{n38Od1y8A+Si`UUnubNYhJ)$h+^NTUmyl%qYMqfR#b#~Whlq( z7RJk^=mAK?XH&-vMWyiRib{qE*z`1jky|e|5|jKEqA0TEr6);SeVL5u1&9goqE8H< zz-VL14+6-}&Y^Jg=Xh%7F;_7d1n#(FBTlCjk$CsOUb6gjWOabS5W-Qr8P)L`3N;Eu zps}?YG%n{u?nkK4N?}azFaLk2-~&z4;n=`1_O=G@*EXQlO1SH)l4=rCaxmN>;inY} z5YHG%w;0hz?nf*W$&LjUgAfhIcGvxegL4!%+#vlwK=w*FZBFK}u>-5s3P43gIm1gL zQ27Q?eo`_#PuSk0*}jZGJ76-?w{trVvzgF)AH;!qPRUl4Ue8EPIX>}8jMS8~u*V1g zjyjGhYh(vueR39EAq&wKj-gbAGGwYlWiF(~+{zCxy_tm63ow~P?r&|Ru0`b8&nqzI z?nh&>p+t%RwY2wh>y6jS{o>v=&dW2B*4a&5{31p|+wiG9MO2`Mx-<2hF7YF9!Uq;Y z*FY^THW9U`rPkX)M&v@SHS}Vu9Y+7iuQ0#x1X{fwYwiIVW;Ieoal!e@0qdq8tGzG!*b&T`{8#4U`ra%c@l>oepQ=q=7VU>z*bZTQNRJ zS!J07H<|Ljt0E&|82)hQ6NIk`B!2)pLB+n;K1Q{@L|;Bm&5?fmV?9Y6x`pn*qo~FL zQAG~oX|Mu)WYU2;SVd2l69}Tlo`I>~1Wbi5xnOPp0TS+C6h#aMfumawFtV?X5$P0n z8G>=9#NzGQ%xPlcEv4Vw#e+}XH0zymn7dKwL*>ZA3YXUImo7L` zY$C)aK${D}=NRddod&0K9F5(s}3USE;G$=k}}DvZGJZlOMNv z@yoao+Q()>i?Z3i^)qVCFl4UAZ+;PiXh;(2cgPu&$OMR$~o z7W1P;;nbcu%>#?W@Ubt(;WdKKkwsJ>P4rXYI<{dAcP1M6z5N&TDY^*kevs0R27Eob z7%T83BF-0Gg0Bp7nCU#USB=m$*uve9UkyOw&^1`;BWwM|ARfSIgdeN{Q}^5iXc>+) zLs6-&X1bzMyH=723|0rS?VVq;`;$mez(RdCLBbd#VkF)~vUceLY}f!88)`%89Xh#K z0Uzu+#`3m{7k zh7b^4*NSJPe^VWVvz1ZWn3!-pS>r%N~w}oMLfWHk#l8E>4T%$}5+nzH<#f_|Y?*F|`6te*5lTzHYVf z_^ns6c4-_27yl$XJBKYF?m|6c1%rSoM0)3RlC8KX6Dhq}<*7)j3z4ifVr_;60?RaAe1s~*c&x(iT_cc8| zQ!-|pQcebdhl*dBmBo6lvbo+!!S8B70kIWc^y&Ix#e8-a>}Ppm1;s~3&|T<*&$tJJ zosf_`A5Vi7TjvS%Kj!Q zo0_TWZ)SX;n-<#y7b&%fdTEpig23*vPW*LV_*eqz80)0h-b=@^P821h*oSJkC={;w z-ZJ7ZN#JO083iT_XyK|C9%s)Zzm=aWO0DJ5D{rQ;%7`I67Y_|AzD^=JyWiiYPM~Kt zBuUccm+~+ejV7{E3~bo2kxiSPMi2z@t3^V>!&&G~p5|nV9pYX;T<^^kfd;v_J~x%H z{L;@JX5Fu&D4PN`(u8KEYQeHm^?jF+{-~Kl;U-_w&Ph zHp=VT-0R)+q7F*LG1AGny>Hs*yy65@Hp{H<*|%#4@xxBkLr!W7@?`0258ZC^jvVCu zuU|ve;z{YeP*%oupi3GDyy)x-#M&0e-nbTWJchZcX)zJ5DD|ZQ7f~`?j>Bw5=abA( z(Mb;8{Q`j*QIvgc#3#s$>pSdJ(8B}kuV&w;Uy!jZi|p(i3I;4Vj5`rU5l36MEB{j) zxYo+i-YVHiatky7XcxxFb5A9b1OHg15nF9Jj=w%l>f&VXyzqKTN~&SBoUZC_IU(M6 z!Ol8g|NXT}V!DG<;l?U){`fm{EETsielFK1txLtK>Eqtp?j`MH0cjbT6dpf;6IhX% zi4)i7UEg1PqKL`{6Cmx9D7^w0w>NPv<6~LmB94JY7x&InP}RAOn0fQbJ620Wfmu!xwe*V6Z*(4pl-+dqwe!KACrL@s6A%;w)NrvY z-;&!wX#4;gDAU#-_C!(yct7)mu#G_a_x#43<6n6Y5Z>Q4&Ki%AS&&9tcpvb#crji zwv3=4ErDt+T_Lsf+bb9|NyJ5`6V_dQIVVdd^}@9Q{^a+5&YIW|MuvJY)&3c+Q$)~% zSSv*cL?p)`dnNqWi}2=)NRfqn$eGRe2SBt4h_xaLKe%M=F|-pQJo%)Q`CO~jB5D-$ z-zx2(SFVy4V%x4ZhRmK=Jfl$C$`~0MM|IR24QV(UdT`8_#Xhc&DbK z+I*Oc)C+mLxmdoBQ^1HH>_7e)3mclbWzljJz(a5R5d{j0@(Vcl+Foq=R_3J+v(2&< zK@jNfZkN9!#@~zBmRxRo_!vELH?YdDRfaAlrYx5G#bgpWQd`c^+A606OKx+$FE$nL>+^cSq{QXqO!ZF^m@9Uew9OqjI`S)SelkGIln33mb>rg=DY7Z z>wJ-sA-(T>@(N1>BB`0X%K-4VC`qdJ#e8uKnu-pJb!VUx!uNtYItw3rI5CkE1TL85 zR}5^|<1koRp0R|ALuS0jwW!8Dn5YOQNmvWOvY;Ho0}a!DYe_&fK|>B!g+wwInZ*8& zcH#*0=8L}^rnSg|XcD>nzBQb|f&W-1*ZQuWrfSzQHaRa87<2jbz=wnw65xv2&$V;g zUb6i3h@!~)R6m@SC_?%b*OPX|^z~-0 z`P*IGnV?_Yw1a3t&90rVVX_p=A}s3?eB=zv&T(cDmKDkg8Z0OAjk8Knqs1$UCXH)< zx{~E9R(lhJjEl<6d-Cg;P-_0C3NRODH|I6Y=6jl!%fFU;oKw zB0R%MAqhA}_jn^&*Dk?(o)kS51cBk^0klmM*b7D8-u)~S8ZQnM_v7d3fjZKk2P2cn zH5!SFjzbe3NlSYb8hy%S!Zw%mx-1+}Ts+NrkhxDT2O{j=2PoaMQ;I-%jidMWW~gU~ zg-a8^1NPPV<8wV$;dJ6u08ZCS;N<-AcjeeM{Wv-I>zA!q;ZkXElIGe;OLy(;IC0Lt z-ZdGF_EpIfcV(TGa~dB&d$5+!$ViUVl*thWUr&$!&)Tc-81nrJNW95oQ1x_HEdiVSay{nSlXJ?EAJ?^SdtZ>(VoabLMQ%GtYUx z_kDlA_k~laUVfhFF%J}Y;UAzO#KTT#R1!tGC-`luI8aKpHZs?4#*(NbK)nE4q(HUj z0CW58M0N}k8LOs6J!W;9_lhVbIRO2di`dL&5Gk=@I*8ro zmLm+1939Bd|NBvji%wE^x{$n=wvw|bmPjupCX1a<>9`eV&tozf85und3P{U1KvZitLQFTt3$+*>Qj(Ja!shS7W-;oI z?%j!Fxq$^g(0>XNKgaX=RIHf$#e2T=S)_dasRw(GK22g`A`d_QBtd{@D^ zvA#}f=gj7@3OzyVHWK>m!ytjXR^G&e+n)wIoGvV);N8!#^jyHtPf71UFCZaium-=@ z4s@1byw4TUU=L(dotf5t3%Vr&QpJ8&Z@7`CUic+J>ozhp+V8q-^Ygz%rqR%S^Z;>Q zG5jLw29A!uMGLq9!ensp=sHp9?e_=wpje#B@ToGa&F+0;#_`P#ufDaFdvCwzlH-Z^ zW$}Yd5js(zYLbm8yRcq;23zG2wgsMqt9-GVl+0RXr|K;D#ShW9YaT=W{m6r*B*e_; zjLpK;5x1lN@Dmb+wGaO*(s|(N^^5PbH?L2-g=n0fCOl-;QFYW_^@z4 zAj(jGIX<7TU^`9z7YL|2!NL)L7WpI+?it3Wkd3sAwQ+XPK)7cZz5W&Wjkj)e z%rq|D9y30Fpu^HciQzb=QyqlHs7d&-iT%%fIgPMvx8as*WF589T0MZ>K2BTB5Ute% zgpR71)47p{-+0h${Zb^=DD zks}3r=`i*o3G2fze#jLafj-JB1tfuOU<3WJWbRy^Nc3!f3~!v|zBf1XR{iG$c_>(T z(^WLp)w+N|6+>)PWs+ZIVE(d&uKE^&Ah7S%wJHZK&8w{B1s;^aUf9WrPbIh{uu0{XIihDLk|TOPdk1L60m+M}DwB*KhtgG4&yYmK#yb zQgX*EG2}iwq@OR^y{KS_KJ^98n<{A;7-FQl3-wBG&YTy}W+ic-W*GxrW28A`6bsLq zC_HZjBomd85z~_z8cYmO#V&6He|+h;0QhP=DSAH%Iavr@3y^jG8cWa-TISXe(pip7 z)kDE9@i|2;_G8upCB7<8@8I17P_QbHS>KaE*k`G7$+)+xK``Qx~ML^;;hpY zlAIBT$pmPa02KDJr#O02%gSrFP|;k3Z>E9r0SoP;Rm?R{$Z1aPmrg4)w<1Bpl8hzP z7aEx5tK`*ZzF_srS$wvAKk9WB^78bc^l)`=K`YQS+K*y!5?YfH5WSiIV+|s|?62gN zf5?)g^I&N~5hH>EK?$@@00aOb5?6}RWPspi(*T0F%vt?}xcs)jE5BT5WMC@FmU&>oaIt6UQZXEo)?6_t}CR!~(~hXhB; zk++o}4f$cWEAd{Qh0WZ-qw8+PZWjRqfJ~!u-M`6XM6QW)jUS~Bl^7i3hEvJt2Y1{% z#8)>^3LUMd69i2mLT=~ms z$7^n`Cn6%6($X(UO}&bP2VV!kY_10&E+B!bkqWZHR#VXSDZ%ncDtelk>z{@Ex-No) zm3*9;24t}F!%sP;RPcp#7GaH*tm^OtTP^BHSQu-m=9UxwT(eNeirIP!Iz!ms8^_HV9b~CGX=sDv1I*livRQbr?{k$hl=*|T*ggeL`q_J&*=xo1}?g~&}2TsBU|p_7Ne2y zSReHIqm&r(X&gC&Qss%S){7P|6|owTcTrv`Ae|S>xerGXggDxydLq4*yn1UU(a{1G zHYugN@9L+vt`08N)iT&NQH@;?1kT7t$c{^7^X4sX?bKFz9+0ufXTB>MaVlcNVRzhD5`{)lJ3^O{W8DO=`a`!1c!%myuF+LfK-ZW`>F9-Nm!_w zRUMuz?D3~c(m;63RW#QbI4^8~zE53GpgmFG)r}9h5keERVN`qhFvrUqOJ_NE-E$8T z3EX$%knw8-G+h<$hsCF>r7yP zV#n42digta!|l42z)F%di6h3fYYVyfOD7C>C0NB@P9YzIJSbJWgEylkSlV+rEaE{xdqN4?lTAE$yH?BN=^9WL6E_n$%cW&o+jlr$9Ms{o> z!Gki2_Iv?yKlU0PN4e>C40-urnvfQCR-1vh)7l;t-2XorI0fV>v^FmNxM~!ZPf3 zJD+$dF)lDMk+(_H);~pR%pyMXGu$nCqWK`>=&?NB-RP{Vr=M#?yPSC$B{i1PlfP z4aXYU_1q(j276(*uV>Rk<+MmX0en%*hM3=c7KL9M3o1fDtpXnz(GhCe`XzL9n30c< z(9vPWyK|7@6M>u!N~1hH4B|zQFl)Z(1ZW9<0^zuX%5xL8yso14jf z{~dl=!Zb_Pg>&THJw$pb=^C=Q(wks{y!`&|zoOL&Ed#j~J;Ox>y5BIe~ZIi>P zWkw`ZOQHUY&o|AnW*3RIr3HmzCFsjIUTWMz-ZdSkCD_mPLf2{qq&DkiU4Kb&A!q6< zsk0BU{Fh=b=S<*0j2L_hcDq~jAbr6y;>V>hG{U{Vdz0+P??4hbkJ)lRI*j#{wuv5~ z!M0|?{KBX|6@Vbbx~|1wFp!v-=mHCQ=c*a1wD3$}HBUVusz9X99wIeWoLKF-dke)y zMQlCrIUk+xKpwDw#b*oz%LU{EzO@DWyE48CUdFlc{oGF`PBwm3?=*|XCrxe zdK4q!tX!$1zTSu~XEpiNW$1J|bUN`x@b|Z$Med`V+EQ*dyXB{xu5skFk_+S#w=9Ch zrQ)RYdk^iH_MIgeB9Pj>YZnI#^B5dI4IU=yy4z?uF@$fhC*kvanUgskJOHGuS5aIx zh$cl~^2YlJDX+nbqiCL7iK%)Al2HL&mJ$7@Pa(vJ z90Ud@j^~UZ$bIA3c%7KZ{#6kK;{`CaO$P|t7|2=e4iM~i+=`Dm`kL&-DzQ2VkWn*TF3SO^&qz44(#^v85LTb)?pI8m6M61O(UYGf1u0CYfIOX zXI0WP(odnqj2$SgZEzz^PgPxNfBR)*YBfVu25RFHNiM0Ud#I7++GswV+d`|kouIgE zhN}%O&mwS1qOvmQYKBjh5;zLBp&6HdEUoMS_Iq?)oL+%L6#E?+7hneT0Vg zkZPQRIo3w!C7&z=4|yW<_CQh>MVwCp6&KDEp@||aP;AdR3+MBB*>=G00t=I)2+sAf zZaW>r;{Es!dXpV~9Th!i`LJO>bN#b8)>=eH=ywU0&&-w&mZj34vJtyoOz#o|ffi#w zFaBmPnK_BP^3*XTG^1MS{sM_)G-18iBAY2{u-(a&f;keCVMP_JlQrv z=p=aXT0A|2Y3&AQ8R;V*#-ONOhca7*f0%%D{KBMyZS4doWqd2<995D5LjB_i4vL|@ zZWyIyFZ$0L>F*on&>=@^XlkXa!gA>(!ZP4i8^NzTk=E*7ES=|RsUE;DOh#+9m};~p z>lUM#`(%b)N_jlQ(~lg;`4-ooLDfyu|zGRMk0`D&9=H zOPKJigS(unOcBaRcO~JmA#Qwx@K|4}7pjQWh#;Y@J&^W}K-$^^>FoDGnKDGYbetn^ zJ?C~#!$l)9wT8$6ao{i-jkIATB`2K0wr1vLu0Y-0#S;%a=8~;-E{#SbnG03y*s+~s zjs2`ijYXT5&4!E#Df6=@3aC4ImfDhPlx4#h@F3JPgmBL=!ac)iR8%69h>;_!cNf-( zUd~+S$H+k=9g)eXPc{-KETOos6Ir4tYi#fDXQaA{{*Mk~HJjNKzXAg1aqk1qq06}& zU%5Bq-JzspOp#Ro2F$mvtbhHw%Lj-4yZZ{X57DF3_L$%!RhCXpczjK|Id;{3Yf z*a2%x3z2?mj#riOP+HC;<(cW%zx6Fg^uWnIzyT0cLoUy!OcUW2J+PXaUAplA>z&a9 zhbqdEcSW!0-oO8ujY*kQ8>xn3;F6>yFxe)S~$ z5!CVCw3Y@V_0AEW#UwAN%sT`Rxt$(LP%raf!O|EOExn)Ar5Wz+{1yFZLBf3I2Kk`X z-p8lA3eX$2F(^?&S384!BO=cLi2s%fUzH~Vog!ekXc%Ik(+UidvR=jMy)s&BtmL%^ zk(lVoeK}o3g;}Q&pta+$?eV(+@Qix`K@ceE5Zn29wSnxg_=)~FZWAM4iZGFsKOBs2 zuqOj_ac=l?HvZt-q$Mq5q|?gX03*2wu>yk7jQ&$S!t5ykVPpazIQa*LY84(fPgb>F7%M%CVy%0@G;o(Yoy=dj)&5v59IoQ z6k5iDnJXJ~0S3E$+UNv8Lemhdy#nzGRIp>mcI&!v+EKG{Q1~-R3cku&kc1pnQ8XBXrVHEsi_c@ju}9`?K(r${8^? zu<6zb)g)tweDj$CB#D}Tm(u@h0mRk}Rm z2hsF&$r;kKvM%d*&W}FjZ45HzHeo6)nII?c{2K0oVsR?{A00xb(YVqT76xcYj+p22 zR&0H9D?2Omhzeg!hq0dhCy$FN5N*u}g23XX*+`}E*`Oy+Jp3S2ZJ2gIED)v3(Q)XV z?I^6hOhoF5H^6?g~8iTB80+v~fy`>_X!iwLAr zT11KAI8BCLEUn@sA%2wuJOqp2!O~`BP+dpFA{m9ZRnM_6^~x5BM*?_r@}|#NluQ=ZK4Hm+p4u9=fh8|sNCeIrsUur zQ4PgUMgQT$E;SUz;>Cp3HsIUUL0eA)ip8mnJJOjZrx-cg(&=Sf9Jdgu6+VCU5Vo!+ z+AU3tkBsyE;Ahc{B~jyZ4(!dW*Z5*!&J(9Y`se8n7cl^1=x=HY*54bVhzof;Dp6F?`?(`jKr0vmM? z%=r8P+Kp|r7IY&~j`K(JFNh0B5Xs7e;2)4cRd0nWiqJl6`N}B5Octu}<3!u1gev^7 zno?jAvA)|Fz;6z0B6Zm$z5gk{_kj7!X)8VE`i`HMlqbHsgx3PSDXEk)GUCq{8Xx92 z7ZMp8MgmdDyBi2mX;54k!%heJ|9B9evBh*NZ=iN42o)y?_pD)7YYDTWJFx@jYsBB~ zsMk{JdUny-DFUub5tdu42T+E|T&YH%{&7I$Ewlyj_D&O%$Fs81V%J0&a0A9(3*srP zsbSM~ck|iHe?=l~V|n%+fD!8B#fFf1$QQ?v<*z}i2;|5w-gk@iIUP7kl_xOj0tXeRz&l>fo%2?*OfBWU zySKQGUs5clHc0>p5{~TKOQ$lnVf}L=yW=_zF;&OQTz4rlvwBn z^N57Gvm^NScW>o?GyW$p&EjNT8R(Q8y!%=)QWzWMNGlA%YUxC#iQtx;N4cg(#nB-d z?L7?)=&QInJ00Rzh|w9CvHw|z+mR_kapO+@r{`B!*8iz>nJ7Q!Y+m~mKyhXLKfS&% zN#IY|v(z7!Et>=>}Lfi@!Nxeg{1Gx74>hGteXF$<@>Xye~Y;dP-{_*g3T2y{w zezXH9%oIJCJYh^2guA};0O{!&*nyAV-Gd$2`^ukLJUf!G)Kyd&tGRvkT8I~`^iCyt z{juaT%1-Kee@_wSzD5>ayNriFc#lj!4a;(ZX)*fJOC_B{0;P^gRL0_EoGK`ybXzH2 z8H2R_!^*M$`Xz0jM{!Yh8bOGrszaO*AYe zpGZMaOsNa9VucQ4rJgwpbQp~SQt4C3G-@cfxb~S`hXbIg<-By-dzlcQ{OI-a-<|Soc?jckpv!KhuiBpAG%wHn$v#};xJVxWdgmA*N zbVi3AE2}0uHi=D}wz%#CAU9W!{>!(J4%9ND48*penQ)aa<^w*2Z}P#vW-i_}(l60yqPb93Nu}uoaRCX~Em9s5p5zbar&$`d znr$^Nk`=a^_F)Ti{j-?oe+jMKOPEyB%lY04q>^5aG*u8Rk0kwj83^2jRps8OUpHRg z_2)xKfW3eHJ#neo*nyOcC8Rmp=VZ}IUOVs^7ELT2=RW{MKYHKUZszrCiB<(O;MvJy zbulWLCuGXZH`^AXpyB=kpJWU(WUe2^@KMH+FCliFG<1f*_Dr^&ZFa zPx9r!J|x|9fR(@mQ1JAbg>|T%iq@+zmkg7ZFrSogDa&shWoKm`sS6f}iiMNfr>6Ei zR&xiVnl4H{+Rs2+Gg8Fge{{4!`u5-Ri_{z!SkUYBfY`^sgD>Xh5ynEp*m&n1lg9DO zdtW=(UwiX46k{Ij^ym;%d~-iT*5ep|m2#Ijfuw(gp=twrbAOLM7E6Z=x()r2x|G)oy6DE;JFYCO{+)og_ijnhD zsBLyvZBRt{BOC2^0ffn#>I(xRNRF5*dLc7zLN+ep!0{tgSz72Y*0awMJs5CA57Oha zkw_r4dzc)Zj%D)_9oH+K&u)j`y>$q?9lkhb=9YIKWYw&-boUJK-240RT{NHCxJ2r= zy$!%M2{)2zhs{qs$x}}~$@Yi;h}XPfEapLC*7ndbH-^T~YVeIQGSWH5%2oHUlB+KX z5S(VWi$KA{L##*&u=A4_T&X;=&IHt>t9j{6BWH3Ckem|);7XrrQTelJ;}!s3_|1!? zEKdeX#1N+d03ZNKL_t*ae0-u#{QeZ>Ah))g^1Ci|c(T&cGcVbWNvY}Vd--|S1k7np zZ(d%WUX0$vL^9B|j>VyHy5l^BADzP5HO64y2oXsNx{G~?44KbBKri9*#4}XqiW5M; za2YAS08I#EfjteTxqipEM&K@R?Pz2vJ5==FNy;!+5=7UJ1EN{gqM_o|e3 zVGZdcl2VuFU$1uu2!?7EiLqjG$)1nmSU5+FA~^q+klKmy0%){V7%#w6PjT4*VKNuN zX~)W{$vs=`7D2do6q>QO`Qtwi=vTOEB4D~SU;vSWP+IyW5fRat z%IjQY<;k&#Ka@R9usqVmMF{koO`zB1-PhzOLP47-oRE~6K-Xw1YqFN(r}kl4P8xQ* z*iR-~)v0pqjFG-f%>TR8xP8k5kGXx%`S&Fm87@xKW7&TYug3?PGO{V^J3~g)Fv@h<8A~Bha433Du(T;&0#-lqq_}=5}-6L`w+WWiFhAeVbxdz<&@qz`3w6=B;)X~Zr zt1rvqui}A^_HaDbz$4e)icGEHzUy+h_UDVp&DFE}Px}cz8^)}~DuVSjq$LKCri(=) zft>sAW!I-KP}y9>t4ANDs<~TKX`1CrXG1r#h6$A<>u@`EN96B%t(G7B{%+SbZGCeB zOiPeZ=8)|kXlrJkAdnrK$g-tbM97p3_6!pepe83rhli*>ip|`KUauDmsr8QHGbSZ) zj)q(BymMOLx!m{sYmRGr$JWKHsAT5-{V-v-XVQ>+coP3;o$DR#bO^|r{gDwsd}0a!Q2Z%JQ4G6stYgQ(AI{v}qBBf9*0M#*4CY zQH4hlv;e!^hB!BJN1Cs_`5Ja+;2umV*f!bJT^4Gq#ka}A01f95Qx)#H;~pfyxzZ9Y z*41*Mw1}A5k*teLVxX*_P#-VSCh-qK1J!P!*=G;!W_;L-+_T~&?ROuQWACmf$=nUV zRsF;G*?O=B6p<+0j8R!et)-KpDg(nI;)s0MTR|%jSS{vfdT7SDXfFdbNNbmI-JRLM zO76eykxSm6Gm2ohLx~}uQp0h4Rh|>_rYcYFT>W$IT>W#(Pu0-)-Wpnr12iELvESzy zg}J^YZ;T=D+*ZsUoy4ubNqm9!4pW+UmNnO};n%-@k{5Sg0Dc+wTInW-N*O#}y907r^PSOgM8C7w;2wjl8qm7da*vMI7B zu(s}PHqE)f-ojy;+FQUbL&%o8z|ow{K-cH$+&+9&o_NUYF7QwV=+6(5X+A|z=S3nv z8)h(NnAWCqDCUQNWrVEQ5bV9BG)aS@8^$C{xjOR%x-55q0PxO-iS(w0uuLcF)h8@z znUrGG>53pA*P)Hc`C5Q5HIk5bZaP3v+QXS2-pi{$-r(}sPCVb~H8 z8p*@0+`E1ic3?@y5)xC>kO0Mp-a|Vl0hkUL>~{OK6f0Ro1e^Q

o0M+MzOj_m&vZ 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

<#e~zbMGU|4WxC9dn`k} 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 D0n(RI literal 0 HcmV?d00001 diff --git a/assets/images/camera_icon.png b/assets/images/camera_icon.png index 684107a8e6afb59ca01e2b322915a5b5b8ebad41..d25bf4425462e38afc80a2476a19deb311799870 100644 GIT binary patch literal 8472 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 F{{ehLHU$6x literal 3040 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 Hu0mjf6;(#x^!~V>h-NC*SsY@qfQPzjJnXc6R3a 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 z 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 literal 0 HcmV?d00001 diff --git a/assets/images/geometry.png b/assets/images/geometry.png new file mode 100644 index 0000000000000000000000000000000000000000..22ba1916b920dd317e3181814febf112411bcbd1 GIT binary patch literal 65705 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�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‏?vX5?I#npI2lW2H$05)6h_?DQj$vnYRS!lGbz4 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Ëp*f1r&}arroftPvWgXAPMq&oA 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

)-!hOjA2oy%D21h>~f-O8Uk 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 Q4O}-F8JO!=oN>MX9~bxJAOHXW literal 0 HcmV?d00001 diff --git a/assets/images/i1n8.png b/assets/images/i1n8.png new file mode 100644 index 0000000000000000000000000000000000000000..22019ee2714e142bc85ee95aa0daf25016613f91 GIT binary patch literal 42367 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 literal 0 HcmV?d00001 diff --git a/assets/images/lyon_city.png b/assets/images/lyon_city.png new file mode 100644 index 0000000000000000000000000000000000000000..4261bd1cf4d4ca558d20c394a775a1a2ba853219 GIT binary patch literal 70534 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%0D|0)kfJC`qD0I{qQpZ4Ub!>;#1k)!jb|J+ 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%0A+%yC+L=>Ux723f&lM4%v+ zKu6#E2b&(L5H|@~$TR(bfDa`8|FX0jniTmw=u6fDIr)gZre1?#iXYoJJHa8V$x=Ju zDEZHae3DV&_)yJ)%4Qs zm!UnS-r+t(>Sq<<)3Ucy*-N!-GA0@yal|1}^G3E}gyR3$(Az*Nj)CHiIDk~PYEIno zh%FCZ3QVq2>RUrAO!^H20EyTt!q5G^_T} zUx&8$44;h`2gwIz?jE}`U+>r~E;N36Jp225+_r}GbZ&Z*qW>j%iiYO;#5viq=h!+) zIHywN7+DP#C2BtDS+8R->56LH+&s-x62`Jd+H8^>2r;{G=(zamn*1L+`I-5`>YJN>;}E{zsA`O^QXIAB zD^5_kIk;I!Z#Grv&r>XW+_@ed-;ezDn$_3C*~EI$NEafSCTG~-_t4eZ9}VAI1!8*5 z79St5h_$sr0Hk`LYv^w86Z)q}v2Wd`@X)5+8x(B(-?@se<4TlZG=;FepnJ}?_uSB# zc|`wd&L4DO*jiUr^6c`GZ^x~a<0&wA3Dh6*0w0{buCu}mHF#eOaaA=pC&)^JsEI}> zs-FSryNU9+#E#P z(@PJQ6KjG%!B1!ifuMy?Q<}VlMb>ChVL^~wCJCsthlHY74D}>8WQ<<69hNlA0(*rA zoC!w&Jzp*AY|vB_pLN?~3csUR4p{a2NE^NT0}?>Z=}(GQwv_t+qxO0 ze)pAd&?0xBSaofg%y(H0F>Q$1H%@80Sqz|ygjOIurL(d*53}QhsV3`_x%k-4~^?C*r`d(4O_hH7S*1a zN>3)YsVgqqWFggYzb`fxcDaNz3T%Gi94;v5K-5;<{82Wqwc}1fLv3iVZn#iRNS`{j zPqZod03c>fVm)dzIHb%{)CWs>?Y=XXrYurP8s71v>~ZP#V4-NtdVC*O=w@lRy!kCJ zSE4*a(YRjqKOIZ9`3Cn$&Rhu-4d)*`LElZ^CfbRh_6|4dDQZrQoC0gkw|}>}_17bV zzeL5$lL4QMt_K6~qFHvjPY?!6JUL68n5gR(1Z&8n>3AgAy)>VCzNEAv(k+^f`09#L z^sRu%v@j#L9F4<}*LMDExN@)4_J66nmW45BL1;gH!m`!aQ+X*xTsb{0 z?d(vu5u(XS#;(txrO?d`pZmte>kei3&Bfo9lfHj~UA>$ChJOrd_9?()hHE{ggDvtIN~icdJx3b=I+Am_Q2Bx0XW*LW|#MDCqm) zZ%yWum%8V&N>>g%!^w1+zfSFKTL)9CVo+m>zOR50_|D?<)g%$=+vl5 z>oG0uw(8W$viUI5N=vCm?`3S@Zd3Fsy4=_1u=#SHgTTwC84d8iknykGY~{ba)8H!Y zwRI`oqImm$dX|0j{{DLYV+#EKK7f`~A@3hT@DQF`U;DeEDV~yKAew@;bnt_RVK@+i zLHh)aI_9u~9+Uw3m{$q;_W=Y7Z{@@$!V7=|ehgN=;=vb!lw^U3p(U$eY8nU{h>24i zj3$mhOoj%?LY1G=7~;>kLjZudhv~_Ve+7YdL;!^#uDDpBY~c6j`g9?gVjhZ$Oq@r2 zphLYV$go%r0p=ze5Kyv(n*I#^u74r@7aAtzvTvcQhI5e8mOaMFW#K~xgnUw{I%u%d z9WgA3lnNXC&^RrP(h!{!(y9pt z&o`pw1SAv5wle1GT2vj*aib14f{pyo8;$SEA2DKoHk_6XJ=|?tSXjW`k^aSXTE;W6 zDN@tp@cLQKTB>-E60eDjRo&yf0 z#q4GyHbfOoGdGiP&sIMl%h@H+@Gjiy|p>-8kUvj)|@<9IB$~a zS)6>CfG;nYBYF}jli~m16~0|&9u=u<)aY#GX%_T){Uo7!b=8M{#cG65yu~~ypX9is z^+IdilnUjsGrF>9tQpTZEZ3UtS*xjeCN8G=2D=?g90V)sm(Eo)(*A`8d}pP>*90wz zJ$Xq^dSE#DU((M1Ip-h6aGugg9L+z^JU4j)Ag|}*GH&)h$rrDu@|7vSSISq*y8LKj za=4$;xjoAlDGLTQq;&&F<0$96|AY1;Pbx(f>*;tBl8#?y$Y<}5=)=KrFme`)j~9kJn7OSOMHu79H=}Df6vGIog?c}4o znJW{1KT{R?_;?B#_n%PT#)d-GCip5ol`&xs;c2wYF9|U1z|&! zWP*H%P#wdvZY`b?qHG(%fU)9bhnmQ!tI`2MTxHf>_U*LPsW4qEV6i$m+b6xi8aoI* z)2V#l=jW{wU76L0qPb6+>P|y?Hp;Tli;WITXG#7W0u7_x$`+RzIt9eOGtr2%9uIcQ zGfBDTjhC@04NdQ(BEVzJ^Wb@Mv5sc93NqYhvh+GdUqPW?F%d!KLQ(lFUZsph&(E?-t9UBEmrMd8^7gItuP&x>H=bC| z+J5_5j_QU9N-{EboHI@9eO&Tc?P;cNf>-^q*_bRub(kmUK>E?X#Xwpzi6r5V#GA7M zky2~g*p$B;W_>H?Gdrl$(98{CS*wuou$@t;$$JvI+|w2My3o zc%gi^;c$O5wor+Rjw}=+yiDIPQNB?&p{O<~4e$251r zC6!2hQCw9@5z}GE}30j&iNXJ9&HkO)M4_}rzv>Zur<##=M0X%d%JSvCl+=UV&&1WZw zA6Ga4PEzGQd?UowM&470{AzS=?$ee_A8p9@_9e$^BZnIOS$%!w(m~3%-eGDt2^{|B zOp8fj@Awo_5gHN^T|a8r!f((Kt{GG)Wgj0kwB?#=j;Hth|4RvG<{{hOTf2*ba7R~oeMRi_=r;YvvH;%YHD;^5_Q3$<)=#k7)%4SN+s_} zkQ|Vb2nHeq{}B^HLcnb-t?na|pbWwim|S--fuoR^3fKpqP=Xo*lTavwKtixnhCBwJ z8VXJYOEZaqL1I#TmWi30DP^Po=%&R`?lZ6*N4gDq0N#M(5N2KJFHCF|jrqzMq)iaf zBHIUX)SvS}=Q%Be5C?=<75GW}OL~llO*fH{4xJh{9rlhOebn7BkO{48)J?eBoI$P4 zB-OKQS0Jk6*QR$M99x{T54<^#D;xXUz(0S%)}nfwO#4%)Lm&r#R#}C45mOZm8k3m| zW9^5DeNQ0=P$TL1iAfMOBsRQ&`v+ySu%JQ=q{we~cSz+Wv@pA8KswDu`Fs57C!=*> zw{u_g>fXP+kdVLWZY82SDlIuR)mT@zVrFB;yRf0zZKuq~q;l$bwcGe=qdMffuZSp5 zO%jmqb7cykF?C;O8exS9j|*lI-}{axb5GtcXmURFAw;X zE*~!E&3{ZN-=B47k8E9y4T~+G7aoV3F*hQSYSZ?a;dF5rq{xHoGMGo%E#vmGF*y4>GYPEv2K=aaOB*pcsiFF7LHA$p-CgQ`U4v< zNc{0ZjYzhJ34|v6^}jVJ|FaLrg-8vC4k0pjsXoL99#K9X<37&%-#4!i?qVG*g zbDZgy_w$v_h!jd(79V5Jn?t{yxMp#v05>A}l9T*f_3Z9e#=_(pO{Lk#=zMHM4Pa~!S4Xlfq zMb3JfBdRA2q7{n14@PyF#7d7&xaBSU1`uLmgx_I4?mjlvzg6ZIGQwFGr+$+5OXsBQ z@5^_DEj002Z+VcE@MAQz#|WXiqPXjGhvqQ48t{OZji{q z-6ws4zm|fa)FEheX?;{7_U7DByfK+CYmj$@VoVr#YNBBPt8e1_Zr3GyeBc|JGi21^ zkENmOem=?{@{hj`Bu;&W$V6};^N-#Y+CsV) z9vDE8G=3qAv1qBW#puU9W~27IP>4@E$)zd@)Qa@AwP0DcY*+x3t08@ePCi?26-=%t z6pAcD1-H`M;BWf1&W9~+QpeB{qnUS+m{zem$q_`!JX!yVimQ`LwdBSxE^b}s3^`pcdg$BGfw*~>3$mFy%V*|a{ zCep02ue6K9U4=*|$-7s!;G3PB^NE@^Jb;s{?boLV0wUSavd0^i#RC?cX?LG$4RUgF z9^p$=MBHBgIq_r?FJJ$DZB0WJWrQ^3nAqY|A#AbU$<)M`mWbQrIC<%P>B9Sh6%mhT ztB)TKn}cEfW!x<;gFHjILq)6(jm5oBu2IAG z+ZTC4;(hef6m<)wCCAOX*V796pX^w))X1bOw$~Iz$$lwkh`?{K75?*ic1@wi}1AaYOK9}&SlYILss(rtUL`Erg^L?{5rIxzG+?=AYAr@#SUIsW3SY-e{Uav7-{&C_uy z>Lg0N;CEu*O++qGJOAstl|ntmE)oa()yj2_X)B4jRVk-EiS*8BC0?f*-q_O2PJ72$ zVe|P@=&aht_sHg8&E)G=#>{NKq%u}E!(TYx6ywQs=gbGC3mkNseBJM+{zeS>!p)q& z#wyfUmm^*a@v4^-aTp5EDvc-9n0asX^qrV|XQ%YqLeIEAa~Rw4Gq=2HKJ@9y7fzkl zgMYBGktD)mFZH!^zVH<6g6+QfI!>C{RFQ11t$L$gjZ)osxVpMqSs?9VN-oAm!M!%bBzc; zcX6(wH(TM^b)9iB4i2dG-^@+V)WrY;IoYX@vHo)ARW6 zDRNPYk&%Ce8eFfN%=Am6quvi>_^(d?X%vYP43!v1{3Xfx-9ERMc>0DiB0ja8-zE}@ zuy1Qs4Djm2I!J2dtf(I3;?DZ;2}C{5myY2)ExwBzOznQ_#x(d^02=bsMj$NAOSe}X z`}gYo2G1rr9v2tCRBlrS6W<~|KH_<+7e05e>4(je<&w&mPt0n+0gw)Gd^az;ptM8) zoc`I9*@1I4w+`1;AtTx1VetujJK5YOGNuS`F`Qc`5$asVyv2Rn&`$62=55;r$F&8v zinSB^D5T#>>Gk$_cRqRCjM~^T5E)_Nn0J zhnZ>E{y65B1tFLG**VhGWC+@0JL2?m?r~v%UYKos)cEmapl)IP=Szx=J-3{k?kH~o zTQ`B#)lpmhBo2-eHiu_#idG5KwaZH2t2U1}u`;5ZTwMQb?MqATqm;p_)#e`?)e6no zOSSr`?v9!rnvXBeVhekFx8IjHRy9>sRB-Z%imFfzRn@CKJ#4&8$D(Rjm5df{j|$Bl z8ChnE^1F!>g)iStqhvUj@T0AnlkaCoU;M9p0>`J;LgX4`qHwS}XB0S)n83$hxVN2z zlJf_!FMKtbB_y(egZx;7PuB1I4j&%Y#>W1wtSr~T7ng0`woZ92hUERPH%TfwUK;mA zZgB88uHO|N5H>nE7k+J$M~l&P-8I{-yx<$0{VQ%@C~d|-_xXl}7P}F3hnULmS=E4U zhsMpGJEsqnFH_On8wFE07d`c!p83+}sz_iO<%kHuuiK{!uV)*ZFBbaVs`#0jF}Mv* zHBYCcoUivkCFU5+Xy~MVf%f>&NaejbfXY04=*?lYpEoc*QuvdYDX`{Ya@v~nxP+n{ zI&J@r!0H!uU#Uej9++3iM9*Cf3YPmIiHYP(_e<6C2nlVh@CP!Qw)Z`VCMG;YE{?lf zZq~G;DBikl_gy36>Uagq1o#C+c=)(p(`$HkQ+VL;?))*ObHWF;l6_j>cei~{EI)5l z^2fT+OlXK@ysMnux7WOo`mmJSA+3Jff@T}n|1z36;orrC7J{GLO;9&+e{bKCV`{dU zRmIM}#F*dzAd=f*&Ubep?fs_@6;jNKtFR-Dc$hA>zKuRAQ?1*gzFNsvVx3qa!O~;& zvR$igJyiW7X=^g;AJ$v zWETDG1i1jY@nK!Bq3Dxg5FL7un^e0%aFDGi+68d)tgq?lW zE(!QGZBQd`S;u`cMR#IKE;ZP75R_Ss33YBXGL1Z|LFcs1gH9yx51hAkL7#w@oaNA` zX(0GBZ?VFj^YgwAjA2UFHK>mMh+^#I-v{+pxw{xb*I!Tir});y$Ctj@ch_U6wi*Kg zpde80bAf%sgbNaWm#yT|8u>n$Ql5%@-!q&cbjHjb7FrIjenUSND*@?V_@NS=xAt61Gs1zTWvU%HuJu9^_Y zFDNKVP$TaKpxstAM(BXJM)CL`wOAlwOwK}YpllN(R4p7Df8rzOd~0{Pw`ZrPpij1Y z*>Xr{>*-!rS=r!s*^EojchlNBbE5^XKq5xo^y)Q|H9wrNn9|jtoV~?JcAV#$s4N=e z?L4^}wTF$#^oewing(yH)sAC&S}TKmVfaeNT|#MOY@w6!)9#D7$Nk4MVbK%MO2Xgz zWc~ftpFH5cuH^4%l)Uv`gc+2N&MeGgtgvh*9r#xypLu^Ip|z0Nh?Z(z__uTpn{6DVF zDlV$14flHhVF+OeX=Q+smX?+rNlB5GZV;rUhm`K_8WHIj5J@RPO1itGr5nzC-}#-3 z?_A8R`#rPPdiVQ2&;N<0Q5{wuq_wgv5krb$=VWDIAj11vLr07Mb8>|I-}B@4MQHFO zUX~J#OyL!K$Y^`-^tyg!tLxc*LqVBU?Eo?~8kM4pK!v7fzw9+V?b;^tIdzi!eWDBG zsZkjie&-i)It{UEb2h*48aj_TRtud7Z_LF0EZfu3xFJ15bjQu2-!@!$Yg(9|jvweK>>K^ug1~@c34PCV0Z*khcI+^df?A@l>LdPFi*38YCZuy<1`n9TY3O0BoFn#v3Ko+J)?+L*#=u2jBn8HV ziwsT~eR421mt}XfJKNE8ll(*fSr>put>s8kyT}7z1^aB9@ambpr1?8q(vX zK^T0DLhzqJPf;KY(6>v{Xg4l*o5W=W(f3EW(FThX_q2dHyrlkOVItzp`DEZZ#bdCA z#d(4tX|;cA4n*Jxq;m#Roq0~jFg-&;#dK-W!pggphj)NL+PR@IbfCY#G;vI>@T>ke zq8{~N^!TQ`8da}RVP9b|V6Rmwkl?_+?Uv=1IY$$O8T1!jla*v3ZPym?BI!G_%ijUU zDoCiMdrYFxOY%DnCRchTZtV&ZrB9B}|$a zj*gym=JZ}(xj+**_bRyHEjfRx7G?yH9*=^Fh@wG=EgS$biPvi|Yj-}o(DIZuEaaoj z==O6&n)}>Px*GkDqJ;=Ab?rQA>LEdD(T_dmdj?q+QV=F5xbb6ARygERJ;}Pfe?z0R zHuZ}QQtPQTfuM&T(%H?*+tKeh%%#Gx60M8>R#Y5PEM{b9lWp^I?!tGux@dt|gEtJH zV(4Xq0Jfa0pohTR{@*TTx2;d!R%6;f4>ngb9kXW)mv++^KU(BzuxdwKN9JA`Ao-`G z>uuLc@&7}JK8n>!Ev*zg@u{2=@!Gpw-RN(r^RU04{ymEJER7F+haIqzNHsR0emI#s z_GTR5ko}es=psnni@kVDz%Q9_0B#&`25V%*wLd& zi%Onj{{Y#o@f0W!+Fts0eY!nXTv_#>Z`ItkGbjnYB32M^^KN&4GG%n--(}Hp%lPvF ztvpvSG>b<|A)Q(Vme~8OZG{YInKOz%@cUQ2IkXvc=e(}b$k%2sfN7YS-As)d9z+46 zkZhs*tW`z>8qZU|V9WYEnN0C|K}A$$Y{z&lG*d<5W?j3`o&7Wj9qr~4knm;fOJ3TH z;pjeVIZ{J6Mb~bO!(rdGb^rrGFPk3COy zDq#xtW&0U1uz0;v`Sn4m$sbrX{K^=rdhT6A!u3;%76!C@qO3l62^Uz&O5q zp-{*Z>JKy}P9E2g+s`@X=aET)77f8BsmonSd1UelQnbveTrDNR?vn^;DwQMBbxLQ&3+&bUzI!@80C1Pfi?r9)sK+*_0J||=HO+?dCYwr4O|jf zFg0x%CPIRH{KJLUehibN@kdu@%kxlu2N1AylAdiQ_a@ybpQ32;tRO{c(9lkm)zQ)0 z*Tq-H7WL^0qldFE>o_9zq5XnBpJCic+NnBReBL#nPK;ZO*2Z%_h#4lW!o_yN<4Zdxmz7tAEvjI1%9TAuC0MTWltJ z)lrm{pjjFrl?OslWw*4p|Jt%D6dKv$ES_m?FDmM-AzOUf#ExXc3TY=Q{K}4uNQ6N& z@J5vRN^bdIYFO_R2SQ*)abaJ@NHAVGO6dHu)GZf}6W0C~9lBmHY3OTBRv=U#pYj~u zrpD&L!9|lusH%)=a1TCywf`tYnhg1-gQz3mr^zt>>*}A`nVNl3F0##pBhf41J|w5S9rj7$T3rpdtVrDq4?;m|yPl2VrV<-Hvr_Ee-PQmp;1%hK)**Upnp z5=0F=Q|W;ZW%kILow@ZNlV`VY$YVokOv%2)~HJfWE#y`d3os_V9MHB#4KC zVBDVPA+yGJuZYBSI8ws``L{_5$bP6veq8>X%&}u#PD~sxAE)`dNVkwD!?J~d7FXfW z{Y4)U&Bi07voh;`*-KrbfDp0}>3||bXk}ZBrK|HpbTNC^Xacp-!0uFvcn`lHF*>Ex}TdPRi$Y+Q~WzGPS%Y<6{G-MQc(+ z>WYIkIBT5}*i2g5akiprut~t2uc57_{ss^1(U4_uq*oAaZbUc+B5JY`~+IZFt(=Ntcz8ao=rp=W%zV z`QNtWla&87C$~>Lu;Dn8=yJMNwfsdTU9;b5Z(W=;`;x9DQP#_$YPf>6K@a(IHQlY> zG!d}5d+>A_K!kleTiKuZLPyp#MN2y-bRAoVCl|Y9JS+MjB`6KTM0M=F>EvB>?pz-- zqyU0PHGT)JlPz6r#;81%@C;I@xY@3W1A^PLbgkY~V*QHAZN5C$WetyO=dFFRo+w%M z#gJxt!49Jk_EM+vMz0XZ1o<^G-%RDLeu*H-WF)>)oaOUn4xRzxLJp!B$HP5~7Q>`3 zRNq-5#ku`g(d2Bj_SN6_UFAzb!PeU=iKg9yi(W-HQ|Ha{hMae7k}w7aX{Hy!P%?o& z=lwVG^uclR8evg!FyF`@*pi<2gzF}Cp0h-Gy~!AG5+EgnY?(G513P%0J|*PewA3=r zsCEZ6d53Nx@;7f#9E1UoFHd`kD}Ws)uV`$XUk7(bY$!eoKve6nU=|#DP6iy_5bAKt zIIv+Bg``Mr-xG=XR4tp06>|BVqz?|3pKMiBR32FNOztEb(%MK&&n?hAqxw*fHZ7AP zikq_+_6;vM3d$z!^t~xUNb(O|?2#$IiI9B>EXku*qb1v@a}8-S7-gQpv)P&Nfnic= zN{NJko@JdDI3D)Cq^Pf;ivQ2PJs&p&BZz`*=?Qa}0mnpnIEsR0-;Qf~QGYCF+;7B^ zXFIUAL^HrGJ;7Xg6%E>t8qI)hxHmTvRc$?iJS7pfi|95@vGjxRGE#jGj02`I0KQ@y z3?RnS%)--7kT_6rf|^xWjDKd=wKB`w+t(8lzD(gp{W=N`V9Yy|3i65KNp_GToN7}w zZ%tE9>x@n@jl7>Js+T;5sdM%7uDO;NycyGBiGC*C!?fU*GP8%{$)2ws&M}A>5z>B2 zy}xfy&n;gL`!S$rxqSsd)tPiP{=Jgh3weaCrig9wJi=`MDz7e=31;nDRbAaWXLlfE zJP`GKYP$@7T-UZ;S0T-E$h7{W6Gb+u22;uh+oWI@tDJ@*wBN+kl6;xBRLrK#!U`)w zDK$C4!t%2;hT><6cu#Xz*D9Vs(+BesGQ3(jOJKR98(*VuWrdyC%wnc`SHK5JQ5@aKIAhxepYCmwWn-Xzs}BM5@vKj@1K; zis%BIHZxN~$o&frwIKxB6dvAsr1-zv5oZg4lCJxdvnT)lx$B)tBaKIrP<~dVIIZy7 zm>wkw3mcpshb;%xJ1={MKd@4?YE&-z%neqnKdjV_+a?#*cCx-+Hy-_eT7VQR4>sf< z9ZC4o#jAh&M%DjdMUpTnmtU$?{a?NmXFsLNrktD8i(TV{P-Q;m4^6Ewlu|>05#7== z7TbTPduMk<0G+jrg)f-j_g`ILAOfZ-bkl>OE%nuz-mG&+^C2i6H>HDCb3rQQeJnBQyy~^4b2LzjQ^;D z6l^^yiWtQT0oOSyD?vPSjKDIonCO@}X#r5?p9BqMEM!;s9|gBv~hqn!&(FUGZ3FPKchE1K9nNy&mR5d({*0`o=uqkcaf`M2C9PoL#(o9lNLG7fO_i0g8YPmy!U zs}5)XSV3;(Vv-ky#U)LKm|919AEc)$ZB&tIiS9d$@7C#M>mPh~akP4c`rcF{;C2e` zGxxD|_jbJaJAFBNpOJHP*m{uv2 zl*tKuNicJ6_~Ur#N9dyUU>PbF}(7)Lat&52etgVPlLtq(FvI)5X;5yz+a_ zq@rdbTZW{P*GlS zH;R^J{u~=?SUO&in09=*^Pe}}){g(%FS|FB4%72u+GmJV^lZ1B`t@1eP7aEToPq7d zg&l8Fm)C)s#%5;)!JrF=cio`rw)5k<3}pbi?XQ#?#}`@`mWWpF&f2*pP5M>WH#QIg zV{)p%$=@zbve(J8?TZKQ)jBGpdjocr;{X16h@Fh5eu>Q*%_-LOalIc;KB=7ic9uMG z7G5%wnu}H+#C1LOSjh1|p1%Bhtr3ja(_wuKg#Dqk&62?HWb9<`$0y+SHvb`@HpDx! z-NPprTk*okgqu%pD>5WcjTIek?V`~)h$`o=?Tj`touK^Mbm^6{ACE>Ev`l|FAM#%G zzTV7Czw*CYS6y&gl94!*xILLTi-x(3t#x`V_)cwoDHea28NOGHUTdmp3@`a9vJ~IPI42NGte^H&+`05zzS5@V zaAySERZStOUo7P*321GFtcZh$MP9zdmy0F1CoNE$ll*s->*;zlBk9}RtCpqxy$=nw zQRR;SiPN`RJ)5eH{IXKI*n=EF{4JRmc&PXuNYkgANR=ghgjKHh!G!at>&>wN^%PkV zmiMB{y#<(-lBc((WFF2IJjx8fAHOts_Iy0fky<`Plr_0l*D|W_TyY|lf;@YpXzIK( zVUWZ)O0?-W{@B-Sbh4H#Tef9r{L=s|(3Lg@H=gkthk3ffs*cS@*%L)f#CV8`9Z`G{ zgdpr|P+&t#Ejq#QLV!95fP_8*baZsMDVtqvuIexR{+3jV*)Rx+i(bXY`pZ#C9^uz)^u#H&GA z;ilY%f2*qnR=j+5yi6?XcVrkBS{8Qx$lJL*;eJ~K))nJ*a$_>)vr9T&la0h5x3 z;FZkK$3qC825E_t1SSn3VSU2xHi2+hFDX4HfdDn#r_<`T%i7_rS0@~zyWW1}%#%Ef zPzWxp1Z$My{;~l=n+ISEP}P!33o(&U>DM3x7w+5VZ&`7oIJGU?<9qr3gvW)qr>607k>wVv=*zUjEVGL2+Xv#q=&Yhi|oJKBM8VtSsj(#Jh8}VW! zj;G~{M%zy99?oZJzgJcLWA?xOg^u+j1^?U1y}KiXg*kf^D})87$m1S|DO)m{(JCkh z7D3ISQaPFjY9S$OcjojUk^o99%pjN?M;b&Iy7`=j01-uyRr;)*Ab5Z>R$KxBQro6cYnVT)U74uxN*hW|#XEV;biR#WB5N#oQ0M zO&tp1*za~)wfm4D?@6yDfZliBdS2=t`rh;)a|MI4@dP2QoTU%@RCb{0Y71SK41KA99xS7h@5VfxwkM{R(r9U3cg!wVZP~~< z`+itMZW$&8+{e>hdULwAwi(Hc9JuObyXWgD*7PD*YKq$ zNhvS+<|`OkcVlA+2&a zr+#lp(?=&%X&%(;X(&SY#RQhK*vEGkSa#eP;s4m4lkoHNl#8LqQzKue10j00-3Y^F zQd4ZLuX$5;o_g0gxm4^rA_CY*NHA0Zf0$^DpByZWH=2XVob-#yEU&h*?ceeZ9X*ML zHFglpN8(Mn$tM3GR{kU&N01AGB@7YF2*`#nPxG+;iW;yoyqry^$f@C!*-Fbc?hkHs z4;$tCQD8EBa@$0A-4!xrh9Aq9E(L`~u5}IC;+!R5m*5@gZVZrbKN25kke<2pkd? zqJbWBR3C&$E_QY8?Tkt{>WHM}^N2AeU$l%#U;*eXC$lwlh2VBLKT_Cs?0?&=fM!!_ z_}ZVMSvaYJ&KM>t;ig@`(v*Ajy?N|W5hqP{Ih#*KmXp?8!0BqSf9V0 zyEHV~OP-G?w^V2!|K>o#w+9EFUSN72t!~U6Hafbxe$^}?i*S<$0Wqja6SZ$ex^<|D zIRkw{}a&jUUjcRf6T|Rll*68e9xa1`?-d5lIy0P@&NI z11u0RD}_s%@RZhhq*UBR8*v)ZRc77n3+z97Pe!JG^e)?=54b#Dq5tqql-f=s(f{J9 zs4Qlpn2(arsHsMFu8Hz#@R=ubZw!PN>XWghHNO%PO&|2neRQ?V2q4BqBolrhfATxp z&|8T_*fR0;EPIiHDwKF*;SI#i!)5T>*lfjP723scX%-0V?ohWDf~w;oR85Br^LJv8K&$3`!F z+A*hnFQ}x*M-zOev^6Agzu^Cn?kN7ge5ygTspzh6rV!d&a2l}z$}?>EjOdwhF46m@ z2^hOrHB9a5%2l>qxl_MhI_n};AbIhEtKkAYeNwk^^tRes?@Oe+tN3N)efADOw-AIq z&fVUj6Yy@L0|I^q$R?v*ou`4$NN6%!5}Uxml?e|^@PbOq)Gl^6_d$JeEUmt-fh3u} zT_(0czUJR^jl`Z59z|2!Z>TA1>ZjYMdPCYR*)1!fDkOzqs*#iR@UezyAF6*O0diZB~$&~PE zk&cz4#)ae)Lr75%G$`qMTDhUp;8QiFmzB|dhT4XP?|37@pGPJ?E&D=3b}co2ZN^$C zl-*YOfBxSpeMnN8m^dNEYrkb7JCdUE*`y++4nXZL50$q*<{e{X*tE8EKbI^J*6c~3 zcpfHn5To*JW(F+Q_7(Lx@GfvzQcA}vl$2Q|o#U#$|Agpa#2*{ob#GZ}`Cj#J_`bW1 zja-q=Z;uD48gkg%YrXw#=l56e;+*ok-8?#bY8}Ua`Gzao+t0?cQRCcuVRED2aXq)T zX==xPRIBuC`jP*V!qPIL4>V*?iV(7W?A8Ul7Q4!mIRYG9FU4^)WgKuTqq*4T+1WRfEd=CH@v_CNEFIcx@tF$r zlq5mM@^iCeV5ZWu_T_VZ1T7x}H*eECSO-ey6Dh-xnyI%=LLhAZvv(Q7D&as|1^hmu%e8{rvAjBXUr6*Q|(C2CLqTCzO-)*o>^2sg)MS#?iZp4z5eLVT@?{0a`{q%2%uoBu*U3va_q ze1=DK?YuBIT_Nnwj9xqc{DOj%7)|hE$OjMs<$Y0LvItw>%e_pi%60LO#L;oC1kH#8Ww$OC+xWlTJ6WsI?1rn9}9avYo)3~1A{|D zgKg)(`zu>+XC*GH>3nyi8ze4p{Qo)n-v~Bnae^f84w^vilvCSoG=*kJMLiC3^u1 zkqR!)ODgwD;S#6qMqf^)F(BW>(o_Jg<{Rza%DK-_8ij@TZ%8-Myo*3u){aqrL-&Nj zy3U8laif&A81RCO55@<#7C%LUXg?O4sbsa@b?9^9GhjqTJD zPYkqh@43zSL0HN$+hC}z8>vQv$n(i4g^DB`zjUSi;q7xX7J0tAhiyBbeM_Rs0J^rg?ZqwmIdY$&~a9T5@# zZyKeTY7lbN`CYppIZT1|G{nWxK+OM2>K_yHuiwdv;)d^XitBQbvUrcf%C*>)Y65ze zcXoP4cT%=KV@3yz^wDq{=*;W9PiP$uR%A!M!Wz}1_=fE16k_}A%ybou}l8Fc^x3z{b*DGOh<n}GI{?H~=qJQ`xy1bY;|`cZ;pHVFYT<7^ zj$=em6wJ&RaU3H-r}u)@m<|UhqRRW*$IK!te?FE_?>lJQjd@enu1UY1_uC^!`vUq$ zu|SYGTu|0%H^=^lB|H4~t|8o7tFCrvlw+5s|ZG!*hBsFk(qWTa+{%L3N;+cdK36SNK z`>?i@_{7n4vupBtvumJ4AB{;su&9A~c!W{kKQ_+nRX>6?-~F9WJ~_1iu%FYs9fJoO-C4v!8J8Ncu%jzBX|D288?7E-K#*Wz*UsW)suykNvx8ZDnuz1-$9pUQX?^Q z?t7+|e72K=iaEnohMr1%@;X9lyM$PnyRIAEqKO!eAOHJSuC4Q5Rmrfw#xbZ$6CH4A zVzPuDS3un6G8di>iHgR_C-7mv#AyF}iDf{uwbn4Ao2OZ!RE~$NiDP5Ig0r1UC!YDJ z>Y6Q}0vOs+N@v?9|NF~fMP&Lbk+&@G zPJR(d+)7zqc;{XZmJbeIv>vLL`_dP|(E7c2xgK!JC*y?KGYHM$8ZSLZ0;p^6YAtpILJ1eWHomyeN zWMy3PB;oIC)`W^FyZwdTmuOy(`m5U&Iuz4T*T+wBu;M+9wl? zOyYdj%yJiJCQHxlLI6d=J4`*RrWTzi!Sr2Cf+$EJh?bWgLsSyLFvVg5@L4K0R`+%p zvDy(aw1#6NX-_d2@-6VA5E$w@Rthv<#1@z^C5>G}PfW?oL+=cp$j%eNR_A9QSxa2s z=pldIFZmkHd%Sohiaqc|!inVhlmJLh_zYq{;2yS-hI8JRz@Y^(c*!#JLmNU6sFWv5S zbaa@6Z0K9NWr#N2L?~2FnLsqQVKE@%4;GCE<<|6x-y2#Ry{<+@?eLYNW!K_HgGr~@ ztaJQVklEpbJhaLq6h{`oaI(Ee6%{-gDe%$)Q-y7F>#ru27X|GWP$b4%=iT+AmrP>u&*_DA(I&@Ex&)&u;@88G|34>#Smt2=;<4# z=SsLQn1oW%vLlgd3RyN>m$#{{w=JqZ;}_`>Ai1MPchVU+W&IEoHl_@4bl48WoH;-A(T<;8z%9DwUwxtP^A%23$r1Dgac z&qbTAw5E1$jHYHyrYXbYF0=W{NntdBY-!?oQV%Xz7OM`t4hpEg+1>CqG-T-Pjp8&C zz(EjTVoune{jjn2aa-Whlr#5oL%I31=b$ium73s$Xw~Rc%+zfGMcThd!Sk&}7Ndr4 zA8W=IRg|&7H{v`9U21yC4ELt;Y|}=+e@|MzP93_!1l32 zoJkrYli2{FWsU=o28o=fb~1`n`K?p=X|G7CoxxQ}fczdMNWX>U4;U!IDDhzh$7hsV z7N<6KN;VpZm))!%Z(R3m{u~=fn=F`MCD+~Z&;F0wPCHJ}Ch{7s^6@0i!SjdC z#mpZ06pJmBtt{_DZ?5wfQ@_i8&o-4_Y#&f5yL_=S65`{RE0Pa~yhiJE9(V{So z#48y>9+H3J{M5wi#Evb8uNS#mk=h(&99MZ_fRLD&*xuuM55mQp+Y`F0E@tN3WBiGa z(;$F7VS%&j6$7!ZPSy|aq)C=M6qEFLSXfgNjh@}`rMz(<$;Uu&h9vHnqa@R#XlLhY zZz6m2z! zg->Q!|CnxR!Tb=|z}a@co~Zi9(C2#F3e-M3{pu{xl#LaL(})$j?%l2}HoQIP7ucxX zdY=vPXetN;&Tcz8jBXoqxyWAbU<8Rj{6n5g(cs>+EYeiIH+(NztSqT_Hh1@v2ep6{!~Oo?70h{o7p6;U;Bk5F)Nft<1i{h@I?P zw}zYJMg8bAC&d9YJslf>zc3}1qIq?bDw(BYLJoy%eKm06Ynmp5KZ0RUDXg#%0dVYI zXNUIzdF5KF8MOn0%ka$FQ0;QA^L4oB^)rqVyb5fX6vztJn zP>hwwdsd1HeDGhIg~M}qbOKoN&fXg%EFafRMnH<=UAmJ;+bdmpPwp}%9H~*GZ`Xb$ z^^3TioQ7XnuGbuWc5gdlVSVzFtDly=Ei45Lg%z+dxcBzG4S6E2rMn~(Y;1HO2WKvq ze#T;j(J^cJTTj;1h4%J;v_u#5Vm&gELI~~273R>9t&Q}ulgSlwoOk2VEY&K!F{4JO zkH4wFzzPI{xK%V8C%*Qm=gu%dGZ+w9AyDdCn?j+C%sy>wM9ad$Liu3dSmk}6wz_e} zyV%fof&Whn&}J3Y=!B)7mXet)`*wo*WhNY)RAV0SXP}2RcVFL*d3}>-{<~-AtG^dF zcZQW?+hVRq`78&|yysSQxG;fEzr*(j#sfLIA7sk4a1gQnw`(ELPiGUUOovBd1uP;S z_hOiDu*ZJh-#4^gy}bD35CDif*7-A4BxV*8Osb*C`XUG0`1R&rCUaQ74vmWe zwFKdX82Kgd0(h7R>!)6ZN{0ey8b_rM@<=N9$sct8=hekLUjQc+DgWlCo=YSg3t;%` z`3wkCgOD9o7)f~F&zr@HUw7ayNouN!Ut!_1BNa+Ma(_)>V`o;0o9?{xRo3K82Ey{b z_EMVFO`cg68n9y8YK?7M(}t>M>7h;jbF=e`Z=Zeb%I%*{(I`1RU{)b6n&hq1!)Klv zGHP>2Eo*mtmHQ1v7M*^bdJRpbDM(__to`*uB@{{kWnoEVec6aGBT0YeDOlLa!S<;8 zu0BRmzCA1O5%Bw4E=USN)&5jQnhb*Bx`pPxsTuS{npws{gz-l#EMXgd4OW&6a;Ur> zMt58!3T$^w*{J)1i}M9nuDApr9-neFh#vt!K#cOJ*)S_Hn;V)2?QbD6B{&PBMt@Ut zjzqouDTi_~5ilwc5HVpmLgkJn2}Em?1^9V1Xnu&k#vxCe7ht5Ugv4B5K*-jw0yNTX zi)VErLUGh7<0l8NNEJk=A7dx)NN;^C)pQ_P$(u?Y0W-0a^;ynx5OlS(WHC*;y~hNs z-&Q8y*%oSYc6(!%Wq1!La`W+Z=T7HhoQ|!3i->boEO|N+4f;QeaiAMj-F2xoZ_zbuhF2W zNgq3tV^?nbAc2bv2QAg?#^c`?_hb!&2PRhH;DV7q+AdRzKgyyxDNpt*?~c|VciT1^ zYP6!gT`HY{VCZYQ@H9|7B$+5sN^OUz-Yi|2B~ZFVJagNH>(*9H-^N^X2>-QvQA}j9NXMHL%##{Kp<9n5&%-o@%&qud&^3Z5;)U@ zg^2NAvW`aJ5io$k#8gW%&MnQK)^Dt-^D}T64nAK-ykfl{ntL;)qR zxw)l3NS+|wqgS|c6Ovdw>F~bAGKpSuAPT^)TC|6*cC0cqcJkHwG>qU!n%XD$6$;m2w@q@ZKba{&fa09P2-UX?%Lv00Ij) zp0_a(u*x7ZCwBf>|F;Y>Moym|=Qie|BA4J00EF|~GEK_9;LO#bEcUxSd|1zAk^2KM zy%DDeAXSg1zc&fD@jrIn+%)aPH(HEOOiun)STWtz!!sM~YN>%iY>Cf;Ad$nIdY#>c z2|Bv%sNw>%_?S0|J@l@V|1xFAV#JWDwjbkGCIN*N<{PnG`&}7tF@+I$y&o3Tiw`R* zDHq%-wC0Wyk6II%Ulu*Tdk92asQ14bn=-A z4NlO{Ozn#KW_Po{11}@OzD^zb9KX%Ypvnr7R*PQ!xw$a+#7xa3scRq2?wgb}$&A># z%Gr7xN(^vtR+cTb>Vg&b4O8WHQ@9ltJ#Skdm~*@zRK+eDhkYG{{`%i#8l~SA+cy3Y z7Gl9lHf-Akzf`;TyMd~_z@X&%`ZA?s1xy@T=!X!Ayy^FiOJh)!;w&--n+*LD&oy`4cDr0Qfb1z+WXp82foMDod+$BKP*xin(&>htu8fjVXDPgfG(a1O%r!7cCE8Us;QJ zV3Vh%Ojuh;>f}q8L)3*vaz20kdGealYMZ3Utodiq&kGGdgm!8FuA;E(BP*;w?^G-K5?wdQ^ldPg@M+$!EXvFxeO{(buj7 zwReo-F5z!dq|SQpJC_7U#4Q&;tg5mjN5@50e|G;>VN##eBR|JjA_|--WRO4XsX|{U z#NVfcg?w#aMv!_?N1Z>4vM5D;4l`+sl;?60B+tEj4+AoQP6PX-M)uUSZxN7(iAHWn+9-gBd+!RD?)-9VP{U zLx^p%oHFkY!zx%6NT9C+C9yK>>rnvE!FwQ-@+$M1`WJr=S;Pe!#z$1ylFpLPz3U0I z-m%XaJW=Vp64`bc>Hp|892$<(YSf4I9B>jlZBB^3cIaJ8qjy$lX?KpoF|VHGOJF*i zG^LIHvHw9u2FVhhXwCmG(3JKu%IGg$eNf<`mU@{0z7#IhA`>qVRbt^WKW}0TqDOY| z>f;0I{I(u*Nat>>cd#7~ufawyvd}E1gnvi%txzFX(nePeI! zitjsIiV5A&uD3@7>4ohdyF2q zm?Le+X%c^#_|R=`9R148@crSpi)}J%EkJm2QMxgE9G)0-pQ)GWF#j?FPs+l>+tJ1b z7a_K!Y9?guvC5)vU!G9T9#J^BU*5+{k+PLA?KSK8?u*SY_oRb8)NXlqqnGm4Vn@js z`xfWk{=vm(br%zpeAI0Z`_lbnL#vnb#_G!bX7vY^1TtcjhSBvMm-y{pq`sgdzn$`w z!ur2|NV$NuPk*9iKLGR^2V{XIp3h$DN8e>P1t$eRtq(V&izQitUGSM!l$H6Nu1VaT zarx$(f542Xv%9##3F;J8mAHHJ|8Eles;rvm=q;+YuwO+C!H7UbTy93BmYxfK?HH=i zO*#>w!C;}I0ed8mH93QT!-GNbR{r0zxBvPwi_>Qsi;m$%MP{LM&E{u(E?4m3!9sU# zdN!4sU*|I+D*_rcMDYMFYVtQ@Ie;t4eKKMm(u>Yhr)MyghO1@B$A1qa1tGjzblH-l zc~qM(Y|JnuSjsBOAB8NJpd)_5B(AnqDc7Fc-~l~p8YSjYC4*saWee3{fl03kc@)G z6txgKbjCIL(6Q^A)7eDZ*~Ps#9LrLgB#EC&;hLn#M51K{(@avt_P-T661aa6x%Pz=j-X1XI!3rz$U)F3X}}t_No_Tx zLR83Lc57PlX`0ERdB{XgGHJBilwLVOuRMfhK#bCLzVZBS`Jks~^fCio!(-~=?mkaKP@=67 zHDfI>oF&}W&_XIFKy5*wRGI6E>R|CY*%w?`o0yn*jsgQFl=Vc#7KR>&i@G`nmw)6W zzR15*>K1xTGk6uUQK7!MJ|jn9T>9?d{CZ>5pt5NT>m}8V&&}l6u-HvcY2`$Q%dr2c zng1n@k&fZ}W1n0T5p+IrgSu(NhRK$sx1>A*q4(bB?~15k<(~bbuHpMgQih*-sB<05H^Huv-n$Ih~oemBtD~()5JoZH&>pJF8jBx#wg7+(XkQSb%?6 zw3}@xV{V#JT0=_mXzgp^ki0xFUHe2H112~uLk9#wxP1#ZEeQ@A;ME-w!jr)T^4v^# z!v0dlzGQzb`HW$5_c3zNnk@PX2dWuh1bwaNZ8m}pv!M+gQJ)2et4VUW@F#9%=y@AC zSi3Lz?q4(&Dwck zSwz&45Hd0_bJ`L}5)z?i?P=4f_Vv>6oMNc*A=1c=h_YSgW3nvydgnv;aE}w5ul(KT zg&4)CyluB1C}*pDmdc4qhsQtYIFosQQCl&lGS{=nK^S_Ddes%fbRGHIeWUCrXQkSf zGK{Dmd#eleF2eFqiUlTQv2k%By71r^_>u5Jsmc~ovfo*-_C!0G;PUCDx*Ge}U9;mO zy1%(nd!{%TaKZX4DYZLU9?R_Ec|t?iP6YS>oNt9S+O&L3xK1H~i2zVYfSQmnBTcK9 z=(KFlK2Gnt6WLAZ`E$c1;io>ikLo4^dHcT&6ikRogWw9yOAeLj6pvu3e?cM05JN|` zlIsv@9_6=?7f_UKCvPNTbaq=V>PR>4t=qW|dDn@H|J4>Vg_2PHl|hTw*?P%ajE`IA z`-h*ffuSt%+M1fc;IQwXR=d7RXhz`WVCOYX(#F@@WOT)A{4l5>i$wCFALUY`@Jxpw zSDW8{Is5EIik3?2{Z8qy|81gU+m#+enPrjH?5CSd{T?nY3Y93rh6P`IV($gtbxo5W z4Q_??|J3NMLpx>4F_tcvN7UhyCrK9w+7zSvjkc@)wp&5;i0MT8aIrPP-+u$$YLXkO z`cKD6F6N;wuMWrfQ7D5Je0YF}3fDxeUs=OYteThgxRLIHC;MjrJ3R+wH<3yS+= z1<6T|9IE@bin$wpP+LHC4u^!to!ZCrb*z$DCg3#_bq5aNzyTFO6G(4&r4WWiLUANZ z+6cIa9~7a52g;s*&Dw1v4X-en?jHN0Vh3TuKqf^|VHUn3Rv26BW-0Q4Yv>KiYTA|` zit^;-yhKLvz}FXTqMRxogQTQW%hw+9lgC1d<3xT8tX%#JAc_1cIbBc?uJhc^GW1Q# zPXqzj6!fTD!B4UbapFL)Q;)@qw{|v{E?Q`SXUpDCuv`-a3Vy#D@h43=K59|wW#;~B zfyu8-oM78?1SRrCpe(R4$N$5n_-4HJaIlxcbuN(SqpBn^NOItK={CEK2MeuXiub79 z4Ml9@0`gb`IgB{ z_CNb4YduTQf(V6;PVJI-JX5x6-cqTB_}ecXe7rcvSu-h`+Dy#B(hbyZ>k1s>B^@s2 zOW}LwZsqYr?S>#Vks6={ttBTX8d1E+FL_iE(y7b=$*B;A+@s%z{if$TZ?Mt)$xF+@ zkwX#_vf+PvUw7d3x6C`D#{8z`@$vEK=xE8GJtcs@p+nz++g32c#l>YL`|A4YTBpLZ zBK(8)hz=}kZSD59k3m`ZJ}{K)OZumB_)5Bd*1kxSZDijWJz@s(blv6e6_DgSYnZ35 zn23V(-pDeF<;Hq)=^E=@BMT7I^R!fFA#u4M`%%2PtxfRn6}v*yg7;G|wfLc1p!Co4 z$J=15M*BQ1hTlSmsWxLq=tud&Dg?`=FMhU5s}@g+FT(WGpB%Zh zPJOGitVQ?4ZxsCDUCT?^UI^BiK#vfHd*eX+x$)E7|27E}U|M{-R|E3Gi6e$lXTDr7 z2>>QZDW97uxsseAXDf>m1zx^ys#|p8YkE3iyr<|jgSLj4Sgbw^FGW)(oC`-lcz8of zvae4{)yaUwzZ9hBOo^~EJR{gYjzp?V9%>$Q|3Tq7SKl|yoI)W|XK&JQXHSk%&(eFWqJ$kf}ksDG&2_{;S zmJezV(&ae7Aa>lFdrTT6B_e*JN*eQBt$xA<{#_05D@s!Od0wC}6WIgXFYm)Xvx{S) z$!_9E6wH}iPK8wy)94w(&?i(DZ|zbxg0R?ThC%E8P=bk+Ri&KA1@PW)tIGwYy&M*j zkK=9-I50}rPNt&_?bY&PSKCYuD<}rb3MuhPW5}|RU9=(WAKjLV?uRe62nm%5rqk<{ z?L?^rKv2y126;5frm*pKjZeDZjD$RH$dRJ|Cz5w{oqQ(kxu4RD&c)C7Kd!ZV9$YSz zNG)Vr;5SB~u+THI&9NfauY}TpV?yX8gD$-ad?)P$bdCbW>}CQNm}mx{ab_0HXRfG&RbRwn~eL?%Vj z57T2LeVylXJM!#gO0|{Mw{Bu_L3&w0EG6~Y2hQC%n;ApsbsR-DwBKCc{80A z9X*7;OT06lDRy5$+}Tiz2txDq1&18}py*PDA?+L93m|jH(d~*cjFe5k`?Z%hkiFDg z$4U21GdrVvyqYhY4&ftx8moG0b0Mb6&dZ}^CTetV$``6k87WiB7djPt?jI8bA(rmU z4SHqj-;3rGPdqmaCzTRs-}umPPETXf1Qks7#kCc^(RH~cHvCWd@&{Ytzi&5Fb?nd& zD7~A8S91*Vk|bbRzEay_)|rXHq#kHl-wOaq&mzu5I|&Lj%k$zv-|ATNsdcmCrX{b9 zG%EJ76ik&OMUNI=00BGe?~uXB(VF``JVMyL#(APk40Ogc4C=X(+zkOVF$6TD`5&2A zlw3Cm^`YT({Qz?O%K&=p$c8e@tIy`2bOKuL2@u~P76_9evvr2N5dt?u?4>Lpa#b!(W|c(+cJ{`=N9 zniAH0uU=YUW@E%M)A94Y$C$!=0oCev2U(ei^~6)7*jA_tH(<~yqZk{L@`ro(eNmC! zEPYLbOe8fV6o(4Pvl*g|$VRO3y!&%XgxBIh(U+Mm=5KVg`r`TT!OI>m8^5!!R-UBC z`{b$+PgE`{m8OL`CM{bITYEc_f_HIX9hWits)C`9#y0igJz%8d>7cKVe?_!4*ZuCT zT`HF>`OR-A)tCt_xG*aS@so!cfzRavq#mB0`^Rf-3sq~PzQ+$)m(e;E)@p5Sbp`wg zFsvqIyQnW2Baye|*jx;e|H~*pt;Y8~<#0K3o$`|nK`_1A_h#C3h;*q+9HYSU;mOA~ z*x!b;3f(3_LBS{s+hK*#?j!?zW~< zKq%zLbX%d=m&~`IY-$g`q1x+tn^c3_aY2Q#IqeC0UCS)yF~N+-r%mP>foXQk8QQFPzj@kq^Kxz7K;%e{w&Y$yJ-o!o&MMyX8{sEsjxpY8o5#PVW5h&WsExsJ5?zE9X20(AF) zpnRr56fjZvXu{^&V#;Bliwjm5U>VC#h@?EN|8Kpe3JT!i!pd?1GU}(`mr5@#5LuYtVZ#U(bi+wLo#0P412c@wPqB=S_Ap>V zDNi@mIi!v4q)Wk2;1wR94Z{vRrM~xyvksiAnr%bII+uQw#i7j3M?TTy!~pv9fdY^2 z8Vp0lz$4TJo0~;!?rBp?Xazu_21^;T~CpA&%;jy#!jJ&$GMjBm= zQqJ?8Xm(l^RzH#QKqE;raXvlUn)O4&T7|^5?F-y9;)9i$8WQl%`e?On;`QeWz8XmRxVGX%p729+& zVrA)UsvyfpO&?YYOgh4sifE1Ah|3quTL#2j%%0c)kuAl6y-8B zM`NQY+h&eIjO60U3mW>INvHJu9>DD)eg1N zStNW5uGQwt6xBk&-Cckk3%}nAzZ6DN%zunqpZ_=Kz_)AR?dr{IVjA2;M6d!qE90?f`SjwsjSwg=*q)s0GptexwK6_#R zmXAJR5Vxi-APA00KQ1i+>b{dQ5>V98T0Co(NE@sHRoI*kM{A-#s(}hV zu(>ArdX_Na14s;0jzT2XCMciSUVczXC&FYz+=<8lj3Kt90x5KWMS(FJ0m5b4k%fYP z)iMTylHRB%;>&eA&X0-a#mQ38(^T4!A_b$qGXE2vJL>!qf>8~k2jwetIE7LKharKr zWxok2;DS`%UnwdFhS6y4Xir2=rw>q2y?)FZTRD2{xbR>}4ik+lX}#~s$y~jehr8-D z$seZLr)p&I?_IA1>!wETPtbFNkgGw>!gjQ(P-Mk0x+s8-JwNP2&#AL9psLb!(!1zT*l4jL+^ zlooZqbuAqoaCE;p zEY>;e+KfWP5NhOg%DC9o;9)*8ALY5n$EW%ebhdK7Z!7|+za9gxdLFip*DHxp=vJ*c zzIr`+HRMO*fmLM-!ICUR4OH*iYu&t@rCQL@y=TUA>vomzJCUGn_l830WVB80P01Eu zQ>J`f`2>U+p{M~9p2iIT6B1{yFA%}?I{za5k5c{ikIEf3nh}Hh(i7VX@BV*^S10){t@kLWGya>28_(m^$obJSL=)G@XnQYQTU9oHY66?TkT5 zE!+e>sHH{`e>gZm2>Mvj0 zRi0lk@sK!_pbul&dK=fIvOFbD8)RW2k8B$)bTmX3842<)gna{E-QK<)&+$A#k5X|G zT3%~Ehh2;N?VTI*lpb6FBfEK7zs{KWyS&ZrtB4~^uB7p*Dc#8#1*Qv`zOf3;FVNuA zar6B5U#dd=$)V>LE%6Ht~if?8T=HGOgo{O&vPaj(tfvzVaHBb35fMn^w- z0Zc+tBl`OKf-hIxi{0tUe(^&7uNFWVtFKjM-BHLHK8O2|q|Nq`6c<4F6Iyi8pgJ9u z4N@wyUcAB&HCPTp>6lsx46euRSsh19G=-`)i^s0W6ED8WyCqzSy|erV)M&BG(t7lR zRVd`-!f7XX$?g2^&U2oJsr^xZUI+C2phg4=_tKE?au#BIW5!BS$v(wUW9sm}Huv48 z1xT-OE#Al>(x^z14Ezon9x_<|XU1lMhJ=&>K!H#`0i;IQNwG*oOdU!ht~m4zjK@$T zfR_pnNE^#I1qFY*#`yTQQop52*l>p$6$tHB$=e&@$(R&5;(rmQRDnQ-g~`S@D#C`D zbm@6lFsQd`wKhvXNdu>Ak5U6yF)_6qEK&Z8u`~Ozi=z*@@7n)eR<+r~dyl1BmW^%1 zQpIScWjlGCKw(LREMc;}$3h*NTMV$z0a_M+Np`d1z{tqf-%byZfk7H%Oj#&uIPg|P zhMm(G9ryrUBS!)xt^8X9kpsGIQC|tYz_$ia+~(;bnUN9VO?F9b{>YhMP~f|~GB3sU z1ek{K{_(`e+rl42gZb%WMl}N}D7eD(bp{^kjia}_y=xJfK%v-6zvDqA59)>j}56#$UR@vLx5wP&}p0X5uZ}@9uQKiM|>P=~6->6fV#5b#LV{>WU zwV;&X!H>zdoj{CIID5Pv!*gfwSm*y%dwk=m?HL|VAouk)x`{WS;FGZblVUnk0clML z-Dl3v_iNlraQ^7viXOT!3b!loz;%L;Vw9J1*}N4RHt=z;GCiKoN{x|Zh7gmvU@#K{_!y%x*XjWAXVAK_Yrh7U&MT0{vJ{Lj@^1v*tqSTYY4@?a+^{4$PyjL zG?nY#{O0y>YfGB&GJNnHIpgA_14Gsbgt>h0U95F-<)sqUcYEeI`BBYAG@?MuGg!F< z7YKYxvZ}SxDOXPr8tS_IA9+g7>mfv+O5|u^u`BfLCjeBm+#dRRw4c0>5x8$|qM?H# zSIbkp#%C)6y#jbjgl5WqB()k8vPJW0$o_eX9!Y#D8>CvsPl1CGt=Jm$=gD+bQ9ceC zx>%feN4qmi!k7Fp%!WjTlQ(GTC`q{U0v?b_4K@DhO~QyWjTzoQRd=01F!5XP=~iNf zu}YnpBS**k?+fbD0Jm2xbQP>BggR9BHDKn*WK>yRDprvhu7XbqLpzG+rdc)b`iB}u zq22Hx17JiEwt$}Lf`;rPDeM5b~o4 z9SK#c8#An7pS?GsxU3pHc>MJ9`P`w)vV>=ZcZ575E))P_v?5v`RSU$)UfNuGMc&_| zTjeFNR_Sg2v~$So2?C0Y`}q8lgpuXIl6c`-N+{hhFEex5qD0p)G7Qu5QTc=9C`-h5Ct8qm zqtovdaM!y&f5n8~=fu$Czi;8+s8d0ydx+rkKd=08YT7`MDbS&i1`STlVnH(6Xjarl z!#8mVK;CE&EKVy(JBSpTV&MUEZn>Cq@bh&z`CV>se`m@6@N{k9_0)2min%Q4b=9xN znJO~)L91-eVa;cyCPVK(sXS6niR(w1|rF-=LAA#xubO=do*)>NG1>=BxT2DO~U%c#xgu?d7r z63LMOKuvXAu8`(Z5;bC>$OZ{_Oe*Ys;uojKk-=}I%gAUu9t;Cf=V`85N@{X2fWo_< zt~3-ll1GYuF?F62V@ai7$*COniB&n9^C{l^ZP0A26*ibHtRx1O!tVR^8-Xe1gH3$_X zE6W~U4wfdIGU>#^hzvoY1?_!w!V(flYnXcUqXwc*r}a0^QSj=gWVNc^h^)n&iXzdd z>l|<+97f%Iojl@zo@kfb#^>3C288DN7y$@8oj-B~ZVG{WsYgEB0jiw4M4tN|PkXS!_v6j*>AAm#ZAsXjCAL zZSG`*YqXu$u9}kV6V=}F?WO;{O)6*h^RoX<&rVjE{!Yua*p#h#m$bxP-bA+VVHvga z>zglD$<%Q#VMFrq-k5<@il4*`Ed<@Y4#-7l1eA(qj@dp^9tw*G#iM?TlbXbkGEMjUA&DZ-(j)Bz34Mt!6UhzP+IN&qsHw8zRS^sd z2LW0r@4wgA(&RBm%nPpwR_P-3JgpDY^;*pJcnSPsE_V+iKgx9~M4xU&vZfm+9m?1x7+7 z6i#D6t~7*C6(_-T*qLmD{K~skk0p6H%f3n{OW;29ZG)TrQ4}A(-)`H+moDExDPwP0 zTzqCm=_pn9RFpVqns%+XNvqTKRavqc5LpDVv4HPv{xsUH7Q8)7oDiobgoxxxvwza(gtngE9=I*3BC}!I_+zMR%c=XFYTkF>>uCHLo88v8B z2-*ba3PpstoKr8h);%4%Oq2_9*&rm5XH{MQBP`rS8X3*j#2@E>XtH0=eB7O1T}@MR zN>pwMHK0xVs}!@s2xLM+7>vi@!Fdpn}qdeieBFG%>^z3r)8fAfzmFLf5B2o;V=mLzu z7nLmNwT1e4)rKkn2G}F>CGQ-k5In7GLN3(#z|t7L=A%|x%>0)@j14wJ$5}`5)as`wmiyqp7K!2CAXOoIm6mYMpiUNN?%+@l`Ecx;OY+7nnX{;k`O)eEJEkwY@-J^aJb#Q_9Sr1>U zYQ>fJ7YR_5(MC?h?=Z*tWKB-Z#o|rN3!Ius1a~I;u|v%K?ZcA-ZoauZbhTQBUx<;? zYpqwms;S3OLn2exXVoT+u!U~s=%z`a=@SjlIzTh;XlA$%z|fh+d{ zMS8SyOXx583<@Idd5j|`TUY!`>s848?7_w}D}W;P`@XMeZhK5buwJ7N;+pcxnv)&b zxJ<`klq-d`NV!CfnP_*1sQyH*cfF-9_5wXLP^wACX7>B9g>k3~-$DL6G z8;dz9B4RXrd+s5F>wlWfy*&Qq_;)tFM%Y01$#tlVja`clYia~wnE1=pJSrgTN~*-Sx@)8J>;A(Zk3xCp%&Z}43noVKOw=)| z=nRB8S|mOP)W*Ghx??sc!5M-|#@T?L>r!oX)La5apf( z9t}F6CkVuMOUVj4ENyFBK+Bx;{F-F;0yqQt64Q>(vn>QV2g7jPuO~7^0*%@QL2poX z)m7$`?#Ndfiil)^J=CIVI3)jsQr*5l8#)EcoJ1`IxC6w-v5VycB%Op*bv*rOG0|x# zLh0RCYXjdl7S(VgwU&~N3JIqG?%WbhAb7D=!R4W=A^&Bs?0Q8>#~VR}iq+4}$_WFgY(M>*EC>L9 zqlJOPqZ8&Y0IKm)yk(umn#a?A!%X!10==?E+~vdt^v5Yn5~7G;mS@CXcxh!NqkVTs zE+@=ZF$7XfGN4khwAjgqq8=#4K==zI2_}M=CGuOd#{h<&m;8XNih7yAT5@%rubP$G zcm5>Ju>7+A64f#i15yIL=9^#9HV*YWADPW`TomrT-OJ~Op@qK9C4|{JA`3^Zf9JgX zCtrmi2F?x}ttyqXK(24K|M8(rpp-u$PI-g%)8+rx9rOeJHb~Z@gkBIAO&yp>h7iL~~HDu&1$o+G_&O#(> zy#Fri$*{S(eza!{;T&qYt!N`Ja&FP6YQOrsO)#Q>h2;YBfX^SjFHk8>5@_}^(k_dshu>4K&AcPiQvT)#$^TMDzT#p(By;sL5V z%?mIQ7tV;D`LhQ{eiGwu_e8#muTrWenBLoRRPh4P?*&Ejt7Xm0nc)HGd>yzZjV*Lg z_$O1k>V2V%x4l2d-{-0G^lRB%H_dnC{!T07mrrtg*%=lQROe{c$WG8{hc9?I`(7KL zyVw>_iq{*v*hDiDs}rH!l`-~5X$q?8X5}EM(qhL6F|2qesftOOz<|LI<+ef%S1*5s zCus{--Awz8Nh5~O%D*mk{n3dKC758O9AO2>PTiMlU8}7ACExCK_UDJfATB1qO#N-P zrfyjTHw|vcmv_RT7zVbE2kUt^iq{x4oLo6tI$w~WM-^keS4NqI$odqoKY(%2%9P6I z&;XJmg>8Jmw#i$+=--ippSKVNldW$Nm%dN)lr7LL*mc@7JY)t$B?`slCt8e0qXl}^ zHMF^2AJ1PsJgjDoWgTTzsOFN)BF<5lfnJ(Tc5_m3c!R)>RMm;^;cJO=^yiI}EPavd z=qlfB1ezzPb!I6?S4&UCg$S?})zfOP@95CAV-G5@)F>=ys8lDTbAJ4ru?;DjS?5X_ zDRQ>*j|B|voj%k4+H~Znu->j2bmV4F9`SAyfd+-iT2E4|56?Nbcs+mk_uqOfo{#-M zevf$gL{xtFCjfJM`r)kh@uw}Ck?D&|=n46D8v`DLSd$|i1r>5PjeIf&0G(C8m7u_0 zII%tSnhA?@E~@w29jEW0;+88o-f_F{8RDzzxajEbnGW41aH2rKZ?*$Yu7yLZIv=){ zt!->d1S#}0GjcQs-RB)%dKVb~l|*W63HQ3oaKr z&n~+jB_22?%G(j9o32~kuBYp#(#|vRSllb>Akdl(}w5RZ_ z&ysHQ2IuOk^P+EKWoh;4Vd7!5>tW#eW)_yL5G!_-C~=9vxbSyA3>d7htlj;S6W718 zn>(n?wt6Txcr1z4PvgqgU0?6=UR?U}MXz!$W5HofyruPFo6FzRV)uAJ{9(%f`~Wdn zWaBdMxIr*Pi*jt-adIAJO9W5srC*Uia~tQd{CC~`+=cd1A$@A)<-}Bedx%JO(yP$8 z{#~k84-1nHy&vqHv#BXW<}zAHKs?AwPmVsQ^4p>c2|Fixl9TEr|K=w>V-7x$j)hSV z4@W}ymwK=j&>hE{-yO~=i;+;E3?6Kt`WS{6905bZK!Gmtu>9$9#S7)*=?*rwV!!$+ z-&mT?QHC5wY7L1hmypK)PyyYAISTPF{~%OJ;0Ls08#X98V4O`6VsrWY6mB?SNqh~6 z_-zqS{JK{tszCvq{7h=u06iUO!v_9cJtM%10w;l4M@w7gSH+4TIQ(6AvCe+d+h}81 z_4k|46YCjhx+z~={cMgpCVa-TLIrocZ}rEuwF|62y~NK)!4I^Ahs*;n*OW-OrAYP~ z$yYXU7g3I{UW+WRQ7xk^ev2aGR+<4}j?5S8iPVGSU%lVILmP{a_eHTX8W+zpB1Dx z;2I_bMN{phHq{m&iwWt?vr0z~McG>rUCFdtOfgwGK3pB0 zpSQ1jdtSulzaMz=tUn+iDA?52vBrRjVC$ZEcOJ!V?G;tEbCX@c`NiCi^=E3Z`nC?L z5R}=4uAgu3VLA6O8%>9+dojW4DuYg|rEx={#TM6SEWFqP*lqAVwZ}il>)-JM)b|F@ z*Z!BCuQy^d*PbUI4ZQb@F0$RJ~Yc`zZKp?P&s#dHBG7%2ZVRoc2HHdVa!Je!p@!b>?&x|`teKFhi?Firi}dGZ+lfZpq-v`gu1 z`quk?_C*`z4|*hkj1SB6g($FioTaHH{7{_lz{D&N-1b!&BL|LgjF_VwBlni0xR%8_vAhW*x)>eJ&XeyOGfgN_zwCp{+mnU}0y+=MAREpC4HIgb0|rI=;4jQ6gKM ziUKQRdeBTGENEmgo!d;3bdz#293W^ne?Ul^c{6y4p*SOaH31!iWP2cjL-o&S)NZSbW4xl0@NCIi*5n*ZFK4tU6A^Y6b**Dz;AANs^mx%wHO{Dfv#bcRl zA`Y?6)yntGKUcKmv8A?_-qcDl%i$DpX+Y*pGlM%XnrC+5r5pI&PS1^X2$5N5k@qWZ zX`xjFHBaxu7Z z_rJOCx|AY1?f%OxAjIT+AIORK zpHFbMEuYyBhC7vMVGc~?x@fVWI%R%me?P4F^UF$ulDEs_e9qHp7s5=|XYdgG%pPG} zF&oL%303TTI8%_gy%v91W~(9#;SpImylzV|^Eumio|^7C)a*RdJNV5_5hAj3Q1NJ& z9IYFQj&LLPfD5L&&)2wo{$lAI>~=o%@cEw&`Jan)x!g_{t#xDt2j6C8Wj(GPRdw7X zKmW~n8ZO^>=#M^Fu&=C$&0nl#mptt!cM!iXvS?~-Lf9?}Dk|3ex-uAyexn199v+kS z4LM#XiNNH^%X}#=2@`k0Cb>si;H$_NRRGZBGH4g6d73^TM#|Nx=r{`SdQ4sbBu7qs zW>2q`Dr2cWcH4yu8IwKZLN!akKhUiuUvn;w}AQ$l1d*#;H! zP%sh>?v>brt5}u3!;Rl>Pb%afc=eQJ$R-Ktxv2mDJ$8v!xFbm{h=b>8flUhpPs1y+ z)|Oy98#_7KFj$6d;C6Z=E-;|^F-O?ky-+0DL5rIn`+x3wZN#@?6}xg%YfCYuUl3M>0vA=JWf9EGK2PMW+ahG0DPp~ z%#F(`l9d|&!vS$qZFe8}$al|)UC*OOq3P9zlIt`Dpn5c=K`_UdilGF3@k~H;)ta!! zME(N#JKV9b-&*iczY96JUcA9y=M=P(Y<vF?8tWpGV7lhd0koq6Q?2 z!wdmV=~2B?LaDIk-#}>*3fds-H*?YO^&8%9dMpwYn#n@YODRm+iFUO2vWSet@YjK# zw^(#Ff3@BGGeq#{_e{RwVdY=$vH2vYyCza5 ze7)*2Vc>?`aXGuRvB8ye927G)rc}9+wU*VEgGg!GhL^Ls&qfGxDNC3?L$)keMOLSA zS94@(>2&PDp(Y2M85Ytn!nZ8-%HALq!oB={zbjyl8py116t$+m={yk{H!5E{Qkj8x z{$DKsRfvjeh5DBT@=%!#th15H^M`%t=wYc8Yd9%8DxD%}eEG{m#cT97j zb!tMd)}I}&TdZ{ab3Jh8u;B z6MMErU&d1lZ(lwJFP>AgyvKQ@!85r?^#J$z;&1H3&BjM~Jp5Gw^Kk9x76nOV#TSDw z+Czn=Q7-*&@B;L8yIeQ_Soic*J^xVXo?#GQT@vFm)5uceMOA&AswQcc{Ds7{%~AWH zRK1$#j{iMauCn{9skV0$H|;m|%GX6sqa-q%*ntBoieao{*el>nE0(t=s^+qCy>g{U zpKOdXp%|u78O8IMP}&z2JTt5(dU#O|51$Tw zrSZ!EV~}$B8=TNVA)qy8#=eP&ICiOVZJ$cGQIIOucjK9jGN1%;XEhsEH~PhJZ$=@|LzK^dlt3}f?Nb)tON}pS z7+x=A2zQB;eU7$MTeGHuy%Di9b_bpJRHF5#8jjW;uM`Y?{VZ(Y4=-Y8hcAt~R_rL5`6*ZQ3=F7a?|>hA z6;UC+KRt`ok)ix**(MGSM*ug>)LXZ0VZnZMV(f?t$KLLk2ttsE;G?!SwAhFQK5Wj< zYjA!*>b9iNV4YjJuU{aL;xtFN9=cU zUdcE1cW}79!30d5w={&whQUbtXYT(i{UGlfc@P!>Ag71q@CnxtI>t&qf)gFp)J^V^{FQGe5|e37Kf8gXNf_ z)ywpZj0y>%gY@okv@9qnSxCeLVy|-|kzVHF2_e<$jUYL5=$a2prX=jFQsH=YZby9{ z4pPA+!e%lVQyRgV`Q?Un*}t{3e9$fmM^6q66ia4|*~VN+)3t@7!5Dh#-ypJ9`AY?6 z{$P_!{RE4~5YYJ-zfEM!vm;Rv9v@ixz&2e9d#?;qWDCZ26@OKPL6WhEvMa9&M0IqS zZc9hW<&75-6W)hb7*~WqB}2%Ski`7mDs zlIeQ9td31ZVR|NO=IJxHc%*RFxcf<8R+GLGT*{wB&b{jG;)>0@ML?7CB*iiH4)MhL zRU^Dj@AvUIf*BRsJCxkkX27Y5g-Q+Ns|+f!C3*tjk?F5OG45_nyXIsFkcm3;kE)7} z)4QVM&BoDBDvh0ucsJjuZ*+A)33iLT;(lt(ebeMu9R%l+Sq)1~(o7k|ZJAu*?6Jt1N24|2ao$ z#Xi@P3{XS>lysis{#FLlx$nf9Lx(EsY)YyoAH=%Bny92DtJF&8THk~H9U9>D9iT}@ zWRSf8=9X6v4-=Tg$ll5R&@abaV4Mv6Y2UI%UVJ2w0r}g`oPO&M;enDR?0^QQK!Vky0DNDcmdE#XL=aD1$MY(Mwj z#NA@;O|Wh$_A+`5Z8N!640%x*H}<>lpO{lHvrRUrwdFR!n!?b;A)v(^rnCbVDI6KQCT;w?+Y4BTv1FFQK6-)MG1 z1$nKluj`j@9L;_olcV;`OnMsp`1Fgsssp66*6RFberv$*p|?-f>geyKeTf(aHlmn# z>O6V=$$or!|AixQ%JN?k*O$8sK7Y}+W@9b=k{NN=ov#jr5~s7?DXA&Eunt5MqM`B8 z=jO!sPfQ^%Rh2=T__14L->~ulE0Fp2`et)8TQTweq^&!srM?{n7*TMM{q?qM1@raD zw0_q~iz>uwIV33o3k`s{h#+0!co=y_cNHN3qBx3BAibrD!hbFxrPlCwv zAWuhN4{WUhz%bpkjsgcNYmpFK)-=6wyxxlEPZDF9m9AuAf|koxNN@{FWP++WtdKj3 z*up|;f77tp)#m&G#^Dm{2@Z1J0t2ngDa69UZB zf#Z2b%ePvu;shvU%wb>(AW1coKHhvVKAc|xc_IOFjo7(;`lQW-O%M;@5dsNDTJj0V zQml1~<^U85nQq!|Dq*yBaM+bFXz{un-A^>|d>TQ~;`C|(k;lS~YiO`*8d^wW2AqUC zAD{iUZ>xMBn*0t1{I{sH#p}Et?+VM!OpbP7e6K|pDyT5xtq9$h?T}L@e2$K&eeNbC z4m{R>K6UQuq^`FonGPYKtJ=s>@Lx5D0VjRQ%QjUV>$aoqo~O~|P4<|*%ggO%PVl?A z@}A$CoCYnsJ-(H29#f~q=T+kDvIz?Bi|~QxKe10$29H&U8FO;E%Cv;*);dDrh zo<90ryzaW``zUcc3-8!8bTRSfKFkqwZ=5+nI<+oR`JwK&DI>uvA@RJL+I8A-@(lia zdXB)7(c`w?Ph{W16D^ceBetVG#;QjVHh+V=Z3Dma%Sc@D3;SNeoQEdO>udYUADJsU zT}wxH53>VLQy~}?8eJM??>8sG$Ur~*=i!#sLYs@1NQ|A1G8Nm}z8l5DyFzZV0hPUG zPCzIov^!r28LC{eE#yZSO*vrYj&qJyrqhv~K^wfe=#;r%;qafooKDJ{s>kIjrR$#m z)@`>M`3%NU^v(lLxVSj--^_I6Q<5UKRcpdBo$P^c+#F0n2}>S}u7Q}lK7NhEpE5;T z{dvc=8ZMny4NoxOe~i|%uv|| zh{vPGU>}Ggl5v1uxp6U2++(R8lfUpo2}B9KOsdB7xT)6 z1JUOP3*Aufk_kN!rXNYP;);}XaQnI?0=3LadU-WZ8JT<#DSJ1kY0&O-sRUzWV=FJ@ zD@r)EZ1y@+?9jh{fP(r98jT{7;R9a=bhOew7Aj8j8z6*+$K!5976qr4+ZTuofqrhq z0awVjb&(Ekfb{oCEC}*6Gg)+h?^CWI3CGkty!g~&@%T%b$R zVACd#C;V!p3}MF(g^DJ_irE#W+2!9)4c0ueC-%|A71ptnUwB9Ba7^Korm{HCmgVPa zkzWbx=b6H;a^1U|xj8IEsq!?U$Q2!pxK#_2jrC+zEVXfVC4sgK^05}w@w6mNCb(b% zUlL?p8TGFlj_3k?#jALubX5o=WBish6zxq-<>x4#idQnqfR$)x2T4j|zY$@uiV&|Y zx_W=}hy1v(u=*t42Dl#Ls_f&J&WnEBr{CyRdM)!-M`Aa7iO+rhPapk%2U7dol2`d{5%~YxYom7a zsj2UI{eNJ6QKonBj`+wlcVzvTQ};yLo% z#U*=}Qp9Z(Jij$PeS2;p^m?Jerop;K%jaR}+LZTY!Di1x4FXeN`GXxxW-(@s8h4}J z%S?!@a-;Qa1lsfU!1I`##6$e;(%X&e)$R-fQH?T<{!PnC>e+*r<1lJM(TSDiWp2gu z*;^MH?3ZVoq10KhEPupkkR~eMx#%$Ms*TFi!`yA>wyHD9YJX|GtZp~Rh>l<&wu&gS z?=i49u|!$B_zP%QJ0-b%j6VfyK-rQbz0SodLBl#al)8Q6D|vBIM%~Ma^Pp-tL*)d! zTU#hfQn6DfiXV@Hnpzr6@vRJt8DUI$!}}C76mUo{GfrqPLh>E5*{Yvn76TWKS+S=! z*VbT9QtXvQbUm&MmwF3X>-Ybi_pKN$_x`slQCmksE_>xT(oVTYJ~A6uyOfCp?a*Lj zzALsOOF<1Q{091qpi!^`aip>;%l5cE+$yFxGA&JQRzeNATAX)1PGdiX*a!n~{r{N2 zOv{3{R@;YF->vdD+vU$HvY0OwTY)ejMVNRkMlME3-I@j-q+c%v6E`+21?u*czs4W5 zsvZz`T|t`GsICh74@cXmzHoEQTb%^b>Ma~m6>1vz-uAR*myU7bF84YvzK5#1I!!L$ z-(ea29*k%pCDh1ALUFfErKMHV&iqm3@TK`=DmeM?=&EAJ6iKXHvU6OJd`Sb(9AvF%B)TfHnUKMpt)DR*$qx z+8BE2Ns0#=$5on%vQ53;Dpimg5e&DjqLd z6vfDA2r0H*dFdM-QwZCiL5>&SKtF$@S-nhh>L(?D4GZl;%-ARXGGTyHOst9sWn@jG zP*M2=>1a8Et$rDqrZY9!8fkqPM1^p`z={w46wp$PmorqM^e9B{O;Bp>QcY9(F}TN} zNKjQT?!8w&T*_NsCO>N*+bUTWH`d-~kuTPwzf0Xq;F9`rZ)0g`eKadJvgmC2F8b8c!`7?R7O$4A<9g z1>B=o{HCYu8DfpK?S2P{Gw4JicD7icLb&06;yb5<@EQKYO;DshKH;$!iqU1&q!{?3 zlZgt2RMd86hZNxDm=#;;rikn{%` zLXAM!zJk@ZZEIGZ_P?7e?UqysImfvg+Kx01fcTaeEFjt1&go`AYdZ5%$v#WpPb}pW`(qdbGKn&^TJ) z&%TAuw<7+d+!e~@4K+0?<>TD{ftc4tW%M~O@p|}AHfBkZ_=r+m-^xn7Mmie(^SUF! z^t=0DqzJROV;2VY;l&99RAWCh*}pG9xZo4Dn@FoAbnZpl`IR_ewH8#-Wq2|A8R zi8)1j4GTM0##8dsD2uXct|ayM6Ok{CH4kW5S%u7DgB-ZL>R7De5S-4s$moadBCqkn zmVzHTXN3Po3Wi_@FW~~NYw!BPM}1wqUA$}x#_T;CWYbYG2q*8rAwsP5m9iS!48EB5 zqq5!0fQG7P?9U%1S@Xn13bm7jj0_Vrnr|XOhI|!(n5R>LNU>N~vp_-sMRdA?>u;^Tv#6L^yD5dVtSCMj7HW0t z0yIu?_~tccX=prE&GImZrq~g*n`yo&4E@bN##|f;Kz&P!;)4}(*=ca8`$zMEG<2Gf z7D_kx6*xhapnX_19L_-e+Z8HaIRS)1LP?sLBud6GJg!vVJQh@?BSz9SS6u5UE!$O* zAxsdRE-h_z;I}x­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

1P!3za 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%0Dhx8p<`cMsc*PL+&jK~xgF(O@QwjMe&{*uf9;2v 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℞0hnRQ(ZH36@=1&oNiQ&@X1SEXH+~PXs_8H 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%0ANp`? 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 T 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 literal 0 HcmV?d00001 diff --git a/assets/images/picking.png b/assets/images/picking.png new file mode 100644 index 0000000000000000000000000000000000000000..890ef31928bf6392aef74a69ae3ae2cc71332805 GIT binary patch literal 38677 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

`nXR>Pkb8Wr8!1E8Qd&i$o6|?G&hv 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�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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

_hAVHW&Je*pj2x?r4-G! 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 literal 0 HcmV?d00001 diff --git a/assets/images/rme.png b/assets/images/rme.png new file mode 100644 index 0000000000000000000000000000000000000000..771225caf856e741d12ee97c9754f772fc15f152 GIT binary patch literal 192990 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

uZ&Ft?|tV4PLFXzA2Dc?%m; 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

6#KiL#W?(<^-~hK!W! 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 U4YYJzrT_o{07*qoM6N<$f~uNL761SM literal 0 HcmV?d00001 diff --git a/assets/images/sceneModelTextured.png b/assets/images/sceneModelTextured.png new file mode 100644 index 0000000000000000000000000000000000000000..20b7e10802184ad5af4fe033af65e51bee45b142 GIT binary patch literal 126811 zcmYg%1y~!+_BRqB1oz+$!KD-_5Zql`+zS+UcXusNplFez#VPLYw77eV1$X#(@BQEV z-8_@*?mRoQbACBzj&78yvJ3`@1Ox{Mhao2`sSXDR|NQ#(2O_`rn5}z0y&eEA;&Ph6 z*N-pIJo5FL*j4I-tA@izR}T|s3ph)A2RjQk7c*xI3wswU2iH@?PAD846`Y);n5Jj; zQM+6Uot*pr&1^sK%?EDox-`S72XuZoE&wMO2P6X!5(Q$0_8>CxC$0y!sfOl8r7O!a zo*1|xbM`rs62l|Yt{zmCt$i9DiiGuRYwd1+FZ&{6am53$(sWO=j*Mt&X<07#Sp3rT zxUO+!DRR#bhYcsiP93OQKmXhiaBTGOufxml)Az);^R;OW6&7qZI-@K`mzI8TuP3^5 z|McxrR$C#JTH&cel$U>8S3lXjEOq|tP(It4dH+z9W4K&xulID9AcBcak5FVfzht=lpZksa8}I8V{m2McZQAGluRVe0 zb>Sf<50zKC)&JL63}5a>{u=#faV{FR$p}zuTp;AvBo}eT|6kqGOZi;qr^o-0;Tu09 zzTL?|UGaZQdwuSMmQBn6hj7LJpS#?kyz};~uIt}~zk+e6k54Kt$^=A6 z;lJCYTqQMj;D0Y0{I6`T9Q+?`l{V`Bi;BSa-$swO+c0&q;s4^I`!aK=5hwEb-^l+9 z*3M)*@o%6xv zm!Z{vF|F9u;?S02+R&s@1@uhffam^~skDxaUI+f0qjaG%^fv!9>^H|dNxy)~dGG&g zMo+p=xguVKefN|f{tt#%0N%I8lLQ$5?_J)nu>WU_h>RQHU-QESJiR=xGaj$sehoMy zCLjJ6?2pbPXm9<)`r!RD`~G3tYTcJ*l}@FrrTM9JKAx8&0VK+)4R9xAsduS&^Yiyj zetZZ@Gn}E5$1}gfzQXz~;pjPO=YZ~&nVCq+*(jLaAhR!ggisce+qMYY+d%6tm^E34bJNmft# z$-I!(dY>9K4+ZAxlNHw9C?+9YWs)dlJ$??mjw2d0eukxx9}*> zw0MYkv=j-9juUASLL1R2LOao!Bw^w)W3jz18(lewKG$UYaG*G8vneYONFKy2&nz#` z8YDX8gPICx^gI%bCy^l+x|(phh2mEh9wCVMHj1g_8NgvtmIjai-u8tWJr3~cq^&=` zVyGT>^N(0Q>{|cB#L)M<$0aJTEBeXKqvq#An|IF)Hn-3aE-QROQux+_Xlz4uRn%Qs%ATN zV6t)VgW|gXBV<29WENbl3hx+w6A?B3yHJQB*Hx_|?G>F}E%x$(&PEZU{@h{6U(7=T9Gh1$3) zWGXb&^Zjj#-r;F^9N2pubX6VnA9s_+HFtG1&y?VWn(cT*LHBysgD{}UNfaLPI8xe0 z=Wko@@#5dMKI6A$O2VK1s-2xRl(-@95^Sxi9b1>)!VOq|44{re2^H80ZoCkXfM7EtS8$6J(C;S8$RWKPZ{Vv6UP50-xj3i_x^=I7%+apuaZq z2LLDcEm3$VcSIX0t0`wKO9(eD{9UxPrO-#jQ!*}oR}m9TM9Q{hC-)<+uf3N!o$X(z zpn3YDg3Ug@pQ|TJ&PWWyA3pxG+$yQ<0OEM_*Hg+L&*d-sFIy!dk9zk3_avKG7(t!X zk}zdQHjC>;L>eplD}de>Kv96~?CiaEw>_YfX9yr<^o> zDSj_DI<9x*sVot|zdY@y4vNl-t%|QA*{`pgL*o4Wd(-(Uqk|5@15Zf<7xSJBWM;^IxneK=YB+fSQ2JDn zDlu5YhqqxgSNaX7BsDehr34|}z%6Jjk?cH2#qDXfjy?r|XF~-!i1=zPW@LW88d^Um>8W&^2?$X3aX+EI2wCvF+4; zf!!0s$QQnP)8c2qt8#uxU;RgiJ&pWwc=>~8-+77sA_7sQJHA8OwMTy3rA>sY{Zt-% z0>BXD=-<92Ajqp76!}dqY;b)UGb-xpho^KP=aKW0TY9cA?OdRgTq^jg6|{UyOt(>I~ZQM?Eb>p7!)3g^Vm;ithJ zN5|EdFGiB~9gI82=&?G>gyVXmx6g#LIVZVdwJaaTOgSv(jz~X|knq;b9mvYKGTKMz zG+~|jme`sc5Wjh36bwa+w{|WS1*lU&U_sbO!Npdd&0c*3@Ac0TBZO$IH|yvnwy49K zchCBg3zR3E-OcD=x$sM-T-}l3Cj_4TXO8Ag%Pz0YqiNewXp0;`1UwT2#DQplrBrrp zKqTsGQdVi5`skiCcI%PMmJA~;9ko;pi{Gkg7;|#~4zq0o61+I4=&~#H(@u$LpJ=G+ zbm7ubh&Gr@u|Vjh-*P>2E5ps?DFS zXBq1q{Da0RjecxCK%~>47m_Q7+>D(snzS#r{zhqwmpQIO=3A7+i@6y~t^E#AJ4)vx zg*UC;JKz^)nfqljgp47#l8-(D6Gb=ryB;n!$ohn*yFPEyyDh{%#=1$3hljtJ5ZKSo ze0So+JAV^HW?ko~!npp%bN)-B)`)HVQ#(bDGe*HF($=AH{l}Yra%KNsYw z?@mo73p1nIIn9kor_JI;>sio~ite=@tk<~7$ZRJc9nDx{ala=a<>?cYO+1%Rumq7b~qg8yz znB$W7g#5wc0-tZvn*q$2vL@T*fn};zND@R~L9h=vLewYp8ZKhH>x^^CEhV;s+p0*7 zdDS6Y>D6Sh`qgS1i19;edeP&1kZw2D5!Tcve}CvkNQy7UO(jO>-S;~Z!;}4higLn41O0j+-wrO~OExmm_bBj2I%fKE%JM;{@B@SlJw7w{6};SR@qX&4nJy0Xd!85*~+VMl(R|` z;g1-*1!*CLG5u%}HQAMCQnF^AZhP$^6!B{D&pSlEuPQl39&jo+mAUuNJAOAXjS3Tl zX<*w4?GeiA`Zpr5iW%utFclOVsV*iT?+JDCX1PRjf4QLs&?9u=XADpg23jFeSq%kJ z8sLeIdZKs{V+;hoMR?Zj{?*IV#V@*!6z{WeihTVL)Z4M&d|GJyjT%+X@Go|9UeWYO zUc+!t(6p+S>TlI_)xGor)_ms8g3!2-GZ=e6(4wCIsHZg*6NE*Xal>E6q~J`cNtwgo zb$`!PO|3)n%szR#^m2Y#-uXCOmzPQt3MVfH+;LAO`xj3i1w6d&lxO2ID^G{C9+ofh zIjxIEZOvaf8Dia+cIyC4uJn8s81^o^bx54@7rhce)`7MrLMzHyAXlj@(E=;bi% z+?t)_Dfv%DTdTFDXjoY|;I$%mRUaH0_j?0*tgw)qV;{0BR-QbQ8)@gKp)D;1u3M3p z)peimd+C#AFD3tSJuMB^yzfK*Gz=a+FVnW7yyWC$p_idvZfG|7JAD~HoS6{_@E_(T zs2(99ZZ+{1kcidPo#X%Vmco3vOYXmPv;0+Rb{NPj2tNBB4W)t=_(E+ z?AAgRQ2LXtb2}K1z0jdLjFUC-)Q+Ijz65q-3fP3pks#)Ak{M%g7iT=et+jIkLO1U1 zux?#osg&Zg)pVlcdLm^lLG=~>2Obvb3(J)pD(%#Ax9R`O1Zk5*_4lX9eyL=^N&w>j` zfOv|98TU`2A2_5Zrv&dOrf(1)d#N%zNu$V+Yv9HLIkrhM2B{_AOBjg#hWsVr)wAL) zxZZX}r?&<8j3aN4e$73QnKDF0Hjnj7|`v`y}9ZhOL#)pd6*-|X3V4)3*2 z7PP<0f|vD(o=R?42;Z0Iu35iL2k=kBjEN^XhIXBKjJxifQAV+M)~*Ub!oB-6mx;wG zV;n{S)BX}cXg?K#AkDGsZ9Jk5Vrvk6pmJ&v091SUNvuFeDotE3R;@Kalc7|v)i zzbj}BfN#AP^UnK%Or|r!0y!hr*=CXG$>+EK3YJM6oXPel`iEbn26)=h5ToV$8e;an8(f`KV z!#5=r|NB+>YH5P)xa7?m`dhok$Kwwz`Se9vH}9^<4VGnQjE6!y631_)`O%h4HN73C zbfI-MY5p;9(+VIp(xJ$eZ?(Q#eLCyZqowj(=;e%jYeHfSE?j)s;HO}WA57}-hz%K3 zN&0X=$neaMNlmxj8J&i#qy{O|ReN7>mHV~dPj5;$zoAWKgCi|r5qIP32Slh6+|XVC zjqxGz54VaCl>Mk})K#^KJ5O|18ThAb&wIEqDRROGLlBX!IR}o_MBXAKGcMamhfOxM z!I2cGdKpxP($)+iVPuaE@kLYSQ`swQ=6yflN7@?$Co=u#qwXf|tGMO_k=oy7*i`{vsFov=?E1!Yy&ym=^Lf=fRlM9!@%(F z&4gF>h3CF0ISjf3_Mr5;SVKx<4;s<7En~~_9xYyj89xNpjSE<)nN*T#=xBNpz3Ljy zci|?c*$gHp4^*P~2A~@+d=;sSxu_|O zkwxkQh;S6vl_*ZFkfv!NrS>GJ-U`qo+corKEMrzo|$Ge`1n+e?8LAprA+VLF_@M4=Y68!2)7`<8eBFCPieN-j=3`=+^ zNjHT)Ni7i)h^Tn1y~coEWRIJ2pqtY~�YOosZCoj^4gE-V|?~#VB?5494Q;2c=xS z-+|Cma>1*i7j@d~c(MSWy@NBJ@;Rw~FSh|i3RoZ-iB4Zyy<}W`C-%%595D>Bz^VI5 z!1|Af(KCHOo6M#hNuw0J;I+^;F{Q_(XGdrLp$~rKv~Z@KTwuZo9LL@}?pr2&>8R;7 zN!YyM_Fz3YF%ho3$AmOS9i;aGKb&11pOGvDRZ%S8O-_qYGv@Q{H_XM$coYJ>I58ayE9d0#$qn*Yuf0!sAE6QguRF&`z*ibskMvH=;M8DDJH{$0>o@vNm?M z=`XS3FyPSWg>Vho7(bFEOAt|vSPa?AkFbw;853Pr{n&4P5-%#s7u{a9aePSZ7cOJB zJP5u8buN}Lx`Z*fpn>Wq`_{vBAew4ykZEAP<|R>32pZ&bWOMG*<9*C!uGJ&6zvqnM zYl0{s@3|=#YU1)t&~ZK38RCB-EOcst`*o7UIg-!Pd&eYv3DCqWUVbo*6rG9OE2Yma zQ@hT@BNhgfCzOfQIcXiMIsIe(2lZQ@2#s-_%5gi2@`kjJd__^wiQk)6yXL`~e;0gp{i7d%g5Qk-EceU*cCbt&hZb@eQZf zQb%tCZ56p{N(pz^2Z&HII>a;Fzu=Ie#oqjg@$rBQtv1K%SpoSaI}uVdtyv$OD%D+F zwqQ>(!AtLU`Bo1@nkgFuM$w4;c+!8%P$^(DY0|NddrM0222PqKFbaBQ&Wt4nT|Pya zr|d?d1VHcM?1}K%37XP7s(Zv0RK5wPjBUwZTUZ4A@oCI}?}(LbD+?}G`xWQA?!$kS zM=9>E7aNlJD2mhO%WjXQ4EXwke_se-Lg+tJ!>FDYuY+TUbB8WJkRLnv{nwGMZ1D@W z>DD(v&r|Y6PXmeHk+4}?V?Cx~CP&+TZmyqJI3`f-O2i3B^Hcr`8pqvZ>rvCF(`#nx z+2Yr_-+gGyE%$5c?*(nd;R(>6K=Vd~xCilF?cz9s>8XPZR4I>CR{GLwnv~$PrizM! zuCIsr)=*OGS-k&If3EPAC*_oU)Sb>@1~xr+YoWGPgA{4V402�Ogk2_#pjhx^?gj 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 DIHqWk literal 0 HcmV?d00001 diff --git a/assets/images/sectionPlane.png b/assets/images/sectionPlane.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a9dd7f274c8e8e9cfaafe6889242f7eefb3fb7 GIT binary patch literal 272640 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 rIPBJAwrBC@5$KC@A-sA7B8#EV0nV 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

- - - - - diff --git a/examples/BIMOffline_XKT_Duplex.html b/examples/BIMOffline_XKT_Duplex.html deleted file mode 100644 index 0d201ed1d..000000000 --- a/examples/BIMOffline_XKT_Duplex.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_Duplex_originalIFCColors.html b/examples/BIMOffline_XKT_Duplex_originalIFCColors.html deleted file mode 100644 index 2dabb4792..000000000 --- a/examples/BIMOffline_XKT_Duplex_originalIFCColors.html +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the file system, using original model colors

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_HolterTower.html b/examples/BIMOffline_XKT_HolterTower.html deleted file mode 100644 index 989c1c818..000000000 --- a/examples/BIMOffline_XKT_HolterTower.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading an IFC4 Model from the File System

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_IFC2glTFConverter_HolterTower.html b/examples/BIMOffline_XKT_IFC2glTFConverter_HolterTower.html deleted file mode 100644 index 6ceabd034..000000000 --- a/examples/BIMOffline_XKT_IFC2glTFConverter_HolterTower.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

This model was converted from IFC to XKT using the high-performance IFC2glTFCxConverter CLI tool from Creoox. Learn more in in this tutorial.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_IFC2glTFConverter_Karhumaki_useDataTextures.html b/examples/BIMOffline_XKT_IFC2glTFConverter_Karhumaki_useDataTextures.html deleted file mode 100644 index e33db04ab..000000000 --- a/examples/BIMOffline_XKT_IFC2glTFConverter_Karhumaki_useDataTextures.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

This model was converted from IFC to XKT using the high-performance IFC2glTFCxConverter CLI tool from Creoox. - Learn more in in this tutorial.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_HolterTower_useDataTextures.html b/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_HolterTower_useDataTextures.html deleted file mode 100644 index 143e1637b..000000000 --- a/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_HolterTower_useDataTextures.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

This model was converted from IFC to XKT using the high-performance IFC2glTFCxConverter CLI tool from Creoox. - Learn more in in this tutorial.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC.html b/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC.html deleted file mode 100644 index d1f4cd5db..000000000 --- a/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC.html +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

This model was converted from IFC to XKT using the high-performance IFC2glTFCxConverter CLI tool from Creoox. Learn more in in this tutorial.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC_useDataTextures.html b/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC_useDataTextures.html deleted file mode 100644 index 00f81e1a7..000000000 --- a/examples/BIMOffline_XKT_IFC2glTFConverter_RevitSamples_RAC_useDataTextures.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

This model was converted from IFC to XKT using the high-performance IFC2glTFCxConverter CLI tool from Creoox. - Learn more in in this tutorial.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_OTCConferenceCenter.html b/examples/BIMOffline_XKT_OTCConferenceCenter.html deleted file mode 100644 index 34ba4c5d9..000000000 --- a/examples/BIMOffline_XKT_OTCConferenceCenter.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading an IFC4 Model from the File System

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_RevitSamples_RAC.html b/examples/BIMOffline_XKT_RevitSamples_RAC.html deleted file mode 100644 index 92c8e1949..000000000 --- a/examples/BIMOffline_XKT_RevitSamples_RAC.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_RevitSamples_RME.html b/examples/BIMOffline_XKT_RevitSamples_RME.html deleted file mode 100644 index 8a6f03bad..000000000 --- a/examples/BIMOffline_XKT_RevitSamples_RME.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM Model from the File System

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_Schependomlaan.html b/examples/BIMOffline_XKT_Schependomlaan.html deleted file mode 100644 index 32e9ff17a..000000000 --- a/examples/BIMOffline_XKT_Schependomlaan.html +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading an IFC2x3 Model from the File System

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_WaterLock.html b/examples/BIMOffline_XKT_WaterLock.html deleted file mode 100644 index 7ffe03c60..000000000 --- a/examples/BIMOffline_XKT_WaterLock.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
-
- -

XKTLoaderPlugin

-

Loading a BIM model of a water lock

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_authorMetadata.html b/examples/BIMOffline_XKT_authorMetadata.html deleted file mode 100644 index 2c37614c9..000000000 --- a/examples/BIMOffline_XKT_authorMetadata.html +++ /dev/null @@ -1,123 +0,0 @@ -? - - - - - - xeokit Example - - - - - - - - -
    -
  • -
    Loading JavaScript modules...
    -
  • -
  • - Model author: -
  • -
  • - Model creation date: -
  • -
  • - Model creation app: -
  • -
  • - Model schema: -
  • -
-
- -

XKTLoaderPlugin

-

Loading a BIM model with author metadata

- -

Components used

- -

Resources

- -
- - - - diff --git a/examples/BIMOffline_XKT_includeTypes.html b/examples/BIMOffline_XKT_includeTypes.html deleted file mode 100644 index 7d2777525..000000000 --- a/examples/BIMOffline_XKT_includeTypes.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
-

XKTLoaderPlugin

- -

Load only the specified IFC types

-

Create a plan view by loading only IfcWallStandardCase types and setting an orthographic camera looking - downwards.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components used

- -

Resources

- -
- - - - - diff --git a/examples/BIMOffline_XKT_objectDefaults.html b/examples/BIMOffline_XKT_objectDefaults.html deleted file mode 100644 index 8a8eff316..000000000 --- a/examples/BIMOffline_XKT_objectDefaults.html +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
-

XKTLoaderPlugin

- -

Overriding object appearances by IFC type

-

Configuring XKTLoaderPlugin with our own map of initial default visual states for IFC objects

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components Used

- -

Resources

- -
- - - - - diff --git a/examples/Bitmap_storeyPlan.html b/examples/Bitmap_storeyPlan.html deleted file mode 100644 index 3707d3a1e..000000000 --- a/examples/Bitmap_storeyPlan.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
- -

Bitmap

-

Creating a 2D storey plan view using a Bitmap

-

In this example, we're loading a BIM model from the file system, - while also using a Bitmap to show a 2D plan view of one of the model's storeys. The Bitmap loads the 2D plan view from a PNG file.

-

Components Used

- -

Resources

- -
- - - - - - \ No newline at end of file diff --git a/examples/Configs_disableDoublePrecision.html b/examples/Configs_disableDoublePrecision.html deleted file mode 100644 index 1f1f5c774..000000000 --- a/examples/Configs_disableDoublePrecision.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
-

Configs - disabling double precision


-

In this example we use a Configs to disable xeokit's double-precision support, which gives a performance and memory boost - on low-power devices. This however also means that we can no longer render double-precision models without jittering.

- -

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
-

Components Used

- -
- - - \ No newline at end of file diff --git a/examples/DimensionsFootprintModel_example2.html b/examples/DimensionsFootprintModel_example2.html deleted file mode 100644 index 739680866..000000000 --- a/examples/DimensionsFootprintModel_example2.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
-

DimensionsFootprintModel - Showing dimensions of hovered objects in the ground plane


- -
- - - - \ No newline at end of file diff --git a/examples/annotations_clickFlyToPosition.html b/examples/annotations/annotations_clickFlyToPosition.html similarity index 94% rename from examples/annotations_clickFlyToPosition.html rename to examples/annotations/annotations_clickFlyToPosition.html index d68ed32fb..ccfe124ed 100644 --- a/examples/annotations_clickFlyToPosition.html +++ b/examples/annotations/annotations_clickFlyToPosition.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
+
+
+ +
+

xeokit / Examples / Labeling Objects

+
+ + + \ No newline at end of file diff --git a/examples/markers_SpriteMarker.html b/examples/annotations/markers_SpriteMarker.html similarity index 74% rename from examples/markers_SpriteMarker.html rename to examples/annotations/markers_SpriteMarker.html index 4c3de38ff..c70392855 100644 --- a/examples/markers_SpriteMarker.html +++ b/examples/annotations/markers_SpriteMarker.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -18,30 +18,30 @@

A Marker with a billboarded and textured quad attached to it

Components used

@@ -58,7 +58,7 @@

Components used

ReadableGeometry, Texture, buildTorusGeometry - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; const viewer = new Viewer({ canvasId: "myCanvas", @@ -82,7 +82,7 @@

Components used

ambient: [0.9, 0.3, 0.9], shininess: 30, diffuseMap: new Texture(viewer.scene, { - src: "../assets/textures/diffuse/uvGrid2.jpg" + src: "../../assets/textures/diffuse/uvGrid2.jpg" }) }), rotation: [0, 90, 0] @@ -90,14 +90,14 @@

Components used

new SpriteMarker(viewer.scene, { worldPos: [-10, 0, 0], - src: "../assets/textures/diffuse/uvGrid2_512x1024.jpg", + src: "../../assets/textures/diffuse/uvGrid2_512x1024.jpg", size: 5, occludable: true }); new SpriteMarker(viewer.scene, { worldPos: [+10, 0, 0], - src: "../assets/textures/diffuse/uvGrid2_1024x512.jpg", + src: "../../assets/textures/diffuse/uvGrid2_1024x512.jpg", size: 4, occludable: true }); diff --git a/examples/bookmarking/index.html b/examples/bookmarking/index.html new file mode 100644 index 000000000..f8e633fec --- /dev/null +++ b/examples/bookmarking/index.html @@ -0,0 +1,470 @@ + + + + + + + xeokit Examples + + + + + + + + + +
+
+
+ +
+

xeokit / Examples / Bookmarking

+
+ + + \ No newline at end of file diff --git a/examples/BCF_LoadViewpoint.html b/examples/bookmarking/loadViewpoint.html similarity index 99% rename from examples/BCF_LoadViewpoint.html rename to examples/bookmarking/loadViewpoint.html index 2878cc32a..7f30f8282 100644 --- a/examples/BCF_LoadViewpoint.html +++ b/examples/bookmarking/loadViewpoint.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
+
+
+ +
+

xeokit / Examples / Buildings

+
+ + + \ No newline at end of file diff --git a/examples/loading_XKT_jitter_singlePrecision_MAP.html b/examples/buildings/jitter_singlePrecision_MAP.html similarity index 87% rename from examples/loading_XKT_jitter_singlePrecision_MAP.html rename to examples/buildings/jitter_singlePrecision_MAP.html index ef59dc001..0d4dd0ec2 100644 --- a/examples/loading_XKT_jitter_singlePrecision_MAP.html +++ b/examples/buildings/jitter_singlePrecision_MAP.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -25,11 +25,11 @@

Demonstrates "rounding jitter"

Components Used

  • - Viewer
  • - XKTLoaderPlugin
  • @@ -49,7 +49,7 @@

    Resources

    // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer, arrange the camera @@ -72,8 +72,8 @@

    Resources

    const model1 = xktLoader.load({ id: "myModel1", - src: "../assets/models/xkt/v3/MAP/MAP.xkt", - metaModelSrc: "../assets/models/xkt/v3/MAP/MAP.json", + src: "../../assets/models/xkt/v3/MAP/MAP.xkt", + metaModelSrc: "../../assets/models/xkt/v3/MAP/MAP.json", edges: true, excludeTypes: ["IfcSpace"], objectDefaults: {} diff --git a/examples/positioningModels_WebIFCLoaderPlugin_cartesianCoordinates.html b/examples/buildings/positioning_cartesianCoordinates.html similarity index 75% rename from examples/positioningModels_WebIFCLoaderPlugin_cartesianCoordinates.html rename to examples/buildings/positioning_cartesianCoordinates.html index 74dab04f5..15107f357 100644 --- a/examples/positioningModels_WebIFCLoaderPlugin_cartesianCoordinates.html +++ b/examples/buildings/positioning_cartesianCoordinates.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,12 +13,12 @@
    - +

    WebIFCLoaderPlugin

    Loading an IFC model and positioning it at Cartesian coordinates [18201100000000.79, 9.91, -51729900000000.84] within the Viewer's World-space coordinate system.

    Note that the technique demonstrated here also works with all the other xeokit loader plugins, including XKTLoaderPlugin.

    Stats

      @@ -29,11 +29,11 @@

      Stats

      Components Used

      @@ -48,7 +48,7 @@

      Resources

      @@ -13,11 +13,11 @@
      - +

      WebIFCLoaderPlugin

      Loading an IFC model and positioning it at geodesic longitude and latitude

      Note that the technique demonstrated here also works with all the other xeokit loader plugins, including XKTLoaderPlugin.

      Stats

        @@ -28,11 +28,11 @@

        Stats

        Components Used

        @@ -51,7 +51,7 @@

        Resources

        + + + + + + + +
        +
        + +

        WebIFCLoaderPlugin

        +

        Loading an IFC File

        +

        WebIFCLoaderPlugin is the easiest way to load IFC models into a xeokit Viewer.

        +

        WebIFCLoaderPlugin loads IFC STEP files and parses them within the browser using web-ifc, to create 3D objects within the + Viewer.

        +

        Limitations

        +

        Loading and parsing huge IFC STEP files can be slow, and can overwhelm the browser, however. To view your + largest IFC models, we recommend instead pre-converting those to xeokit's compressed native .XKT format, then + loading them with XKTLoaderPlugin.

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/web-ifc_dtx_MAPGroundFloor.html b/examples/buildings/web-ifc_dtx_MAPGroundFloor.html new file mode 100644 index 000000000..e1b27d255 --- /dev/null +++ b/examples/buildings/web-ifc_dtx_MAPGroundFloor.html @@ -0,0 +1,134 @@ + + + + + + + xeokit Example + + + + + + + + + +
        + +

        WebIFCLoaderPlugin

        +

        Loading an IFC File

        +

        This IFC model is placed at [1842022,10,-5173301], but thanks to xeokit's double-precision + coordinate support, we are able to render it without rounding jitter, without needing to center the model.

        +

        WebIFCLoaderPlugin is the easiest way to loads IFC models with xeokit.

        + +

        Limitations

        +

        WebIFCLoaderPlugin loads IFC STEP files and parses them within the browser using web-ifc, to create 3D objects within the + Viewer.

        +

        Loading and parsing huge IFC STEP files can be slow, and can overwhelm the browser, however. To view your + largest IFC models, we recommend instead pre-converting those to xeokit's compressed native .XKT format, then + loading them with XKTLoaderPlugin.

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/BIMOffline_WebIFCLoaderPlugin_Duplex.html b/examples/buildings/web-ifc_vbo_Duplex.html similarity index 87% rename from examples/BIMOffline_WebIFCLoaderPlugin_Duplex.html rename to examples/buildings/web-ifc_vbo_Duplex.html index 2c8997285..f9e2e4f28 100644 --- a/examples/BIMOffline_WebIFCLoaderPlugin_Duplex.html +++ b/examples/buildings/web-ifc_vbo_Duplex.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -24,8 +30,9 @@
        -

        DimensionsFootprintModel

        -

        Showing dimensions of an IFC model in the ground plane

        + +

        XKTLoaderPlugin

        +

        Loading a BIM model from the file system

        Stats

        diff --git a/examples/buildings/xkt_dtx_HolterTower.html b/examples/buildings/xkt_dtx_HolterTower.html new file mode 100644 index 000000000..0718f66a0 --- /dev/null +++ b/examples/buildings/xkt_dtx_HolterTower.html @@ -0,0 +1,232 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        + +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_dtx_IfcOpenHouse4.html b/examples/buildings/xkt_dtx_IfcOpenHouse4.html new file mode 100644 index 000000000..e0157f916 --- /dev/null +++ b/examples/buildings/xkt_dtx_IfcOpenHouse4.html @@ -0,0 +1,220 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        + +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_dtx_MAP.html b/examples/buildings/xkt_dtx_MAP.html new file mode 100644 index 000000000..13cbb4c3f --- /dev/null +++ b/examples/buildings/xkt_dtx_MAP.html @@ -0,0 +1,229 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        + +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_dtx_RAC.html b/examples/buildings/xkt_dtx_RAC.html new file mode 100644 index 000000000..a17ff56e5 --- /dev/null +++ b/examples/buildings/xkt_dtx_RAC.html @@ -0,0 +1,231 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_dtx_Schependomlaan.html b/examples/buildings/xkt_dtx_Schependomlaan.html new file mode 100644 index 000000000..20e4269af --- /dev/null +++ b/examples/buildings/xkt_dtx_Schependomlaan.html @@ -0,0 +1,231 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_dtx_Store.html b/examples/buildings/xkt_dtx_Store.html new file mode 100644 index 000000000..7cd298533 --- /dev/null +++ b/examples/buildings/xkt_dtx_Store.html @@ -0,0 +1,232 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/BIMOffline_XKT_WestRiverSideHospital.html b/examples/buildings/xkt_dtx_WestRiverSideHospital.html similarity index 81% rename from examples/BIMOffline_XKT_WestRiverSideHospital.html rename to examples/buildings/xkt_dtx_WestRiverSideHospital.html index 02b99d3ee..a07881dc3 100644 --- a/examples/BIMOffline_XKT_WestRiverSideHospital.html +++ b/examples/buildings/xkt_dtx_WestRiverSideHospital.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + + + + + +
        +
        +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_HousePlan.html b/examples/buildings/xkt_vbo_HousePlan.html new file mode 100644 index 000000000..0a5d532d9 --- /dev/null +++ b/examples/buildings/xkt_vbo_HousePlan.html @@ -0,0 +1,218 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_IfcOpenHouse4.html b/examples/buildings/xkt_vbo_IfcOpenHouse4.html new file mode 100644 index 000000000..d60c03fd4 --- /dev/null +++ b/examples/buildings/xkt_vbo_IfcOpenHouse4.html @@ -0,0 +1,243 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_MAP.html b/examples/buildings/xkt_vbo_MAP.html new file mode 100644 index 000000000..5045c1093 --- /dev/null +++ b/examples/buildings/xkt_vbo_MAP.html @@ -0,0 +1,214 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_OTCCenferenceCenter.html b/examples/buildings/xkt_vbo_OTCCenferenceCenter.html new file mode 100644 index 000000000..be68d9f4c --- /dev/null +++ b/examples/buildings/xkt_vbo_OTCCenferenceCenter.html @@ -0,0 +1,230 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_RAC.html b/examples/buildings/xkt_vbo_RAC.html new file mode 100644 index 000000000..37a367245 --- /dev/null +++ b/examples/buildings/xkt_vbo_RAC.html @@ -0,0 +1,230 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_RME.html b/examples/buildings/xkt_vbo_RME.html new file mode 100644 index 000000000..154085251 --- /dev/null +++ b/examples/buildings/xkt_vbo_RME.html @@ -0,0 +1,230 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_Schependomlaan.html b/examples/buildings/xkt_vbo_Schependomlaan.html new file mode 100644 index 000000000..958391069 --- /dev/null +++ b/examples/buildings/xkt_vbo_Schependomlaan.html @@ -0,0 +1,230 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/buildings/xkt_vbo_WaterLock.html b/examples/buildings/xkt_vbo_WaterLock.html new file mode 100644 index 000000000..5fe525e20 --- /dev/null +++ b/examples/buildings/xkt_vbo_WaterLock.html @@ -0,0 +1,219 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/BIMOffline_XKT_Federated_Clinic.html b/examples/buildings/xkt_vbo_federated_Clinic.html similarity index 97% rename from examples/BIMOffline_XKT_Federated_Clinic.html rename to examples/buildings/xkt_vbo_federated_Clinic.html index 5219995ce..17f67d0d4 100644 --- a/examples/BIMOffline_XKT_Federated_Clinic.html +++ b/examples/buildings/xkt_vbo_federated_Clinic.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + + + + + +
        +
        + +

        XKTLoaderPlugin

        +

        Loading an XKT model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/loading_3DXML_TreeView.html b/examples/cad/3DXML_Widget.html similarity index 96% rename from examples/loading_3DXML_TreeView.html rename to examples/cad/3DXML_Widget.html index 150b31f4f..e97c7c201 100644 --- a/examples/loading_3DXML_TreeView.html +++ b/examples/cad/3DXML_Widget.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / CAD Models

        +
        + + + \ No newline at end of file diff --git a/examples/loading_CityJSONLoaderPlugin_Railway.html b/examples/cities/CityJSON_NewYork.html similarity index 88% rename from examples/loading_CityJSONLoaderPlugin_Railway.html rename to examples/cities/CityJSON_NewYork.html index 3accc736d..459b906b9 100644 --- a/examples/loading_CityJSONLoaderPlugin_Railway.html +++ b/examples/cities/CityJSON_NewYork.html @@ -5,7 +5,7 @@ xeokit Example - + + +
        - -

        XKTLoaderPlugin

        -

        Loading nine double-precision BIM models from the file system

        -

        These models represent nine districts within the city of Lyon. They were converted from CityGML to xeokit's - native XKT model format.

        +

        Lyon city model loading into SceneModels with data textures

        +

        XKT model with double-precision geometry, rendered with data texture scene representation enabled


        Stats

        @@ -79,7 +76,18 @@

        Resources

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin, DirLight, AmbientLight, NavCubePlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import { + Viewer, + XKTLoaderPlugin, + DirLight, + AmbientLight, + NavCubePlugin, + PhongMaterial, + Mesh, + ReadableGeometry, + buildPlaneGeometry, + FastNavPlugin + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer with a logarithmic depth buffer @@ -87,11 +95,29 @@

        Resources

        const viewer = new Viewer({ canvasId: "myCanvas", - saoEnabled: true, transparent: true, logarithmicDepthBufferEnabled: true // <<--- Enable logarithmic depth buffer }); + // Enable data texture model representation for + // all subsequently created SceneModels (unless they override it to be disabled) + + viewer.scene.dtxEnabled = true; // Default is false + + //------------------------------------------------------------------------------------------------------------------ + // Higher-quality SAO configuration + //------------------------------------------------------------------------------------------------------------------ + + viewer.scene.sao.bias = -.3; + viewer.scene.sao.numSamples = 50; + viewer.scene.sao.kernelRadius = 200; + + //------------------------------------------------------------------------------------------------------------------ + // Higher-quality rendering when camera still, lower-quality when moving + //------------------------------------------------------------------------------------------------------------------ + + new FastNavPlugin(viewer); + //------------------------------------------------------------------------------------------------------------------ // Configure Camera // @@ -104,10 +130,10 @@

        Resources

        viewer.camera.up = [0.07693555158566205, 0.8946686100264034, 0.4400556773132614]; viewer.camera.perspective.near = 1.0; - viewer.camera.perspective.far = 100000000; + viewer.camera.perspective.far = 10000000; // 10000km viewer.camera.ortho.near = 1.0; - viewer.camera.ortho.far = 100000000; + viewer.camera.ortho.far = 10000000; // 10000km //------------------------------------------------------------------------------------------------------------------ // Configure CameraControl @@ -116,6 +142,7 @@

        Resources

        //------------------------------------------------------------------------------------------------------------------ viewer.cameraControl.followPointer = true; + viewer.cameraControl.smartPivot = true; const pivotElement = document.createRange().createContextualFragment("
        ").firstChild; document.body.appendChild(pivotElement); @@ -152,6 +179,18 @@

        Resources

        space: "world" }); + new FastNavPlugin(viewer, { + hideEdges: true, + hideSAO: true, + hideColorTexture: false, + hidePBR: false, + hideTransparentObjects: false, + scaleCanvasResolution: false, + scaleCanvasResolutionFactor: 0.5, + delayBeforeRestore: true, + delayBeforeRestoreSeconds: 0.4 + }); + //---------------------------------------------------------------------------------------------------------------------- // Add a NavCube //---------------------------------------------------------------------------------------------------------------------- @@ -168,34 +207,21 @@

        Resources

        }); //------------------------------------------------------------------------------------------------------------------ - // Only enable ambient shadows and emphasized edges when camera is stationary + // Create a ground plane //------------------------------------------------------------------------------------------------------------------ - let timeoutDuration = 1000; // Milliseconds - let timer = timeoutDuration; - let saoAndEdgesDisabled = false; - - viewer.scene.camera.on("matrix", () => { - timer = timeoutDuration; - if (!saoAndEdgesDisabled) { - viewer.scene.sao.enabled = false; - viewer.scene.edgeMaterial.edges = false; - saoAndEdgesDisabled = true; - } - }); - - viewer.scene.on("tick", (tickEvent) => { // Milliseconds - if (!saoAndEdgesDisabled) { - return; - } - timer -= tickEvent.deltaTime; - if (timer <= 0) { - if (saoAndEdgesDisabled) { - viewer.scene.sao.enabled = true; - viewer.scene.edgeMaterial.edges = true; - saoAndEdgesDisabled = false; - } - } + new Mesh(viewer.scene, { + geometry: new ReadableGeometry(viewer.scene, buildPlaneGeometry({ + xSize: 15000, + zSize: 15000 + })), + material: new PhongMaterial(viewer.scene, { + diffuse: [0.3, 0.5, 0.1], + // alpha: 0.0, + alphaMode: "opaque" + }), + position: [1842761.9375, -5.53293939639616, -5174733.5], + collidable: false }); //---------------------------------------------------------------------------------------------------------------------- @@ -210,72 +236,89 @@

        Resources

        xktLoader.load({ id: "lyon1", - src: "../assets/models/xkt/v7/Lyon/Lyon1.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon1.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 2 of 9"; xktLoader.load({ id: "lyon2", - src: "../assets/models/xkt/v7/Lyon/Lyon2.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon2.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 3 of 9"; xktLoader.load({ id: "lyon3", - src: "../assets/models/xkt/v7/Lyon/Lyon3.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon3.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 4 of 9"; xktLoader.load({ id: "lyon4", - src: "../assets/models/xkt/v7/Lyon/Lyon4.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon4.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 5 of 9"; xktLoader.load({ id: "Lyon5", - src: "../assets/models/xkt/v7/Lyon/Lyon5.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon5.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 6 of 9"; xktLoader.load({ id: "Lyon6", - src: "../assets/models/xkt/v7/Lyon/Lyon6.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon6.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 7 of 9"; xktLoader.load({ id: "Lyon7", - src: "../assets/models/xkt/v7/Lyon/Lyon7.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon7.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 8 of 9"; xktLoader.load({ id: "Lyon8", - src: "../assets/models/xkt/v7/Lyon/Lyon8.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon8.xkt", + edges: true, + saoEnabled: true, + dtxEnabled: true }).on("loaded", () => { document.getElementById("time").innerHTML = "Loading model 9 of 9"; const lyon9 = xktLoader.load({ id: "Lyon9", - src: "../assets/models/xkt/v7/Lyon/Lyon9.xkt", - edges: true, saoEnabled: true + src: "../../assets/models/xkt/v7/Lyon/Lyon9.xkt", + edges: true, + saoEnabled: true }); lyon9.on("loaded", () => { @@ -290,6 +333,7 @@

        Resources

        const t1 = performance.now(); document.getElementById("time").innerHTML = "Loaded 9 models in " + Math.floor((t1 - t0)) / 1000 + " seconds
        Objects: " + numEntities; + }); }); }); @@ -300,5 +344,7 @@

        Resources

        }); }); + window.camera = viewer.camera; + diff --git a/examples/cities/index.html b/examples/cities/index.html new file mode 100644 index 000000000..fef4a2111 --- /dev/null +++ b/examples/cities/index.html @@ -0,0 +1,466 @@ + + + + + + + xeokit Examples + + + + + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / Cities

        +
        + + + \ No newline at end of file diff --git a/examples/css/style.css b/examples/css/style.css index 9f2f60bbc..88acefbec 100644 --- a/examples/css/style.css +++ b/examples/css/style.css @@ -324,7 +324,7 @@ p.subSectionTip { a.subSubSection { padding-left: 22px; - background: url("../../assets/images/bullet-point.png") no-repeat 8px 2px !important; + background: url("../../../assets/images/bullet-point.png") no-repeat 8px 2px !important; } #pageMenuContainer { diff --git a/examples/default.html b/examples/default.html deleted file mode 100644 index a20848574..000000000 --- a/examples/default.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - xeokit Annotations Example - - - - - - - - diff --git a/examples/emphasis_colorize_throughXRay.html b/examples/emphasis_colorize_throughXRay.html deleted file mode 100644 index d9a0e5e5a..000000000 --- a/examples/emphasis_colorize_throughXRay.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        Emphasis Test #1

        -

        Inner box is colorized, outer box is X-rayed

        -

        - VBOSceneModel is a WebGL2-based SceneModel implementation that stores model geometry as vertex buffer objects (VBOs) on - the GPU and renders them using a combination of geometry instancing and batching. -

        -

        Components Used

        - -
        - - - - \ No newline at end of file diff --git a/examples/emphasis_selectedAndHighlighted_throughTransparent_Duplex.html b/examples/emphasis_selectedAndHighlighted_throughTransparent_Duplex.html deleted file mode 100644 index 31870581e..000000000 --- a/examples/emphasis_selectedAndHighlighted_throughTransparent_Duplex.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM model from the file system, then testing the rendering of selected and highlighted objects behind normal transparent objects.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/emphasis_selected_throughXRay.html b/examples/emphasis_selected_throughXRay.html deleted file mode 100644 index d7116f6a2..000000000 --- a/examples/emphasis_selected_throughXRay.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        Emphasis Test #1

        -

        Inner box is colorized, outer box is X-rayed

        -

        - VBOSceneModel is a WebGL2-based SceneModel implementation that stores model geometry as vertex buffer objects (VBOs) on - the GPU and renders them using a combination of geometry instancing and batching. -

        -

        Components Used

        - -
        - - - - \ No newline at end of file diff --git a/examples/picking_canvas_mesh_colorize_click.html b/examples/emphasising/colorize.html similarity index 65% rename from examples/picking_canvas_mesh_colorize_click.html rename to examples/emphasising/colorize.html index 6cac4e24f..acee2ca40 100644 --- a/examples/picking_canvas_mesh_colorize_click.html +++ b/examples/emphasising/colorize.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,19 +13,18 @@
        -

        Picking Objects

        +

        Colirizing Objects

        Click objects to colorize them

        +

        Components Used

        @@ -35,7 +34,7 @@

        Click objects to colorize them

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -48,6 +47,7 @@

        Click objects to colorize them

        viewer.camera.eye = [-3.93, 2.85, 27.01]; viewer.camera.look = [4.40, 3.72, 8.89]; viewer.camera.up = [-0.01, 0.99, 0.039]; + //------------------------------------------------------------------------------------------------------------------ // Load a model and fit it to view //------------------------------------------------------------------------------------------------------------------ @@ -56,43 +56,25 @@

        Click objects to colorize them

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects + src: "../../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); + //------------------------------------------------------------------------------------------------------------------ // Click Entities to colorize them //------------------------------------------------------------------------------------------------------------------ - var lastEntity = null; - var lastColorize = null; - - viewer.cameraControl.on("picked", (pickResult) => { - - if (!pickResult.entity) { - return; - } + viewer.scene.input.on("mousedown", function (coords) { - console.log(pickResult.entity.id); - - if (!lastEntity || pickResult.entity.id !== lastEntity.id) { - - if (lastEntity) { - lastEntity.colorize = lastColorize; - } - - lastEntity = pickResult.entity; - lastColorize = pickResult.entity.colorize ? pickResult.entity.colorize.slice() : null; + var pickResult = viewer.scene.pick({ + canvasPos: coords + }); + if (pickResult) { + console.log(pickResult.entity.id); pickResult.entity.colorize = [0.0, 1.0, 0.0]; } }); - viewer.cameraControl.on("pickedNothing", () => { - if (lastEntity) { - lastEntity.colorize = lastColorize; - lastEntity = null; - } - }); - - + \ No newline at end of file diff --git a/examples/picking_canvas_mesh_highlight.html b/examples/emphasising/highlight.html similarity index 67% rename from examples/picking_canvas_mesh_highlight.html rename to examples/emphasising/highlight.html index 4734cc408..b0eb3642b 100644 --- a/examples/picking_canvas_mesh_highlight.html +++ b/examples/emphasising/highlight.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,16 +13,16 @@
        -

        Picking Objects

        -

        Hover over objects to highlight them

        +

        Set Objects Highlighted

        +

        Click objects to highlight them

        Components Used

        @@ -34,7 +34,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -50,6 +50,7 @@

        Components Used

        viewer.camera.eye = [-3.93, 2.85, 27.01]; viewer.camera.look = [4.40, 3.72, 8.89]; viewer.camera.up = [-0.01, 0.99, 0.039]; + //------------------------------------------------------------------------------------------------------------------ // Load a model //------------------------------------------------------------------------------------------------------------------ @@ -58,40 +59,25 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to highlight them + // Click Entities to highlight them //------------------------------------------------------------------------------------------------------------------ - var lastEntity = null; - - viewer.scene.input.on("mousemove", function (coords) { + viewer.scene.input.on("mousedown", function (coords) { - var hit = viewer.scene.pick({ + const pickResult = viewer.scene.pick({ canvasPos: coords }); - if (hit) { - - if (!lastEntity || hit.entity.id !== lastEntity.id) { - - if (lastEntity) { - lastEntity.highlighted = false; - } - - lastEntity = hit.entity; - hit.entity.highlighted = true; - } - } else { - - if (lastEntity) { - lastEntity.highlighted = false; - lastEntity = null; - } + if (pickResult) { + console.log(pickResult.entity.id); + pickResult.entity.highlighted = true; } }); + \ No newline at end of file diff --git a/examples/picking_canvas_mesh_highlight_glowThroughFalse.html b/examples/emphasising/highlight_glowThroughFalse.html similarity index 74% rename from examples/picking_canvas_mesh_highlight_glowThroughFalse.html rename to examples/emphasising/highlight_glowThroughFalse.html index 88bbf2cec..dd4e9931e 100644 --- a/examples/picking_canvas_mesh_highlight_glowThroughFalse.html +++ b/examples/emphasising/highlight_glowThroughFalse.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -19,11 +19,11 @@

        Hover over objects to highlight them

        Components Used

        @@ -35,7 +35,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -67,40 +67,25 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to highlight them + // Click Entities to highlight them //------------------------------------------------------------------------------------------------------------------ - var lastEntity = null; + viewer.scene.input.on("mousedown", function (coords) { - viewer.scene.input.on("mousemove", function (coords) { - - var hit = viewer.scene.pick({ + const pickResult = viewer.scene.pick({ canvasPos: coords }); - if (hit) { - - if (!lastEntity || hit.entity.id !== lastEntity.id) { - - if (lastEntity) { - lastEntity.highlighted = false; - } - - lastEntity = hit.entity; - hit.entity.highlighted = true; - } - } else { - - if (lastEntity) { - lastEntity.highlighted = false; - lastEntity = null; - } + if (pickResult) { + console.log(pickResult.entity.id); + pickResult.entity.highlighted = true; } }); + \ No newline at end of file diff --git a/examples/picking_canvas_mesh_highlight_transparent.html b/examples/emphasising/highlight_transparentCanvas.html similarity index 87% rename from examples/picking_canvas_mesh_highlight_transparent.html rename to examples/emphasising/highlight_transparentCanvas.html index 1eca79b4e..3ffdb505d 100644 --- a/examples/picking_canvas_mesh_highlight_transparent.html +++ b/examples/emphasising/highlight_transparentCanvas.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -18,11 +18,11 @@

        Hover objects to highlight them

        Components Used

        @@ -34,7 +34,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -57,7 +57,7 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); diff --git a/examples/emphasising/index.html b/examples/emphasising/index.html new file mode 100644 index 000000000..6d8ed59de --- /dev/null +++ b/examples/emphasising/index.html @@ -0,0 +1,462 @@ + + + + + + + xeokit Examples + + + + + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / Emphasising

        +
        + + + \ No newline at end of file diff --git a/examples/picking_canvas_mesh_opacity.html b/examples/emphasising/opacity.html similarity index 67% rename from examples/picking_canvas_mesh_opacity.html rename to examples/emphasising/opacity.html index 689bb4112..52e128e4e 100644 --- a/examples/picking_canvas_mesh_opacity.html +++ b/examples/emphasising/opacity.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,16 +13,16 @@
        -

        Picking Objects

        +

        Set Object Opacities

        Click objects to change their opacity

        Components Used

        @@ -34,7 +34,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -55,47 +55,25 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); + //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to colorize them + // Mouse over Entities to set them transparent //------------------------------------------------------------------------------------------------------------------ - var lastEntity = null; - var lastOpacity = null; - viewer.scene.input.on("mousedown", function (coords) { - var hit = viewer.scene.pick({ + const pickResult = viewer.scene.pick({ canvasPos: coords }); - if (hit) { - - // console.log(hit.entity.id); - - if (!lastEntity || hit.entity.id !== lastEntity.id) { - - if (lastEntity) { - lastEntity.opacity = lastOpacity; - } - - lastEntity = hit.entity; - lastOpacity = hit.entity.opacity; - - hit.entity.opacity = 0.6; - } - } else { - - if (lastEntity) { - lastEntity.opacity = lastOpacity; - lastEntity = null; - } + if (pickResult) { + console.log(pickResult.entity.id); + pickResult.entity.opacity = 0.6; } }); - window.viewer = viewer; - \ No newline at end of file diff --git a/examples/emphasising/select.html b/examples/emphasising/select.html new file mode 100644 index 000000000..002fefd51 --- /dev/null +++ b/examples/emphasising/select.html @@ -0,0 +1,79 @@ + + + + + + + xeokit Example + + + + + + + +
        +

        Set Objects Selected

        +

        Click objects to select them

        +

        Components Used

        + +
        + + + \ No newline at end of file diff --git a/examples/picking_canvas_mesh_select_glowThroughFalse.html b/examples/emphasising/select_glowThroughFalse.html similarity index 74% rename from examples/picking_canvas_mesh_select_glowThroughFalse.html rename to examples/emphasising/select_glowThroughFalse.html index d65f160bb..8e6405877 100644 --- a/examples/picking_canvas_mesh_select_glowThroughFalse.html +++ b/examples/emphasising/select_glowThroughFalse.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -19,11 +19,11 @@

        Hover over objects to select them

        Components Used

        @@ -35,7 +35,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -67,39 +67,23 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to select them + //Click Entities to make them appear selected //------------------------------------------------------------------------------------------------------------------ - var lastEntity = null; + viewer.scene.input.on("mousedown", function (coords) { - viewer.scene.input.on("mousemove", function (coords) { - - var hit = viewer.scene.pick({ + const pickResult = viewer.scene.pick({ canvasPos: coords }); - if (hit) { - - if (!lastEntity || hit.entity.id !== lastEntity.id) { - - if (lastEntity) { - lastEntity.selected = false; - } - - lastEntity = hit.entity; - hit.entity.selected = true; - } - } else { - - if (lastEntity) { - lastEntity.selected = false; - lastEntity = null; - } + if (pickResult) { + console.log(pickResult.entity.id); + pickResult.entity.selected = true; } }); diff --git a/examples/picking_canvas_mesh_select_transparent.html b/examples/emphasising/select_transparentCanvas.html similarity index 87% rename from examples/picking_canvas_mesh_select_transparent.html rename to examples/emphasising/select_transparentCanvas.html index a3250cf46..8e54e3ec1 100644 --- a/examples/picking_canvas_mesh_select_transparent.html +++ b/examples/emphasising/select_transparentCanvas.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -18,11 +18,11 @@

        Hover objects to select them

        Components Used

        @@ -34,7 +34,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -57,7 +57,7 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); diff --git a/examples/picking_canvas_mesh_select.html b/examples/emphasising/xray.html similarity index 66% rename from examples/picking_canvas_mesh_select.html rename to examples/emphasising/xray.html index 55d50f4cd..c5f963b6b 100644 --- a/examples/picking_canvas_mesh_select.html +++ b/examples/emphasising/xray.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,16 +13,16 @@
        -

        Picking Objects

        -

        Hover objects to select them

        +

        X-Raying Objects

        +

        Click objects to X-ray them

        Components Used

        @@ -34,7 +34,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -47,6 +47,10 @@

        Components Used

        viewer.camera.eye = [-3.93, 2.85, 27.01]; viewer.camera.look = [4.40, 3.72, 8.89]; viewer.camera.up = [-0.01, 0.99, 0.039]; + + viewer.scene.xrayMaterial.fillColor = [1.0, 0.0, 0.0]; + viewer.scene.xrayMaterial.fillAlpha = 0.5; + //------------------------------------------------------------------------------------------------------------------ // Load a model //------------------------------------------------------------------------------------------------------------------ @@ -55,40 +59,25 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects + src: "../../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to select them + //Click Entities to make them appear X-rayed //------------------------------------------------------------------------------------------------------------------ - var lastEntity = null; + viewer.scene.input.on("mousedown", function (coords) { - viewer.scene.input.on("mousemove", function (coords) { - - var hit = viewer.scene.pick({ + const pickResult = viewer.scene.pick({ canvasPos: coords }); - if (hit) { - - if (!lastEntity || hit.entity.id !== lastEntity.id) { - - if (lastEntity) { - lastEntity.selected = false; - } - - lastEntity = hit.entity; - hit.entity.selected = true; - } - } else { - - if (lastEntity) { - lastEntity.selected = false; - lastEntity = null; - } + if (pickResult) { + console.log(pickResult.entity.id); + pickResult.entity.xrayed = true; } }); + \ No newline at end of file diff --git a/examples/picking_canvas_mesh_xray_transparent.html b/examples/emphasising/xray_transparentCanvas.html similarity index 68% rename from examples/picking_canvas_mesh_xray_transparent.html rename to examples/emphasising/xray_transparentCanvas.html index 608b45416..d5b7a37f7 100644 --- a/examples/picking_canvas_mesh_xray_transparent.html +++ b/examples/emphasising/xray_transparentCanvas.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,16 +13,16 @@
        -

        Picking Objects

        -

        Hover objects to X-ray them

        +

        X-Raying Objects on a Transparent Canvas

        +

        Click objects to X-ray them

        Components Used

        @@ -34,7 +34,7 @@

        Components Used

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -60,40 +60,25 @@

        Components Used

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to highlight them + //Click Entities to make them appear X-rayed //------------------------------------------------------------------------------------------------------------------ - var lastEntity = null; + viewer.scene.input.on("mousedown", function (coords) { - viewer.scene.input.on("mousemove", function (coords) { - - var hit = viewer.scene.pick({ + const pickResult = viewer.scene.pick({ canvasPos: coords }); - if (hit) { - - if (!lastEntity || hit.entity.id !== lastEntity.id) { - - if (lastEntity) { - lastEntity.xrayed = false; - } - - lastEntity = hit.entity; - hit.entity.xrayed = true; - } - } else { - - if (lastEntity) { - lastEntity.xrayed = false; - lastEntity = null; - } + if (pickResult) { + console.log(pickResult.entity.id); + pickResult.entity.xrayed = true; } }); + \ No newline at end of file diff --git a/examples/geometry/index.html b/examples/geometry/index.html new file mode 100644 index 000000000..521d55e56 --- /dev/null +++ b/examples/geometry/index.html @@ -0,0 +1,459 @@ + + + + + + + xeokit Examples + + + + + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / Geometry

        +
        + + + \ No newline at end of file diff --git a/examples/geometry_loaders_load3DSGeometry.html b/examples/geometry_loaders_load3DSGeometry.html deleted file mode 100644 index 3da161c79..000000000 --- a/examples/geometry_loaders_load3DSGeometry.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        load3DSGeometry()

        -

        Loads geometry from 3DS

        -

        In this example, we're creating a simple 3D scene that contains geometry loaded from 3DS.

        -

        Components Used

        - -
        - - - - \ No newline at end of file diff --git a/examples/geometry_loaders_loadOBJGeometry.html b/examples/geometry_loaders_loadOBJGeometry.html deleted file mode 100644 index 8d35a60e1..000000000 --- a/examples/geometry_loaders_loadOBJGeometry.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        loadOBJGeometry()

        -

        Loads geometry from OBJ

        -

        In this example, we're creating a simple 3D scene that contains geometry loaded from OBJ, which we render using - physically-based metallic/roughness materials.

        -

        Components Used

        - -
        - - - - \ No newline at end of file diff --git a/examples/gizmos_SectionPlanesPlugin.html b/examples/gizmos_SectionPlanesPlugin.html deleted file mode 100644 index 8c40a207f..000000000 --- a/examples/gizmos_SectionPlanesPlugin.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
        - -

        SectionPlanesPlugin

        -

        Slices models open to reveal internal structures

        -

        This example loads an IFC2x3 BIM model, then with programmatically creates section planes to slice it.

        -

        Components used

        - -

        Resources

        - -
        - - - - - \ No newline at end of file diff --git a/examples/index.html b/examples/index.html index 75e09f038..aaaa74d4a 100644 --- a/examples/index.html +++ b/examples/index.html @@ -1,992 +1,688 @@ - - + + - - - - xeokit Examples - - - - + + + xeokit SDK Examples + + - - -
        -
        -
        - -
        -

        xeokit / Examples

        -
        - - - \ No newline at end of file +
        +

        xeokit SDK Examples

        +

        npm version +

        +

        + +

        Viewing Models

        +
        + + + +

        +

        Interacting with Objects

        +
        + + + +

        +

        Programming Scene Content

        +
        + + +
        + + + + + + + diff --git a/examples/index2.html b/examples/index2.html new file mode 100644 index 000000000..03fc9b51f --- /dev/null +++ b/examples/index2.html @@ -0,0 +1,992 @@ + + + + + + + xeokit Examples + + + + + + + + + +
        +
        +
        + +
        +

        xeokit / Examples

        +
        + + + \ No newline at end of file diff --git a/examples/libs/PickHitHelper.js b/examples/libs/PickHitHelper.js index e4d7dfb77..9ae795011 100644 --- a/examples/libs/PickHitHelper.js +++ b/examples/libs/PickHitHelper.js @@ -1,4 +1,4 @@ -import {buildSphereGeometry, Component, math, Node, Mesh, PhongMaterial, VBOGeometry} from "./../https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; +import {buildSphereGeometry, Component, math, Node, Mesh, PhongMaterial, VBOGeometry} from "../../../dist/xeokit-sdk.es.js"; const zeroVec = new Float64Array([0, 0, -1]); const quat = new Float64Array(4); diff --git a/examples/libs/PickRayHelper.js b/examples/libs/PickRayHelper.js index 142e2148d..685c00954 100644 --- a/examples/libs/PickRayHelper.js +++ b/examples/libs/PickRayHelper.js @@ -1,4 +1,4 @@ -import {buildSphereGeometry, Component, math, Node, Mesh, PhongMaterial, VBOGeometry} from "./../https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; +import {buildSphereGeometry, Component, math, Node, Mesh, PhongMaterial, VBOGeometry} from "../../../dist/xeokit-sdk.es.js"; const zeroVec = new Float64Array([0, 0, -1]); const quat = new Float64Array(4); diff --git a/examples/libs/dat.gui.min.js b/examples/libs/dat.gui.min.js index c15d86c6d..ca434b6a8 100644 --- a/examples/libs/dat.gui.min.js +++ b/examples/libs/dat.gui.min.js @@ -10,4 +10,4 @@ * * http://www.apache.org/licenses/LICENSE-2.0 */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.dat={})}(this,function(e){"use strict";function t(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}function n(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(I.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(I.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function o(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(I.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(I.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}function i(e){if("0"===e||S.isUndefined(e))return 0;var t=e.match(U);return S.isNull(t)?0:parseFloat(t[1])}function r(e){var t=e.toString();return t.indexOf(".")>-1?t.length-t.indexOf(".")-1:0}function s(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}function a(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}function l(e,t,n,o){e.style.background="",S.each(ee,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function d(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}function c(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function u(e){X.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&X.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function _(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];n.innerHTML=t?n.value+"*":n.value}function h(e,t,n){if(n.__li=t,n.__gui=e,S.extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:o,factoryArgs:[S.toArray(arguments)]})}if(S.isArray(t)||S.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof q){var o=new Q(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});S.each(["updateDisplay","onChange","onFinishChange","step","min","max"],function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}}),X.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof Q){var i=function(t){if(S.isNumber(n.__min)&&S.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=f(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=S.compose(i,n.min),n.max=S.compose(i,n.max)}else n instanceof K?(X.bind(t,"click",function(){X.fakeEvent(n.__checkbox,"click")}),X.bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof Z?(X.bind(t,"click",function(){X.fakeEvent(n.__button,"click")}),X.bind(t,"mouseover",function(){X.addClass(n.__button,"hover")}),X.bind(t,"mouseout",function(){X.removeClass(n.__button,"hover")})):n instanceof $&&(X.addClass(t,"color"),n.updateDisplay=S.compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=S.compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&_(e.getRoot(),!0),t},n.setValue)}function p(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(-1!==o){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,s=void 0;if(r[e.preset])s=r[e.preset];else{if(!r[se])return;s=r[se]}if(s[o]&&void 0!==s[o][t.property]){var a=s[o][t.property];t.initialValue=a,t.setValue(a)}}}}function f(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var i=void 0;if(o.color)i=new $(t,n);else{var r=[t,n].concat(o.factoryArgs);i=ne.apply(e,r)}o.before instanceof z&&(o.before=o.before.__li),p(e,i),X.addClass(i.domElement,"c");var s=document.createElement("span");X.addClass(s,"property-name"),s.innerHTML=i.property;var a=document.createElement("div");a.appendChild(s),a.appendChild(i.domElement);var l=c(e,a,o.before);return X.addClass(l,he.CLASS_CONTROLLER_ROW),i instanceof $?X.addClass(l,"color"):X.addClass(l,H(i.getValue())),h(e,l,i),e.__controllers.push(i),i}function m(e,t){return document.location.href+"."+t}function g(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function b(e,t){t.style.display=e.useLocalStorage?"block":"none"}function v(e){var t=e.__save_row=document.createElement("li");X.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),X.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",X.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",X.addClass(o,"button"),X.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",X.addClass(i,"button"),X.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",X.addClass(r,"button"),X.addClass(r,"revert");var s=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?S.each(e.load.remembered,function(t,n){g(e,n,n===e.preset)}):g(e,se,!1),X.bind(s,"change",function(){for(var t=0;t=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,n){if(e)if(A&&e.forEach&&e.forEach===A)e.forEach(t,n);else if(e.length===e.length+0){var o=void 0,i=void 0;for(o=0,i=e.length;o1?S.toArray(arguments):arguments[0];return S.each(O,function(t){if(t.litmus(e))return S.each(t.conversions,function(t,n){if(T=t.read(e),!1===L&&!1!==T)return L=T,T.conversionName=n,T.conversion=t,S.BREAK}),S.BREAK}),L},B=void 0,N={hsv_to_rgb:function(e,t,n){var o=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=n*(1-t),s=n*(1-i*t),a=n*(1-(1-i)*t),l=[[n,a,r],[s,n,r],[r,n,a],[r,s,n],[a,r,n],[n,r,s]][o];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,n){var o=Math.min(e,t,n),i=Math.max(e,t,n),r=i-o,s=void 0,a=void 0;return 0===i?{h:NaN,s:0,v:0}:(a=r/i,s=e===i?(t-n)/r:t===i?2+(n-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:a,v:i/255})},rgb_to_hex:function(e,t,n){var o=this.hex_with_component(0,2,e);return o=this.hex_with_component(o,1,t),o=this.hex_with_component(o,0,n)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,n){return n<<(B=8*t)|e&~(255<this.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!=0&&(n=Math.round(n/this.__step)*this.__step),j(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=r(e),this}}]),t}(),Q=function(e){function t(e,n,o){function i(){l.__onFinishChange&&l.__onFinishChange.call(l,l.getValue())}function r(e){var t=d-e.clientY;l.setValue(l.getValue()+t*l.__impliedStep),d=e.clientY}function s(){X.unbind(window,"mousemove",r),X.unbind(window,"mouseup",s),i()}F(this,t);var a=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,o));a.__truncationSuspended=!1;var l=a,d=void 0;return a.__input=document.createElement("input"),a.__input.setAttribute("type","text"),X.bind(a.__input,"change",function(){var e=parseFloat(l.__input.value);S.isNaN(e)||l.setValue(e)}),X.bind(a.__input,"blur",function(){i()}),X.bind(a.__input,"mousedown",function(e){X.bind(window,"mousemove",r),X.bind(window,"mouseup",s),d=e.clientY}),X.bind(a.__input,"keydown",function(e){13===e.keyCode&&(l.__truncationSuspended=!0,this.blur(),l.__truncationSuspended=!1,i())}),a.updateDisplay(),a.domElement.appendChild(a.__input),a}return D(t,W),P(t,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():s(this.getValue(),this.__precision),j(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),q=function(e){function t(e,n,o,i,r){function s(e){e.preventDefault();var t=_.__background.getBoundingClientRect();return _.setValue(a(e.clientX,t.left,t.right,_.__min,_.__max)),!1}function l(){X.unbind(window,"mousemove",s),X.unbind(window,"mouseup",l),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}function d(e){var t=e.touches[0].clientX,n=_.__background.getBoundingClientRect();_.setValue(a(t,n.left,n.right,_.__min,_.__max))}function c(){X.unbind(window,"touchmove",d),X.unbind(window,"touchend",c),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}F(this,t);var u=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,{min:o,max:i,step:r})),_=u;return u.__background=document.createElement("div"),u.__foreground=document.createElement("div"),X.bind(u.__background,"mousedown",function(e){document.activeElement.blur(),X.bind(window,"mousemove",s),X.bind(window,"mouseup",l),s(e)}),X.bind(u.__background,"touchstart",function(e){1===e.touches.length&&(X.bind(window,"touchmove",d),X.bind(window,"touchend",c),d(e))}),X.addClass(u.__background,"slider"),X.addClass(u.__foreground,"slider-fg"),u.updateDisplay(),u.__background.appendChild(u.__foreground),u.domElement.appendChild(u.__background),u}return D(t,W),P(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",j(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),Z=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===o?"Fire":o,X.bind(i.__button,"click",function(e){return e.preventDefault(),r.fire(),!1}),X.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return D(t,z),P(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(),$=function(e){function t(e,n){function o(e){u(e),X.bind(window,"mousemove",u),X.bind(window,"touchmove",u),X.bind(window,"mouseup",r),X.bind(window,"touchend",r)}function i(e){_(e),X.bind(window,"mousemove",_),X.bind(window,"touchmove",_),X.bind(window,"mouseup",s),X.bind(window,"touchend",s)}function r(){X.unbind(window,"mousemove",u),X.unbind(window,"touchmove",u),X.unbind(window,"mouseup",r),X.unbind(window,"touchend",r),c()}function s(){X.unbind(window,"mousemove",_),X.unbind(window,"touchmove",_),X.unbind(window,"mouseup",s),X.unbind(window,"touchend",s),c()}function a(){var e=R(this.value);!1!==e?(p.__color.__state=e,p.setValue(p.__color.toOriginal())):this.value=p.__color.toString()}function c(){p.__onFinishChange&&p.__onFinishChange.call(p,p.__color.toOriginal())}function u(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__saturation_field.getBoundingClientRect(),n=e.touches&&e.touches[0]||e,o=n.clientX,i=n.clientY,r=(o-t.left)/(t.right-t.left),s=1-(i-t.top)/(t.bottom-t.top);return s>1?s=1:s<0&&(s=0),r>1?r=1:r<0&&(r=0),p.__color.v=s,p.__color.s=r,p.setValue(p.__color.toOriginal()),!1}function _(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__hue_field.getBoundingClientRect(),n=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),p.__color.h=360*n,p.setValue(p.__color.toOriginal()),!1}F(this,t);var h=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));h.__color=new I(h.getValue()),h.__temp=new I(0);var p=h;h.domElement=document.createElement("div"),X.makeSelectable(h.domElement,!1),h.__selector=document.createElement("div"),h.__selector.className="selector",h.__saturation_field=document.createElement("div"),h.__saturation_field.className="saturation-field",h.__field_knob=document.createElement("div"),h.__field_knob.className="field-knob",h.__field_knob_border="2px solid ",h.__hue_knob=document.createElement("div"),h.__hue_knob.className="hue-knob",h.__hue_field=document.createElement("div"),h.__hue_field.className="hue-field",h.__input=document.createElement("input"),h.__input.type="text",h.__input_textShadow="0 1px 1px ",X.bind(h.__input,"keydown",function(e){13===e.keyCode&&a.call(this)}),X.bind(h.__input,"blur",a),X.bind(h.__selector,"mousedown",function(){X.addClass(this,"drag").bind(window,"mouseup",function(){X.removeClass(p.__selector,"drag")})}),X.bind(h.__selector,"touchstart",function(){X.addClass(this,"drag").bind(window,"touchend",function(){X.removeClass(p.__selector,"drag")})});var f=document.createElement("div");return S.extend(h.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),S.extend(h.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:h.__field_knob_border+(h.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),S.extend(h.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),S.extend(h.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),S.extend(f.style,{width:"100%",height:"100%",background:"none"}),l(f,"top","rgba(0,0,0,0)","#000"),S.extend(h.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),d(h.__hue_field),S.extend(h.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:h.__input_textShadow+"rgba(0,0,0,0.7)"}),X.bind(h.__saturation_field,"mousedown",o),X.bind(h.__saturation_field,"touchstart",o),X.bind(h.__field_knob,"mousedown",o),X.bind(h.__field_knob,"touchstart",o),X.bind(h.__hue_field,"mousedown",i),X.bind(h.__hue_field,"touchstart",i),h.__saturation_field.appendChild(f),h.__selector.appendChild(h.__field_knob),h.__selector.appendChild(h.__saturation_field),h.__selector.appendChild(h.__hue_field),h.__hue_field.appendChild(h.__hue_knob),h.domElement.appendChild(h.__input),h.domElement.appendChild(h.__selector),h.updateDisplay(),h}return D(t,z),P(t,[{key:"updateDisplay",value:function(){var e=R(this.getValue());if(!1!==e){var t=!1;S.each(I.COMPONENTS,function(n){if(!S.isUndefined(e[n])&&!S.isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&S.extend(this.__color.__state,e)}S.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;S.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),S.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})}}]),t}(),ee=["-moz-","-o-","-webkit-","-ms-",""],te={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(e){}}},ne=function(e,t){var n=e[t];return S.isArray(arguments[2])||S.isObject(arguments[2])?new Y(e,t,arguments[2]):S.isNumber(n)?S.isNumber(arguments[2])&&S.isNumber(arguments[3])?S.isNumber(arguments[4])?new q(e,t,arguments[2],arguments[3],arguments[4]):new q(e,t,arguments[2],arguments[3]):S.isNumber(arguments[4])?new Q(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new Q(e,t,{min:arguments[2],max:arguments[3]}):S.isString(n)?new J(e,t):S.isFunction(n)?new Z(e,t,""):S.isBoolean(n)?new K(e,t):null},oe=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},ie=function(){function e(){F(this,e),this.backgroundElement=document.createElement("div"),S.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),X.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),S.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;X.bind(this.backgroundElement,"click",function(){t.hide()})}return P(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),S.defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",X.unbind(e.domElement,"webkitTransitionEnd",t),X.unbind(e.domElement,"transitionend",t),X.unbind(e.domElement,"oTransitionEnd",t)};X.bind(this.domElement,"webkitTransitionEnd",t),X.bind(this.domElement,"transitionend",t),X.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-X.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-X.getHeight(this.domElement)/2+"px"}}]),e}(),re=function(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(assets:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(assets:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(assets:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n");te.inject(re);var se="Default",ae=function(){try{return!!window.localStorage}catch(e){return!1}}(),le=void 0,de=!0,ce=void 0,ue=!1,_e=[],he=function e(t){var n=this,o=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),X.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],o=S.defaults(o,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),o=S.defaults(o,{resizable:o.autoPlace,hideable:o.autoPlace}),S.isUndefined(o.load)?o.load={preset:se}:o.preset&&(o.load.preset=o.preset),S.isUndefined(o.parent)&&o.hideable&&_e.push(this),o.resizable=S.isUndefined(o.parent)&&o.resizable,o.autoPlace&&S.isUndefined(o.scrollable)&&(o.scrollable=!0);var i=ae&&"true"===localStorage.getItem(m(this,"isLocal")),r=void 0,s=void 0;if(Object.defineProperties(this,{parent:{get:function(){return o.parent}},scrollable:{get:function(){return o.scrollable}},autoPlace:{get:function(){return o.autoPlace}},closeOnTop:{get:function(){return o.closeOnTop}},preset:{get:function(){return n.parent?n.getRoot().preset:o.load.preset},set:function(e){n.parent?n.getRoot().preset=e:o.load.preset=e,E(this),n.revert()}},width:{get:function(){return o.width},set:function(e){o.width=e,w(n,e)}},name:{get:function(){return o.name},set:function(e){o.name=e,s&&(s.innerHTML=o.name)}},closed:{get:function(){return o.closed},set:function(t){o.closed=t,o.closed?X.addClass(n.__ul,e.CLASS_CLOSED):X.removeClass(n.__ul,e.CLASS_CLOSED),this.onResize(),n.__closeButton&&(n.__closeButton.innerHTML=t?e.TEXT_OPEN:e.TEXT_CLOSED)}},load:{get:function(){return o.load}},useLocalStorage:{get:function(){return i},set:function(e){ae&&(i=e,e?X.bind(window,"unload",r):X.unbind(window,"unload",r),localStorage.setItem(m(n,"isLocal"),e))}}}),S.isUndefined(o.parent)){if(this.closed=o.closed||!1,X.addClass(this.domElement,e.CLASS_MAIN),X.makeSelectable(this.domElement,!1),ae&&i){n.useLocalStorage=!0;var a=localStorage.getItem(m(this,"gui"));a&&(o.load=JSON.parse(a))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=e.TEXT_CLOSED,X.addClass(this.__closeButton,e.CLASS_CLOSE_BUTTON),o.closeOnTop?(X.addClass(this.__closeButton,e.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(X.addClass(this.__closeButton,e.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),X.bind(this.__closeButton,"click",function(){n.closed=!n.closed})}else{void 0===o.closed&&(o.closed=!0);var l=document.createTextNode(o.name);X.addClass(l,"controller-name"),s=c(n,l);X.addClass(this.__ul,e.CLASS_CLOSED),X.addClass(s,"title"),X.bind(s,"click",function(e){return e.preventDefault(),n.closed=!n.closed,!1}),o.closed||(this.closed=!1)}o.autoPlace&&(S.isUndefined(o.parent)&&(de&&(ce=document.createElement("div"),X.addClass(ce,"dg"),X.addClass(ce,e.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(ce),de=!1),ce.appendChild(this.domElement),X.addClass(this.domElement,e.CLASS_AUTO_PLACE)),this.parent||w(n,o.width)),this.__resizeHandler=function(){n.onResizeDebounced()},X.bind(window,"resize",this.__resizeHandler),X.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),X.bind(this.__ul,"transitionend",this.__resizeHandler),X.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),o.resizable&&y(this),r=function(){ae&&"true"===localStorage.getItem(m(n,"isLocal"))&&localStorage.setItem(m(n,"gui"),JSON.stringify(n.getSaveObject()))},this.saveToLocalStorageIfPossible=r,o.parent||function(){var e=n.getRoot();e.width+=1,S.defer(function(){e.width-=1})}()};he.toggleHide=function(){ue=!ue,S.each(_e,function(e){e.domElement.style.display=ue?"none":""})},he.CLASS_AUTO_PLACE="a",he.CLASS_AUTO_PLACE_CONTAINER="ac",he.CLASS_MAIN="main",he.CLASS_CONTROLLER_ROW="cr",he.CLASS_TOO_TALL="taller-than-window",he.CLASS_CLOSED="closed",he.CLASS_CLOSE_BUTTON="close-button",he.CLASS_CLOSE_TOP="close-top",he.CLASS_CLOSE_BOTTOM="close-bottom",he.CLASS_DRAG="drag",he.DEFAULT_WIDTH=245,he.TEXT_CLOSED="Close Controls",he.TEXT_OPEN="Open Controls",he._keydownHandler=function(e){"text"===document.activeElement.type||72!==e.which&&72!==e.keyCode||he.toggleHide()},X.bind(window,"keydown",he._keydownHandler,!1),S.extend(he.prototype,{add:function(e,t){return f(this,e,t,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(e,t){return f(this,e,t,{color:!0})},remove:function(e){this.__ul.removeChild(e.__li),this.__controllers.splice(this.__controllers.indexOf(e),1);var t=this;S.defer(function(){t.onResize()})},destroy:function(){if(this.parent)throw new Error("Only the root GUI should be removed with .destroy(). For subfolders, use gui.removeFolder(folder) instead.");this.autoPlace&&ce.removeChild(this.domElement);var e=this;S.each(this.__folders,function(t){e.removeFolder(t)}),X.unbind(window,"keydown",he._keydownHandler,!1),u(this)},addFolder:function(e){if(void 0!==this.__folders[e])throw new Error('You already have a folder in this GUI by the name "'+e+'"');var t={name:e,parent:this};t.autoPlace=this.autoPlace,this.load&&this.load.folders&&this.load.folders[e]&&(t.closed=this.load.folders[e].closed,t.load=this.load.folders[e]);var n=new he(t);this.__folders[e]=n;var o=c(this,n.domElement);return X.addClass(o,"folder"),n},removeFolder:function(e){this.__ul.removeChild(e.domElement.parentElement),delete this.__folders[e.name],this.load&&this.load.folders&&this.load.folders[e.name]&&delete this.load.folders[e.name],u(e);var t=this;S.each(e.__folders,function(t){e.removeFolder(t)}),S.defer(function(){t.onResize()})},open:function(){this.closed=!1},close:function(){this.closed=!0},hide:function(){this.domElement.style.display="none"},show:function(){this.domElement.style.display=""},onResize:function(){var e=this.getRoot();if(e.scrollable){var t=X.getOffset(e.__ul).top,n=0;S.each(e.__ul.childNodes,function(t){e.autoPlace&&t===e.__save_row||(n+=X.getHeight(t))}),window.innerHeight-t-20GUI\'s constructor:\n\n \n\n
        \n\n Automatically save\n values to localStorage on exit.\n\n
        The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
        \n\n
        \n\n
        '),this.parent)throw new Error("You can only call remember on a top level GUI.");var e=this;S.each(Array.prototype.slice.call(arguments),function(t){0===e.__rememberedObjects.length&&v(e),-1===e.__rememberedObjects.indexOf(t)&&e.__rememberedObjects.push(t)}),this.autoPlace&&w(this,this.width)},getRoot:function(){for(var e=this;e.parent;)e=e.parent;return e},getSaveObject:function(){var e=this.load;return e.closed=this.closed,this.__rememberedObjects.length>0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=x(this)),e.folders={},S.each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=x(this),_(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[se]=x(this,!0)),this.load.remembered[e]=x(this),this.preset=e,g(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){S.each(this.__controllers,function(t){this.getRoot().load.remembered?p(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),S.each(this.__folders,function(e){e.revert(e)}),e||_(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&C(this.__listening)},updateDisplay:function(){S.each(this.__controllers,function(e){e.updateDisplay()}),S.each(this.__folders,function(e){e.updateDisplay()})}});var pe={Color:I,math:N,interpret:R},fe={Controller:z,BooleanController:K,OptionController:Y,StringController:J,NumberController:W,NumberControllerBox:Q,NumberControllerSlider:q,FunctionController:Z,ColorController:$},me={dom:X},ge={GUI:he},be=he,ve={color:pe,controllers:fe,dom:me,gui:ge,GUI:be};e.color=pe,e.controllers=fe,e.dom=me,e.gui=ge,e.GUI=be,e.default=ve,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.dat={})}(this,function(e){"use strict";function t(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"../css_RGB"===n?"rgb("+o+","+i+","+r+")":"../css_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}function n(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(I.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(I.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function o(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(I.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(I.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}function i(e){if("0"===e||S.isUndefined(e))return 0;var t=e.match(U);return S.isNull(t)?0:parseFloat(t[1])}function r(e){var t=e.toString();return t.indexOf(".")>-1?t.length-t.indexOf(".")-1:0}function s(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}function a(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}function l(e,t,n,o){e.style.background="",S.each(ee,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function d(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}function c(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function u(e){X.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&X.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function _(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];n.innerHTML=t?n.value+"*":n.value}function h(e,t,n){if(n.__li=t,n.__gui=e,S.extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:o,factoryArgs:[S.toArray(arguments)]})}if(S.isArray(t)||S.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof q){var o=new Q(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});S.each(["updateDisplay","onChange","onFinishChange","step","min","max"],function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}}),X.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof Q){var i=function(t){if(S.isNumber(n.__min)&&S.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=f(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=S.compose(i,n.min),n.max=S.compose(i,n.max)}else n instanceof K?(X.bind(t,"click",function(){X.fakeEvent(n.__checkbox,"click")}),X.bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof Z?(X.bind(t,"click",function(){X.fakeEvent(n.__button,"click")}),X.bind(t,"mouseover",function(){X.addClass(n.__button,"hover")}),X.bind(t,"mouseout",function(){X.removeClass(n.__button,"hover")})):n instanceof $&&(X.addClass(t,"color"),n.updateDisplay=S.compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=S.compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&_(e.getRoot(),!0),t},n.setValue)}function p(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(-1!==o){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,s=void 0;if(r[e.preset])s=r[e.preset];else{if(!r[se])return;s=r[se]}if(s[o]&&void 0!==s[o][t.property]){var a=s[o][t.property];t.initialValue=a,t.setValue(a)}}}}function f(e,t,n,o){if(void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var i=void 0;if(o.color)i=new $(t,n);else{var r=[t,n].concat(o.factoryArgs);i=ne.apply(e,r)}o.before instanceof z&&(o.before=o.before.__li),p(e,i),X.addClass(i.domElement,"c");var s=document.createElement("span");X.addClass(s,"property-name"),s.innerHTML=i.property;var a=document.createElement("div");a.appendChild(s),a.appendChild(i.domElement);var l=c(e,a,o.before);return X.addClass(l,he.CLASS_CONTROLLER_ROW),i instanceof $?X.addClass(l,"color"):X.addClass(l,H(i.getValue())),h(e,l,i),e.__controllers.push(i),i}function m(e,t){return document.location.href+"."+t}function g(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function b(e,t){t.style.display=e.useLocalStorage?"block":"none"}function v(e){var t=e.__save_row=document.createElement("li");X.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),X.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",X.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",X.addClass(o,"button"),X.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",X.addClass(i,"button"),X.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",X.addClass(r,"button"),X.addClass(r,"revert");var s=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?S.each(e.load.remembered,function(t,n){g(e,n,n===e.preset)}):g(e,se,!1),X.bind(s,"change",function(){for(var t=0;t=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,n){if(e)if(A&&e.forEach&&e.forEach===A)e.forEach(t,n);else if(e.length===e.length+0){var o=void 0,i=void 0;for(o=0,i=e.length;o1?S.toArray(arguments):arguments[0];return S.each(O,function(t){if(t.litmus(e))return S.each(t.conversions,function(t,n){if(T=t.read(e),!1===L&&!1!==T)return L=T,T.conversionName=n,T.conversion=t,S.BREAK}),S.BREAK}),L},B=void 0,N={hsv_to_rgb:function(e,t,n){var o=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=n*(1-t),s=n*(1-i*t),a=n*(1-(1-i)*t),l=[[n,a,r],[s,n,r],[r,n,a],[r,s,n],[a,r,n],[n,r,s]][o];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,n){var o=Math.min(e,t,n),i=Math.max(e,t,n),r=i-o,s=void 0,a=void 0;return 0===i?{h:NaN,s:0,v:0}:(a=r/i,s=e===i?(t-n)/r:t===i?2+(n-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:a,v:i/255})},rgb_to_hex:function(e,t,n){var o=this.hex_with_component(0,2,e);return o=this.hex_with_component(o,1,t),o=this.hex_with_component(o,0,n)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,n){return n<<(B=8*t)|e&~(255<this.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!=0&&(n=Math.round(n/this.__step)*this.__step),j(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=r(e),this}}]),t}(),Q=function(e){function t(e,n,o){function i(){l.__onFinishChange&&l.__onFinishChange.call(l,l.getValue())}function r(e){var t=d-e.clientY;l.setValue(l.getValue()+t*l.__impliedStep),d=e.clientY}function s(){X.unbind(window,"mousemove",r),X.unbind(window,"mouseup",s),i()}F(this,t);var a=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,o));a.__truncationSuspended=!1;var l=a,d=void 0;return a.__input=document.createElement("input"),a.__input.setAttribute("type","text"),X.bind(a.__input,"change",function(){var e=parseFloat(l.__input.value);S.isNaN(e)||l.setValue(e)}),X.bind(a.__input,"blur",function(){i()}),X.bind(a.__input,"mousedown",function(e){X.bind(window,"mousemove",r),X.bind(window,"mouseup",s),d=e.clientY}),X.bind(a.__input,"keydown",function(e){13===e.keyCode&&(l.__truncationSuspended=!0,this.blur(),l.__truncationSuspended=!1,i())}),a.updateDisplay(),a.domElement.appendChild(a.__input),a}return D(t,W),P(t,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():s(this.getValue(),this.__precision),j(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),q=function(e){function t(e,n,o,i,r){function s(e){e.preventDefault();var t=_.__background.getBoundingClientRect();return _.setValue(a(e.clientX,t.left,t.right,_.__min,_.__max)),!1}function l(){X.unbind(window,"mousemove",s),X.unbind(window,"mouseup",l),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}function d(e){var t=e.touches[0].clientX,n=_.__background.getBoundingClientRect();_.setValue(a(t,n.left,n.right,_.__min,_.__max))}function c(){X.unbind(window,"touchmove",d),X.unbind(window,"touchend",c),_.__onFinishChange&&_.__onFinishChange.call(_,_.getValue())}F(this,t);var u=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,{min:o,max:i,step:r})),_=u;return u.__background=document.createElement("div"),u.__foreground=document.createElement("div"),X.bind(u.__background,"mousedown",function(e){document.activeElement.blur(),X.bind(window,"mousemove",s),X.bind(window,"mouseup",l),s(e)}),X.bind(u.__background,"touchstart",function(e){1===e.touches.length&&(X.bind(window,"touchmove",d),X.bind(window,"touchend",c),d(e))}),X.addClass(u.__background,"slider"),X.addClass(u.__foreground,"slider-fg"),u.updateDisplay(),u.__background.appendChild(u.__foreground),u.domElement.appendChild(u.__background),u}return D(t,W),P(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",j(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),Z=function(e){function t(e,n,o){F(this,t);var i=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===o?"Fire":o,X.bind(i.__button,"click",function(e){return e.preventDefault(),r.fire(),!1}),X.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return D(t,z),P(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(),$=function(e){function t(e,n){function o(e){u(e),X.bind(window,"mousemove",u),X.bind(window,"touchmove",u),X.bind(window,"mouseup",r),X.bind(window,"touchend",r)}function i(e){_(e),X.bind(window,"mousemove",_),X.bind(window,"touchmove",_),X.bind(window,"mouseup",s),X.bind(window,"touchend",s)}function r(){X.unbind(window,"mousemove",u),X.unbind(window,"touchmove",u),X.unbind(window,"mouseup",r),X.unbind(window,"touchend",r),c()}function s(){X.unbind(window,"mousemove",_),X.unbind(window,"touchmove",_),X.unbind(window,"mouseup",s),X.unbind(window,"touchend",s),c()}function a(){var e=R(this.value);!1!==e?(p.__color.__state=e,p.setValue(p.__color.toOriginal())):this.value=p.__color.toString()}function c(){p.__onFinishChange&&p.__onFinishChange.call(p,p.__color.toOriginal())}function u(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__saturation_field.getBoundingClientRect(),n=e.touches&&e.touches[0]||e,o=n.clientX,i=n.clientY,r=(o-t.left)/(t.right-t.left),s=1-(i-t.top)/(t.bottom-t.top);return s>1?s=1:s<0&&(s=0),r>1?r=1:r<0&&(r=0),p.__color.v=s,p.__color.s=r,p.setValue(p.__color.toOriginal()),!1}function _(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=p.__hue_field.getBoundingClientRect(),n=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),p.__color.h=360*n,p.setValue(p.__color.toOriginal()),!1}F(this,t);var h=V(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));h.__color=new I(h.getValue()),h.__temp=new I(0);var p=h;h.domElement=document.createElement("div"),X.makeSelectable(h.domElement,!1),h.__selector=document.createElement("div"),h.__selector.className="selector",h.__saturation_field=document.createElement("div"),h.__saturation_field.className="saturation-field",h.__field_knob=document.createElement("div"),h.__field_knob.className="field-knob",h.__field_knob_border="2px solid ",h.__hue_knob=document.createElement("div"),h.__hue_knob.className="hue-knob",h.__hue_field=document.createElement("div"),h.__hue_field.className="hue-field",h.__input=document.createElement("input"),h.__input.type="text",h.__input_textShadow="0 1px 1px ",X.bind(h.__input,"keydown",function(e){13===e.keyCode&&a.call(this)}),X.bind(h.__input,"blur",a),X.bind(h.__selector,"mousedown",function(){X.addClass(this,"drag").bind(window,"mouseup",function(){X.removeClass(p.__selector,"drag")})}),X.bind(h.__selector,"touchstart",function(){X.addClass(this,"drag").bind(window,"touchend",function(){X.removeClass(p.__selector,"drag")})});var f=document.createElement("div");return S.extend(h.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),S.extend(h.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:h.__field_knob_border+(h.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),S.extend(h.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),S.extend(h.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),S.extend(f.style,{width:"100%",height:"100%",background:"none"}),l(f,"top","rgba(0,0,0,0)","#000"),S.extend(h.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),d(h.__hue_field),S.extend(h.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:h.__input_textShadow+"rgba(0,0,0,0.7)"}),X.bind(h.__saturation_field,"mousedown",o),X.bind(h.__saturation_field,"touchstart",o),X.bind(h.__field_knob,"mousedown",o),X.bind(h.__field_knob,"touchstart",o),X.bind(h.__hue_field,"mousedown",i),X.bind(h.__hue_field,"touchstart",i),h.__saturation_field.appendChild(f),h.__selector.appendChild(h.__field_knob),h.__selector.appendChild(h.__saturation_field),h.__selector.appendChild(h.__hue_field),h.__hue_field.appendChild(h.__hue_knob),h.domElement.appendChild(h.__input),h.domElement.appendChild(h.__selector),h.updateDisplay(),h}return D(t,z),P(t,[{key:"updateDisplay",value:function(){var e=R(this.getValue());if(!1!==e){var t=!1;S.each(I.COMPONENTS,function(n){if(!S.isUndefined(e[n])&&!S.isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}},this),t&&S.extend(this.__color.__state,e)}S.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;S.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,l(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),S.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})}}]),t}(),ee=["-moz-","-o-","-webkit-","-ms-",""],te={load:function(e,t){var n=t||document,o=n.createElement("link");o.type="text/css",o.rel="stylesheet",o.href=e,n.getElementsByTagName("head")[0].appendChild(o)},inject:function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(e){}}},ne=function(e,t){var n=e[t];return S.isArray(arguments[2])||S.isObject(arguments[2])?new Y(e,t,arguments[2]):S.isNumber(n)?S.isNumber(arguments[2])&&S.isNumber(arguments[3])?S.isNumber(arguments[4])?new q(e,t,arguments[2],arguments[3],arguments[4]):new q(e,t,arguments[2],arguments[3]):S.isNumber(arguments[4])?new Q(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new Q(e,t,{min:arguments[2],max:arguments[3]}):S.isString(n)?new J(e,t):S.isFunction(n)?new Z(e,t,""):S.isBoolean(n)?new K(e,t):null},oe=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},ie=function(){function e(){F(this,e),this.backgroundElement=document.createElement("div"),S.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),X.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),S.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;X.bind(this.backgroundElement,"click",function(){t.hide()})}return P(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),S.defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",X.unbind(e.domElement,"webkitTransitionEnd",t),X.unbind(e.domElement,"transitionend",t),X.unbind(e.domElement,"oTransitionEnd",t)};X.bind(this.domElement,"webkitTransitionEnd",t),X.bind(this.domElement,"transitionend",t),X.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-X.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-X.getHeight(this.domElement)/2+"px"}}]),e}(),re=function(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(assets:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(assets:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(assets:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n");te.inject(re);var se="Default",ae=function(){try{return!!window.localStorage}catch(e){return!1}}(),le=void 0,de=!0,ce=void 0,ue=!1,_e=[],he=function e(t){var n=this,o=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),X.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],o=S.defaults(o,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),o=S.defaults(o,{resizable:o.autoPlace,hideable:o.autoPlace}),S.isUndefined(o.load)?o.load={preset:se}:o.preset&&(o.load.preset=o.preset),S.isUndefined(o.parent)&&o.hideable&&_e.push(this),o.resizable=S.isUndefined(o.parent)&&o.resizable,o.autoPlace&&S.isUndefined(o.scrollable)&&(o.scrollable=!0);var i=ae&&"true"===localStorage.getItem(m(this,"isLocal")),r=void 0,s=void 0;if(Object.defineProperties(this,{parent:{get:function(){return o.parent}},scrollable:{get:function(){return o.scrollable}},autoPlace:{get:function(){return o.autoPlace}},closeOnTop:{get:function(){return o.closeOnTop}},preset:{get:function(){return n.parent?n.getRoot().preset:o.load.preset},set:function(e){n.parent?n.getRoot().preset=e:o.load.preset=e,E(this),n.revert()}},width:{get:function(){return o.width},set:function(e){o.width=e,w(n,e)}},name:{get:function(){return o.name},set:function(e){o.name=e,s&&(s.innerHTML=o.name)}},closed:{get:function(){return o.closed},set:function(t){o.closed=t,o.closed?X.addClass(n.__ul,e.CLASS_CLOSED):X.removeClass(n.__ul,e.CLASS_CLOSED),this.onResize(),n.__closeButton&&(n.__closeButton.innerHTML=t?e.TEXT_OPEN:e.TEXT_CLOSED)}},load:{get:function(){return o.load}},useLocalStorage:{get:function(){return i},set:function(e){ae&&(i=e,e?X.bind(window,"unload",r):X.unbind(window,"unload",r),localStorage.setItem(m(n,"isLocal"),e))}}}),S.isUndefined(o.parent)){if(this.closed=o.closed||!1,X.addClass(this.domElement,e.CLASS_MAIN),X.makeSelectable(this.domElement,!1),ae&&i){n.useLocalStorage=!0;var a=localStorage.getItem(m(this,"gui"));a&&(o.load=JSON.parse(a))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=e.TEXT_CLOSED,X.addClass(this.__closeButton,e.CLASS_CLOSE_BUTTON),o.closeOnTop?(X.addClass(this.__closeButton,e.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(X.addClass(this.__closeButton,e.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),X.bind(this.__closeButton,"click",function(){n.closed=!n.closed})}else{void 0===o.closed&&(o.closed=!0);var l=document.createTextNode(o.name);X.addClass(l,"controller-name"),s=c(n,l);X.addClass(this.__ul,e.CLASS_CLOSED),X.addClass(s,"title"),X.bind(s,"click",function(e){return e.preventDefault(),n.closed=!n.closed,!1}),o.closed||(this.closed=!1)}o.autoPlace&&(S.isUndefined(o.parent)&&(de&&(ce=document.createElement("div"),X.addClass(ce,"dg"),X.addClass(ce,e.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(ce),de=!1),ce.appendChild(this.domElement),X.addClass(this.domElement,e.CLASS_AUTO_PLACE)),this.parent||w(n,o.width)),this.__resizeHandler=function(){n.onResizeDebounced()},X.bind(window,"resize",this.__resizeHandler),X.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),X.bind(this.__ul,"transitionend",this.__resizeHandler),X.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),o.resizable&&y(this),r=function(){ae&&"true"===localStorage.getItem(m(n,"isLocal"))&&localStorage.setItem(m(n,"gui"),JSON.stringify(n.getSaveObject()))},this.saveToLocalStorageIfPossible=r,o.parent||function(){var e=n.getRoot();e.width+=1,S.defer(function(){e.width-=1})}()};he.toggleHide=function(){ue=!ue,S.each(_e,function(e){e.domElement.style.display=ue?"none":""})},he.CLASS_AUTO_PLACE="a",he.CLASS_AUTO_PLACE_CONTAINER="ac",he.CLASS_MAIN="main",he.CLASS_CONTROLLER_ROW="cr",he.CLASS_TOO_TALL="taller-than-window",he.CLASS_CLOSED="closed",he.CLASS_CLOSE_BUTTON="close-button",he.CLASS_CLOSE_TOP="close-top",he.CLASS_CLOSE_BOTTOM="close-bottom",he.CLASS_DRAG="drag",he.DEFAULT_WIDTH=245,he.TEXT_CLOSED="Close Controls",he.TEXT_OPEN="Open Controls",he._keydownHandler=function(e){"text"===document.activeElement.type||72!==e.which&&72!==e.keyCode||he.toggleHide()},X.bind(window,"keydown",he._keydownHandler,!1),S.extend(he.prototype,{add:function(e,t){return f(this,e,t,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(e,t){return f(this,e,t,{color:!0})},remove:function(e){this.__ul.removeChild(e.__li),this.__controllers.splice(this.__controllers.indexOf(e),1);var t=this;S.defer(function(){t.onResize()})},destroy:function(){if(this.parent)throw new Error("Only the root GUI should be removed with .destroy(). For subfolders, use gui.removeFolder(folder) instead.");this.autoPlace&&ce.removeChild(this.domElement);var e=this;S.each(this.__folders,function(t){e.removeFolder(t)}),X.unbind(window,"keydown",he._keydownHandler,!1),u(this)},addFolder:function(e){if(void 0!==this.__folders[e])throw new Error('You already have a folder in this GUI by the name "'+e+'"');var t={name:e,parent:this};t.autoPlace=this.autoPlace,this.load&&this.load.folders&&this.load.folders[e]&&(t.closed=this.load.folders[e].closed,t.load=this.load.folders[e]);var n=new he(t);this.__folders[e]=n;var o=c(this,n.domElement);return X.addClass(o,"folder"),n},removeFolder:function(e){this.__ul.removeChild(e.domElement.parentElement),delete this.__folders[e.name],this.load&&this.load.folders&&this.load.folders[e.name]&&delete this.load.folders[e.name],u(e);var t=this;S.each(e.__folders,function(t){e.removeFolder(t)}),S.defer(function(){t.onResize()})},open:function(){this.closed=!1},close:function(){this.closed=!0},hide:function(){this.domElement.style.display="none"},show:function(){this.domElement.style.display=""},onResize:function(){var e=this.getRoot();if(e.scrollable){var t=X.getOffset(e.__ul).top,n=0;S.each(e.__ul.childNodes,function(t){e.autoPlace&&t===e.__save_row||(n+=X.getHeight(t))}),window.innerHeight-t-20GUI\'s constructor:\n\n \n\n
        \n\n Automatically save\n values to localStorage on exit.\n\n
        The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
        \n\n
        \n\n
        '),this.parent)throw new Error("You can only call remember on a top level GUI.");var e=this;S.each(Array.prototype.slice.call(arguments),function(t){0===e.__rememberedObjects.length&&v(e),-1===e.__rememberedObjects.indexOf(t)&&e.__rememberedObjects.push(t)}),this.autoPlace&&w(this,this.width)},getRoot:function(){for(var e=this;e.parent;)e=e.parent;return e},getSaveObject:function(){var e=this.load;return e.closed=this.closed,this.__rememberedObjects.length>0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=x(this)),e.folders={},S.each(this.__folders,function(t,n){e.folders[n]=t.getSaveObject()}),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=x(this),_(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[se]=x(this,!0)),this.load.remembered[e]=x(this),this.preset=e,g(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){S.each(this.__controllers,function(t){this.getRoot().load.remembered?p(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())},this),S.each(this.__folders,function(e){e.revert(e)}),e||_(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&C(this.__listening)},updateDisplay:function(){S.each(this.__controllers,function(e){e.updateDisplay()}),S.each(this.__folders,function(e){e.updateDisplay()})}});var pe={Color:I,math:N,interpret:R},fe={Controller:z,BooleanController:K,OptionController:Y,StringController:J,NumberController:W,NumberControllerBox:Q,NumberControllerSlider:q,FunctionController:Z,ColorController:$},me={dom:X},ge={GUI:he},be=he,ve={color:pe,controllers:fe,dom:me,gui:ge,GUI:be};e.color=pe,e.controllers=fe,e.dom=me,e.gui=ge,e.GUI=be,e.default=ve,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/examples/loading_glTF_Roadworks.html b/examples/lidar/glb_Roadworks.html similarity index 77% rename from examples/loading_glTF_Roadworks.html rename to examples/lidar/glb_Roadworks.html index b004d0b55..0f212f557 100644 --- a/examples/loading_glTF_Roadworks.html +++ b/examples/lidar/glb_Roadworks.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / LiDAR

        +
        + + + \ No newline at end of file diff --git a/examples/loading_LASLoaderPlugin_Autzen.html b/examples/lidar/las_Autzen.html similarity index 90% rename from examples/loading_LASLoaderPlugin_Autzen.html rename to examples/lidar/las_Autzen.html index ae4207338..dff56d088 100644 --- a/examples/loading_LASLoaderPlugin_Autzen.html +++ b/examples/lidar/las_Autzen.html @@ -5,10 +5,10 @@ xeokit Example - + - - + + - - - - - - - - -
        -
        - -

        XKTLoaderPlugin

        -

        Loading an XKT model imported from CityJSON

        -

        CityJSON is a JSON-based encoding for a subset of the CityGML data model, - which is an open standardised data model and exchange format to store digital 3D models of cities and - landscapes.

        -

        This CityJSON model is placed at [300410, 5000100, -40809], but thanks to xeokit's double-precision - coordinate support, we are able to render it without rounding jitter, without needing to center the model.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components used

        - -

        Resources

        - -
        - - - - diff --git a/examples/loading_MultipleModels.html b/examples/loading_MultipleModels.html deleted file mode 100644 index f23d6a060..000000000 --- a/examples/loading_MultipleModels.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        -

        Loading Models from XKT, OBJ and STL into the same scene

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_APHS.html b/examples/loading_XKT_APHS.html deleted file mode 100644 index 9fe00d9c0..000000000 --- a/examples/loading_XKT_APHS.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM model from the file system

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - - diff --git a/examples/loading_XKT_BoxTextured.html b/examples/loading_XKT_BoxTextured.html deleted file mode 100644 index 7447c62d5..000000000 --- a/examples/loading_XKT_BoxTextured.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading an XKT file converted from a binary glTF test model

        -

        In this example, we're loading an XKT file converted from binary glTF, complete with textures.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_ConvenienceStore.html b/examples/loading_XKT_ConvenienceStore.html deleted file mode 100644 index 6c128f4d8..000000000 --- a/examples/loading_XKT_ConvenienceStore.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM Model from the File System

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_DamagedHelmet.html b/examples/loading_XKT_DamagedHelmet.html deleted file mode 100644 index 65f11d58a..000000000 --- a/examples/loading_XKT_DamagedHelmet.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading an XKT file converted from a binary glTF test model

        -

        In this example, we're loading an XKT file converted from binary glTF, complete with textures.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Duplex.html b/examples/loading_XKT_Duplex.html deleted file mode 100644 index e1a882760..000000000 --- a/examples/loading_XKT_Duplex.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM model from the file system

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Duplex_originalIFCColors.html b/examples/loading_XKT_Duplex_originalIFCColors.html deleted file mode 100644 index 755c97ed8..000000000 --- a/examples/loading_XKT_Duplex_originalIFCColors.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM model from the file system, with object colors loaded from the model file.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Duplex_transform.html b/examples/loading_XKT_Duplex_transform.html deleted file mode 100644 index 7cdcb1981..000000000 --- a/examples/loading_XKT_Duplex_transform.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading multiple copies of a BIM model

        -

        In this example, we're loading multiple copies of the same model from the file system, while independently - transforming each model.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_HousePlan.html b/examples/loading_XKT_HousePlan.html deleted file mode 100644 index 77c56e778..000000000 --- a/examples/loading_XKT_HousePlan.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading BIM geometry and textures from the file system

        -

        In this example, we're loading an XKT file converted from binary glTF.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_HousePlan_NoTextures.html b/examples/loading_XKT_HousePlan_NoTextures.html deleted file mode 100644 index 9495f3844..000000000 --- a/examples/loading_XKT_HousePlan_NoTextures.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading BIM geometry from the file system, ignoring textures

        -

        In this example, we're loading an XKT file converted from binary glTF, without textures because we configured convert2xkt to ignore them.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_MAP.html b/examples/loading_XKT_MAP.html deleted file mode 100644 index c8c24a92b..000000000 --- a/examples/loading_XKT_MAP.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        Rounding Jitter Fixed with XKT V7


        -

        Model is loaded from XKT, which supports full-precision geometry, which fixes rounding jitter


        -
          -
        • Model center is [1842022, 10, -5173301]
        • -
        • Model provided by BIMData.io
        • -
        -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_OTCConferenceCenter.html b/examples/loading_XKT_OTCConferenceCenter.html deleted file mode 100644 index a8599c8ad..000000000 --- a/examples/loading_XKT_OTCConferenceCenter.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM model from the file system

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Roadworks.html b/examples/loading_XKT_Roadworks.html deleted file mode 100644 index cf51233db..000000000 --- a/examples/loading_XKT_Roadworks.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a roadworks scan captured on iPhone 12 Pro with Scaniverse

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Schependomlaan.html b/examples/loading_XKT_Schependomlaan.html deleted file mode 100644 index 35dc29bdc..000000000 --- a/examples/loading_XKT_Schependomlaan.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM model from the file system

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Schependomlaan_transform.html b/examples/loading_XKT_Schependomlaan_transform.html deleted file mode 100644 index a35c0ef15..000000000 --- a/examples/loading_XKT_Schependomlaan_transform.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading multiple copies of a BIM model

        -

        In this example, we're loading multiple copies of the same model from the file system, while independently - transforming each model.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Textures_DamagedHelmet.html b/examples/loading_XKT_Textures_DamagedHelmet.html deleted file mode 100644 index b2e8ff0ba..000000000 --- a/examples/loading_XKT_Textures_DamagedHelmet.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading a BIM model from the file system

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_Textures_HousePlan.html b/examples/loading_XKT_Textures_HousePlan.html deleted file mode 100644 index fb8a08988..000000000 --- a/examples/loading_XKT_Textures_HousePlan.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading BIM geometry with compressed textures from the file system

        -

        In this example, we're loading an XKT file containing compressed textures formatted as KTX2.

        -

        To support KTX2, we configure our XKTLoaderPlugin with a KTX2TextureTranscoder, which uses the Basis Universal codec to transcode the files into a compressed - format for the user's GPU.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_WestRiverSideHospital.html b/examples/loading_XKT_WestRiverSideHospital.html deleted file mode 100644 index f0919850a..000000000 --- a/examples/loading_XKT_WestRiverSideHospital.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading seven BIM models from the file system

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - -v - - - \ No newline at end of file diff --git a/examples/loading_XKT_concurrently.html b/examples/loading_XKT_concurrently.html deleted file mode 100644 index 340a4c6b9..000000000 --- a/examples/loading_XKT_concurrently.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Loading seven BIM models concurrently from the file system

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components used

        - -

        Resources

        -
          -
        • - Architectural, Structure, Electrical, Fire Alarms, Sprinklers, Plumbing and Mechanical models are from the - Autodesk West - RiverSide - Hospital example -
        • -
        -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_dataSource.html b/examples/loading_XKT_dataSource.html deleted file mode 100644 index 81744e578..000000000 --- a/examples/loading_XKT_dataSource.html +++ /dev/null @@ -1,243 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Configuring a custom data source

        -

        In this example, we're using XKTLoaderPlugin to load a BIM model from the file system.

        -

        We've configured our - XKTLoaderPlugin with a custom data source strategy, through which it can load model data. Our data source simply - loads files from the file system, however your data source could instead load data from any kind of data - store.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - - - diff --git a/examples/loading_XKT_forceBackfaces.html b/examples/loading_XKT_forceBackfaces.html deleted file mode 100644 index bf10a8b4b..000000000 --- a/examples/loading_XKT_forceBackfaces.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        -

        XKTLoaderPlugin

        - -

        Loading a BIM model with backface culling disabled

        -

        In this example, we're loading a BIM model from the file system, configured to always show backfaces. This is - useful when we now that the model has inconsistent winding orders among its triangles, which can result in holes - in surfaces when backface culling is enabled.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_jitter_fullPrecision_MAP.html b/examples/loading_XKT_jitter_fullPrecision_MAP.html deleted file mode 100644 index ae6d49ed3..000000000 --- a/examples/loading_XKT_jitter_fullPrecision_MAP.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Using double-precision emulation to eliminate rounding jitter

        -

        In this example, we're loading a double-precision BIM model, which xeokit renders using double-precision - emulation. This eliminates "rounding jitter" while rendering.

        -
          -
        • Model center is [1842022, 10, -5173301]
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - - \ No newline at end of file diff --git a/examples/loading_XKT_maxGeometryBatchSize_50M.html b/examples/loading_XKT_maxGeometryBatchSize_50M.html deleted file mode 100644 index cff104b0e..000000000 --- a/examples/loading_XKT_maxGeometryBatchSize_50M.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
        - -

        XKTLoaderPlugin

        -

        Setting maxGeometryBatchSize to 50000000

        -

        This configuration determines, for all models loaded by XKTLoaderPlugin, the maximum size of batched geometry - arrays within xeokit's renderer.

        -

        A large value means faster - rendering, with less draw calls, but more more scratch memory used while loading. A small value means slower - rendering, with more draw calls, but less scratch memory used.

        -

        Generally, you would only adjust this if your device is struggling with memory while loading your model.

        -

        Stats

        -
          -
        • -
          Loading JavaScript modules...
          -
        • -
        -

        Components Used

        - -

        Resources

        - -
        - - - - diff --git a/examples/loading_glTF_BoxTextured.html b/examples/loading_glTF_BoxTextured.html deleted file mode 100644 index bd362a54a..000000000 --- a/examples/loading_glTF_BoxTextured.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Loading a simple textured glTF Model

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glTF_HousePlan.html b/examples/loading_glTF_HousePlan.html deleted file mode 100644 index 5ba4b5955..000000000 --- a/examples/loading_glTF_HousePlan.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Loading a glTF Model

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glTF_SkatePark.html b/examples/loading_glTF_SkatePark.html deleted file mode 100644 index dd0f1f205..000000000 --- a/examples/loading_glTF_SkatePark.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        CLoading a photogrammetry model.

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glTF_binary_Roadworks.html b/examples/loading_glTF_binary_Roadworks.html deleted file mode 100644 index a5084e2b5..000000000 --- a/examples/loading_glTF_binary_Roadworks.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Loading a binary glTF roadworks scan captured on iPhone 12 Pro with Scaniverse -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glTF_dataSource.html b/examples/loading_glTF_dataSource.html deleted file mode 100644 index 1060b3c97..000000000 --- a/examples/loading_glTF_dataSource.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - Configuring GLTFLoaderPlugin with a custom data source - - - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Configuring GLTFLoaderPlugin with a custom data source

        -

        Components used

        - -

        Resources

        - -
        - - - - diff --git a/examples/loading_glTF_embedded_Box.html b/examples/loading_glTF_embedded_Box.html deleted file mode 100644 index b668d5183..000000000 --- a/examples/loading_glTF_embedded_Box.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Loading a simple binary glTF model

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glb_2CylinderEngine.html b/examples/loading_glb_2CylinderEngine.html deleted file mode 100644 index 23387de70..000000000 --- a/examples/loading_glb_2CylinderEngine.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Loading a simple textured glTF Model

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glb_Box.html b/examples/loading_glb_Box.html deleted file mode 100644 index a4b34cba2..000000000 --- a/examples/loading_glb_Box.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Loading a simple binary glTF model

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glb_BoxTextured.html b/examples/loading_glb_BoxTextured.html deleted file mode 100644 index e3a176782..000000000 --- a/examples/loading_glb_BoxTextured.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Loading a textured box from binary glTF Model

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_glb_DamagedHelmet.html b/examples/loading_glb_DamagedHelmet.html deleted file mode 100644 index 68db4c8a2..000000000 --- a/examples/loading_glb_DamagedHelmet.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        GLTFLoaderPlugin

        -

        Physically-based rendering of a binary glTF test model

        -

        In this example, we're using a GLTFLoaderPlugin to load the Damaged Helmet demo model from - binary glTF (.glb).

        -

        We're also configuring our Viewer with a ReflectionMap, so that our model's shiny surfaces have something to reflect.

        -

        Components used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/loading_XKT_maxGeometryBatchSize_20K.html b/examples/measurement/XKT_dtx_Lyon.html similarity index 62% rename from examples/loading_XKT_maxGeometryBatchSize_20K.html rename to examples/measurement/XKT_dtx_Lyon.html index a9ddb2e1a..eed5f2199 100644 --- a/examples/loading_XKT_maxGeometryBatchSize_20K.html +++ b/examples/measurement/XKT_dtx_Lyon.html @@ -5,9 +5,20 @@ xeokit Example - + + + + +
        - -

        XKTLoaderPlugin

        -

        Setting maxGeometryBatchSize to 20000

        -

        This configuration determines, for all models loaded by XKTLoaderPlugin, the maximum size of batched geometry - arrays within xeokit's renderer.

        -

        A large value means faster - rendering, with less draw calls, but more more scratch memory used while loading. A small value means slower - rendering, with more draw calls, but less scratch memory used.

        -

        Generally, you would only adjust this if your device is struggling with memory while loading your model.

        +

        Logarithmic depth buffer enabled

        +

        XKT model with double-precision geometry, rendered with logarithmic buffer enabled


        Stats

        • Loading JavaScript modules...
        -

        Components Used

        +

        Components used

        Resources

        +
        + diff --git a/examples/measurements_angle_createWithMouse.html b/examples/measurement/angle_createWithMouse_edgeSnapping.html similarity index 72% rename from examples/measurements_angle_createWithMouse.html rename to examples/measurement/angle_createWithMouse_edgeSnapping.html index 6171bf46f..d6c3a8863 100644 --- a/examples/measurements_angle_createWithMouse.html +++ b/examples/measurement/angle_createWithMouse_edgeSnapping.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,23 +13,23 @@
        - +

        AngleMeasurementsPlugin

        -

        Click on the model to create angle measurements

        +

        Click on the model to create angle measurements, with snap-to-edge

        In this example, we're loading a BIM model from the file system, then creating angle measurements wherever the user clicks on the model.

        Components Used

        @@ -48,21 +48,27 @@

        Resources

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera //------------------------------------------------------------------------------------------------------------------ const viewer = new Viewer({ - canvasId: "myCanvas" + canvasId: "myCanvas", + dtxEnabled: true }); viewer.camera.eye = [-3.93, 2.85, 27.01]; viewer.camera.look = [4.40, 3.72, 8.89]; viewer.camera.up = [-0.01, 0.99, 0.039]; - viewer.cameraControl.followPointer = true; + //------------------------------------------------------------------------------------------------------------------ + // Vertex-snapping mode + //------------------------------------------------------------------------------------------------------------------ + + viewer.cameraControl.snapMode = "edge"; // Snap to nearest edge + viewer.cameraControl.snapRadius = 30; // 30 pixels snapping radius //------------------------------------------------------------------------------------------------------------------ // Load a model @@ -72,7 +78,7 @@

        Resources

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); diff --git a/examples/measurements_angle_createWithMouse_precision.html b/examples/measurement/angle_createWithMouse_vertexSnapping.html similarity index 64% rename from examples/measurements_angle_createWithMouse_precision.html rename to examples/measurement/angle_createWithMouse_vertexSnapping.html index 381f38913..88df980d6 100644 --- a/examples/measurements_angle_createWithMouse_precision.html +++ b/examples/measurement/angle_createWithMouse_vertexSnapping.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,31 +13,32 @@
        - -

        AngleMeasurementsPlugin Precision Mode

        -

        Click on the model to create full-precision angle measurements

        + +

        AngleMeasurementsPlugin

        +

        Click on the model to create angle measurements, with snap-to-vertex

        In this example, we're loading a BIM model from the file system, then creating angle measurements wherever the user clicks on the model.

        -

        The model is placed at [1842022, 10, -5173301], which gives it very large geometry coordinates that rely on - xeokit's double-precision support for accurate rendering and measurement.

        Components Used

        Resources

        @@ -47,7 +48,7 @@

        Resources

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -55,12 +56,19 @@

        Resources

        const viewer = new Viewer({ canvasId: "myCanvas", - pickSurfacePrecisionEnabled: true + dtxEnabled: true }); - viewer.scene.camera.eye = [1841982.5187600704, 19.207790938410042, -5173303.042326414]; - viewer.scene.camera.look = [1842011.793756829, 9.913817421536704, -5173299.841616623]; - viewer.scene.camera.up = [0.2991762376746394, 0.9536370664170352, 0.0327096983532173]; + viewer.camera.eye = [-3.93, 2.85, 27.01]; + viewer.camera.look = [4.40, 3.72, 8.89]; + viewer.camera.up = [-0.01, 0.99, 0.039]; + + //------------------------------------------------------------------------------------------------------------------ + // Vertex-snapping mode + //------------------------------------------------------------------------------------------------------------------ + + viewer.cameraControl.snapMode = "vertex"; // Snap to nearest vertex + viewer.cameraControl.snapRadius = 30; // 30 pixels snapping radius //------------------------------------------------------------------------------------------------------------------ // Load a model @@ -70,11 +78,8 @@

        Resources

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v7/MAP/MAP.xkt", - metaModelSrc: "../assets/models/xkt/v7/MAP/MAP.json", - edges: true, - excludeTypes: ["IfcSpace"], - objectDefaults: {} + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + edges: true }); //------------------------------------------------------------------------------------------------------------------ diff --git a/examples/measurements_angle_modelWithMeasurements.html b/examples/measurement/angle_modelWithMeasurements.html similarity index 97% rename from examples/measurements_angle_modelWithMeasurements.html rename to examples/measurement/angle_modelWithMeasurements.html index 4e6ace713..30ebeaa51 100644 --- a/examples/measurements_angle_modelWithMeasurements.html +++ b/examples/measurement/angle_modelWithMeasurements.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + + + + + +
        +

        Logarithmic depth buffer enabled

        +

        XKT model with double-precision geometry, rendered with logarithmic buffer enabled


        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + + +
        + + + + diff --git a/examples/measurements_distance_modelWithMeasurements.html b/examples/measurement/distance_modelWithMeasurements.html similarity index 98% rename from examples/measurements_distance_modelWithMeasurements.html rename to examples/measurement/distance_modelWithMeasurements.html index 93b20e79e..cc0e63657 100644 --- a/examples/measurements_distance_modelWithMeasurements.html +++ b/examples/measurement/distance_modelWithMeasurements.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / Measurement

        +
        + + + \ No newline at end of file diff --git a/examples/measurements_angle_createWithMouse_photogrammetry.html b/examples/measurements_angle_createWithMouse_photogrammetry.html deleted file mode 100644 index cabf102b1..000000000 --- a/examples/measurements_angle_createWithMouse_photogrammetry.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        AngleMeasurementsPlugin

        -

        Click on the model to create angle measurements

        -

        In this example, we're loading a photogrammetry model from the file system, then creating angle measurements wherever the - user clicks on the model.

        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/measurements_distance_createWithMouse_perf.html b/examples/measurements_distance_createWithMouse_perf.html deleted file mode 100644 index 7c9703be9..000000000 --- a/examples/measurements_distance_createWithMouse_perf.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        DistanceMeasurementPlugin

        -

        Create distance measurements by clicking on objects

        -

        In this example, we load a BIM model from the file system, then allow distance measurements to be made on the - model using the mouse.

        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/measurements_distance_createWithMouse_photogrammetry.html b/examples/measurements_distance_createWithMouse_photogrammetry.html deleted file mode 100644 index 810a92b2a..000000000 --- a/examples/measurements_distance_createWithMouse_photogrammetry.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        DistanceMeasurementPlugin

        -

        Click on the model to create distance measurements

        -

        In this example, we're loading a photogrammetry model from the file system, then creating distance measurements wherever the - user clicks on the model.

        -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/measurements_distance_createWithMouse_precision.html b/examples/measurements_distance_createWithMouse_precision.html deleted file mode 100644 index d8934e891..000000000 --- a/examples/measurements_distance_createWithMouse_precision.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
        - -

        DistanceMeasurementPlugin Precision Mode

        -

        Click on the model to create full-precision distance measurements

        -

        In this example, we're loading a BIM model from the file system, then creating distance measurements wherever the - user clicks on the model.

        -

        The model is placed at [1842022, 10, -5173301], which gives it very large geometry coordinates that rely on - xeokit's double-precision support for accurate rendering and measurement.

        - -

        Components Used

        - -

        Resources

        - -
        - - - \ No newline at end of file diff --git a/examples/gizmos_AxisGizmoPlugin.html b/examples/navigation/AxisGizmoPlugin.html similarity index 77% rename from examples/gizmos_AxisGizmoPlugin.html rename to examples/navigation/AxisGizmoPlugin.html index 65b2cc328..bc0ec0804 100644 --- a/examples/gizmos_AxisGizmoPlugin.html +++ b/examples/navigation/AxisGizmoPlugin.html @@ -5,7 +5,7 @@ xeokit Example - + - + @@ -57,7 +57,7 @@
        - +

        CameraControl

        Configuring custom element for keyboard

        In this example, we're testing CameraControl configured to listen for keyboard events on a specified DOM element, @@ -75,19 +75,19 @@

        Customize CameraControl

        Components Used

        @@ -115,7 +115,7 @@

        Resources

        buildGridGeometry, PhongMaterial, NavCubePlugin - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer, arrange the camera @@ -169,7 +169,7 @@

        Resources

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); diff --git a/examples/CameraControl_orbit_Duplex.html b/examples/navigation/CameraControl_orbit_Duplex.html similarity index 93% rename from examples/CameraControl_orbit_Duplex.html rename to examples/navigation/CameraControl_orbit_Duplex.html index 483dc13ba..cfb18d2a1 100644 --- a/examples/CameraControl_orbit_Duplex.html +++ b/examples/navigation/CameraControl_orbit_Duplex.html @@ -5,10 +5,10 @@ xeokit Example - + - + - + @@ -57,7 +57,7 @@
        - +

        CameraControl

        Orbit mode with small canvas

        In this example, we're testing CameraControl input handling for a small canvas.

        @@ -72,19 +72,19 @@

        Customize CameraControl

        Components Used

        @@ -112,7 +112,7 @@

        Resources

        buildGridGeometry, PhongMaterial, NavCubePlugin - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer, arrange the camera @@ -162,7 +162,7 @@

        Resources

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); diff --git a/examples/CameraControl_orbit_Duplex_tallCanvas.html b/examples/navigation/CameraControl_orbit_Duplex_tallCanvas.html similarity index 93% rename from examples/CameraControl_orbit_Duplex_tallCanvas.html rename to examples/navigation/CameraControl_orbit_Duplex_tallCanvas.html index b6050ac7d..a911fe578 100644 --- a/examples/CameraControl_orbit_Duplex_tallCanvas.html +++ b/examples/navigation/CameraControl_orbit_Duplex_tallCanvas.html @@ -5,7 +5,7 @@ xeokit Example - + - + @@ -57,7 +57,7 @@
        - +

        CameraControl

        Orbit mode with tall canvas

        In this example, we're testing CameraControl input handling for a tall canvas.

        @@ -72,19 +72,19 @@

        Customize CameraControl

        Components Used

        @@ -112,7 +112,7 @@

        Resources

        buildGridGeometry, PhongMaterial, NavCubePlugin - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer, arrange the camera @@ -162,7 +162,7 @@

        Resources

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); diff --git a/examples/CameraControl_orbit_HolterTower.html b/examples/navigation/CameraControl_orbit_HolterTower.html similarity index 94% rename from examples/CameraControl_orbit_HolterTower.html rename to examples/navigation/CameraControl_orbit_HolterTower.html index 00da26dfb..c7c154f62 100644 --- a/examples/CameraControl_orbit_HolterTower.html +++ b/examples/navigation/CameraControl_orbit_HolterTower.html @@ -5,10 +5,10 @@ xeokit Example - + - + @@ -16,7 +16,7 @@
        - +

        CameraControl

        Orbit mode

        In this example, we're loading a BIM model from the file system, then navigating using an orbiting @@ -32,15 +32,15 @@

        Customize

        Components Used

        @@ -67,7 +67,7 @@

        Resources

        VBOGeometry, buildGridGeometry, PhongMaterial - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer, arrange the camera @@ -114,7 +114,7 @@

        Resources

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v8/ifc/HolterTower.ifc.xkt", + src: "../../assets/models/xkt/v8/ifc/HolterTower.ifc.xkt", edges: true }); diff --git a/examples/CameraControl_orbit_Lyon.html b/examples/navigation/CameraControl_orbit_Lyon.html similarity index 91% rename from examples/CameraControl_orbit_Lyon.html rename to examples/navigation/CameraControl_orbit_Lyon.html index 41aa5fcd3..dfbd1e885 100644 --- a/examples/CameraControl_orbit_Lyon.html +++ b/examples/navigation/CameraControl_orbit_Lyon.html @@ -5,10 +5,10 @@ xeokit Example - + - + + + + + + + +
        +
        + +

        XML3DLoaderPlugin

        +

        Tree view with 3DXML model

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components Used

        + +

        Resources

        + +
        + + + + + diff --git a/examples/TreeViewPlugin_Containment_MultipleModels.html b/examples/navigation/TreeViewPlugin_Containment_Federated.html similarity index 89% rename from examples/TreeViewPlugin_Containment_MultipleModels.html rename to examples/navigation/TreeViewPlugin_Containment_Federated.html index 276741ca0..a609f7df6 100644 --- a/examples/TreeViewPlugin_Containment_MultipleModels.html +++ b/examples/navigation/TreeViewPlugin_Containment_Federated.html @@ -5,7 +5,7 @@ xeokit Example - + - - - @@ -208,11 +185,11 @@
        - -

        XKTLoaderPlugin

        -

        Loading a double-precision BIM Model from the file system

        -

        Geometry in this IFC model is placed at [1842022, 10, -5173301], which causes its coordinates to have - large values that rely on xeokit's double-precision precision support.

        + +

        TreeViewPlugin

        +

        IFC Types Hierarchy

        +

        In this example, we're loading two copies of the same BIM model, while showing the IFC types hierarchy of + both models in a tree view.

        Stats

        + diff --git a/examples/TreeViewPlugin_options_rootName.html b/examples/navigation/TreeViewPlugin_options_rootName.html similarity index 93% rename from examples/TreeViewPlugin_options_rootName.html rename to examples/navigation/TreeViewPlugin_options_rootName.html index 19d0748f7..b5f7ecf0b 100644 --- a/examples/TreeViewPlugin_options_rootName.html +++ b/examples/navigation/TreeViewPlugin_options_rootName.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / Navigating Models

        +
        + + + \ No newline at end of file diff --git a/examples/localization_NavCubePlugin.html b/examples/navigation/localization_NavCubePlugin.html similarity index 87% rename from examples/localization_NavCubePlugin.html rename to examples/navigation/localization_NavCubePlugin.html index 897db75b2..17c82cadd 100644 --- a/examples/localization_NavCubePlugin.html +++ b/examples/navigation/localization_NavCubePlugin.html @@ -5,10 +5,10 @@ xeokit Example - + - - + + + + + + +
        +
        +
        + +
        +

        xeokit / Examples / Performance

        +
        + + + \ No newline at end of file diff --git a/examples/performance/lodCulling_HolterTower.html b/examples/performance/lodCulling_HolterTower.html new file mode 100644 index 000000000..07fa348c8 --- /dev/null +++ b/examples/performance/lodCulling_HolterTower.html @@ -0,0 +1,121 @@ + + + + + + + xeokit Example + + + + + + + + + + +
        +

        Level-of-Detail Culling

        +

        Culling objects to maintain constant FPS

        +

        Stats

        +
          +
        • +
          Loading JavaScript modules...
          +
        • +
        +

        Components used

        + +

        Resources

        + +
        + + + + diff --git a/examples/techniques_findComplexEntities.html b/examples/performance/techniques_findComplexEntities.html similarity index 92% rename from examples/techniques_findComplexEntities.html rename to examples/performance/techniques_findComplexEntities.html index cd4ae2bd9..97320a099 100644 --- a/examples/techniques_findComplexEntities.html +++ b/examples/performance/techniques_findComplexEntities.html @@ -5,17 +5,17 @@ xeokit Example - + - - + +
        - +

        Find Complex Entities

        An experimental function to find entities that could be hidden while

        Entities are red when they are above a certain complexity and/or below a certain size.


        @@ -30,11 +30,11 @@

        Customize

        Components Used

        @@ -54,7 +54,7 @@

        Resources

        // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin, math} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin, math} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer, arrange the camera, tweak highlight color to red, enable SAO @@ -62,7 +62,8 @@

        Resources

        const viewer = new Viewer({ canvasId: "myCanvas", - transparent: true + transparent: true, + dtxEnabled: true }); viewer.camera.eye = [-2.56, 8.38, 8.27]; @@ -93,7 +94,7 @@

        Resources

        const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v8/ifc/Schependomlaan.ifc.xkt", + src: "../../assets/models/xkt/v8/ifc/Schependomlaan.ifc.xkt", edges: true }); diff --git a/examples/techniques_nonInteractiveQuality.html b/examples/performance/techniques_nonInteractiveQuality.html similarity index 90% rename from examples/techniques_nonInteractiveQuality.html rename to examples/performance/techniques_nonInteractiveQuality.html index 2e5cd54ad..7ac5e8d87 100644 --- a/examples/techniques_nonInteractiveQuality.html +++ b/examples/performance/techniques_nonInteractiveQuality.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,7 +13,7 @@
        - +

        Performance optimization

        Only enable SAO and edges while camera is not moving

        @@ -22,11 +22,11 @@

        Only enable SAO and edges while camera is not moving

        Loading JavaScript modules...
      • - Viewer
      • - XKTLoaderPlugin
      • @@ -45,7 +45,7 @@

        Only enable SAO and edges while camera is not moving

        Only enable SAO and edges while camera is not moving

43AZYJR1~p? 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 - - - - - - xeokit Example - - - - - - - - -

+ + + + + + xeokit Example + + + + + + + + + + +
+

View Frustum Culling

+

View frustum culling objects to improve

+

Stats

+
    +
  • +
    Loading JavaScript modules...
    +
  • +
+

Components used

+ +

Resources

+ +
+ + + + diff --git a/examples/performance_ViewCullPlugin.html b/examples/performance_ViewCullPlugin.html deleted file mode 100644 index e6f8a2cca..000000000 --- a/examples/performance_ViewCullPlugin.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

ViewCullPlugin

-

Makes interaction smoother

-

ViewCullPlugin makes interaction smoother by disabling rendering for objects that fall outside our field of - view.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Components Used

- -
- - - - diff --git a/examples/picking/doubleClick_entity.html b/examples/picking/doubleClick_entity.html new file mode 100644 index 000000000..88f759529 --- /dev/null +++ b/examples/picking/doubleClick_entity.html @@ -0,0 +1,61 @@ + + + + + + + xeokit Example + + + + + + + +
+

Picking Objects

+

Double-click objects to pick them

+

In this example, we highlight and view-fit each object we double-click.

+

Components Used

+ +
+ + + \ No newline at end of file diff --git a/examples/picking_canvas_mesh_colorize.html b/examples/picking/hover_entity.html similarity index 53% rename from examples/picking_canvas_mesh_colorize.html rename to examples/picking/hover_entity.html index 6d2e082fe..bc3a5f5d9 100644 --- a/examples/picking_canvas_mesh_colorize.html +++ b/examples/picking/hover_entity.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -14,15 +14,15 @@

Picking Objects

-

Hover objects to colorize them

+

Click objects to pick them

Components Used

@@ -30,15 +30,7 @@

Components Used

+ + + + + + + +
+
+
+ +
+

xeokit / Examples / Picking

+
+ + + \ No newline at end of file diff --git a/examples/picking/pick_canvas_entity.html b/examples/picking/pick_canvas_entity.html new file mode 100644 index 000000000..248aacdac --- /dev/null +++ b/examples/picking/pick_canvas_entity.html @@ -0,0 +1,86 @@ + + + + + + + xeokit Example + + + + + + + +
+

Picking Surfaces

+

Hover over objects to ray-pick them

+

Components Used

+ +
+ + + \ No newline at end of file diff --git a/examples/picking_canvas_surface.html b/examples/picking/pick_canvas_surface.html similarity index 91% rename from examples/picking_canvas_surface.html rename to examples/picking/pick_canvas_surface.html index ec4ba5ec4..808bd9912 100644 --- a/examples/picking_canvas_surface.html +++ b/examples/picking/pick_canvas_surface.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -18,11 +18,11 @@

Hover over objects to ray-pick them

Components Used

@@ -43,7 +43,7 @@

Components Used

buildSphereGeometry, PhongMaterial, math - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -64,7 +64,7 @@

Components Used

const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects edges: true }); //------------------------------------------------------------------------------------------------------------------ diff --git a/examples/picking_ray_mesh.html b/examples/picking/pick_ray_entity.html similarity index 92% rename from examples/picking_ray_mesh.html rename to examples/picking/pick_ray_entity.html index fc2ec6463..c3bc032dc 100644 --- a/examples/picking_ray_mesh.html +++ b/examples/picking/pick_ray_entity.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -17,11 +17,11 @@

Picking Surfaces

Picking object surfaces using an arbitrarily-positioned ray

@@ -40,7 +40,7 @@

Picking object surfaces using an arbitrarily-positioned ray

ReadableGeometry, buildSphereGeometry, XKTLoaderPlugin - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and tilt the camera @@ -62,7 +62,7 @@

Picking object surfaces using an arbitrarily-positioned ray

const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects edges: true }); diff --git a/examples/picking_ray_matrix.html b/examples/picking/pick_ray_matrix.html similarity index 94% rename from examples/picking_ray_matrix.html rename to examples/picking/pick_ray_matrix.html index 84d1bb063..606a2c7f6 100644 --- a/examples/picking_ray_matrix.html +++ b/examples/picking/pick_ray_matrix.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -17,11 +17,11 @@

Picking Surfaces

Surface picking with a ray implicitly represented by a 4x4 matrix

@@ -41,7 +41,7 @@

Surface picking with a ray implicitly represented by a 4x4 matrix

PhongMaterial, ReadableGeometry, math - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and tilt the camera @@ -63,7 +63,7 @@

Surface picking with a ray implicitly represented by a 4x4 matrix

const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", // Creates a MetaObject instances in scene.metaScene.metaObjects edges: true }); diff --git a/examples/picking_ray_surface.html b/examples/picking/pick_ray_surface.html similarity index 94% rename from examples/picking_ray_surface.html rename to examples/picking/pick_ray_surface.html index 9dd2b97e8..6221400b8 100644 --- a/examples/picking_ray_surface.html +++ b/examples/picking/pick_ray_surface.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -16,11 +16,11 @@

Surface Picking with a Ray

@@ -39,7 +39,7 @@

Surface Picking with a Ray

buildSphereGeometry, PhongMaterial, ReadableGeometry - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and tilt the camera @@ -61,7 +61,7 @@

Surface Picking with a Ray

const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true }); diff --git a/examples/picking_setObjectsPickable.html b/examples/picking/pick_setObjectsPickable.html similarity index 90% rename from examples/picking_setObjectsPickable.html rename to examples/picking/pick_setObjectsPickable.html index fe6c3c8e3..5ab1482b2 100644 --- a/examples/picking_setObjectsPickable.html +++ b/examples/picking/pick_setObjectsPickable.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -20,11 +20,11 @@

Controlling which objects are pickable



@@ -35,7 +35,7 @@

Controlling which objects are pickable

// Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer, arrange the camera @@ -58,7 +58,7 @@

Controlling which objects are pickable

const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", + src: "../../assets/models/xkt/v10/glTF-Embedded/Duplex_A_20110505.glTFEmbedded.xkt", edges: true, pickable: false }); diff --git a/examples/picking_canvas_surface_precision.html b/examples/picking/picking_canvas_surface_precision.html similarity index 93% rename from examples/picking_canvas_surface_precision.html rename to examples/picking/picking_canvas_surface_precision.html index b67de0a0d..b345a012c 100644 --- a/examples/picking_canvas_surface_precision.html +++ b/examples/picking/picking_canvas_surface_precision.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -18,11 +18,11 @@

Hover over objects to ray-pick them using the 'pickSurfacePrecision' option<

Components Used

@@ -43,7 +43,7 @@

Components Used

buildSphereGeometry, PhongMaterial, math, FastNavPlugin - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -66,7 +66,7 @@

Components Used

const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v8/OTCConferenceCenter.xkt", + src: "../../assets/models/xkt/v8/OTCConferenceCenter.xkt", edges: false }); //------------------------------------------------------------------------------------------------------------------ diff --git a/examples/picking_pickSurfacePrecision_VBOSceneModel_batching.html b/examples/picking/picking_pickSurfacePrecision_VBOSceneModel_batching.html similarity index 94% rename from examples/picking_pickSurfacePrecision_VBOSceneModel_batching.html rename to examples/picking/picking_pickSurfacePrecision_VBOSceneModel_batching.html index 9a0135e9b..b61aad16b 100644 --- a/examples/picking_pickSurfacePrecision_VBOSceneModel_batching.html +++ b/examples/picking/picking_pickSurfacePrecision_VBOSceneModel_batching.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,18 +13,18 @@
- -

Picking VBOSceneModel Surfaces with Full Precision

+ +

Picking SceneModel Surfaces with Full Precision

Hover over objects to ray-pick them using the 'pickSurfacePrecision' option

Components Used

@@ -38,14 +38,14 @@

Components Used

import { Viewer, - VBOSceneModel, + SceneModel, Node, Mesh, VBOGeometry, PhongMaterial, math, buildSphereGeometry - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -65,12 +65,12 @@

Components Used

viewer.cameraControl.smartPivot = true; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching + // Create a SceneModel representing a table with four legs, using geometry batching //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const vboSceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], @@ -263,7 +263,7 @@

Components Used

}); //------------------------------------------------------------ - // Finalize the VBOSceneModel. + // Finalize the SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction within it. diff --git a/examples/picking_pickSurfacePrecision_VBOSceneModel_instancing.html b/examples/picking/picking_pickSurfacePrecision_VBOSceneModel_instancing.html similarity index 92% rename from examples/picking_pickSurfacePrecision_VBOSceneModel_instancing.html rename to examples/picking/picking_pickSurfacePrecision_VBOSceneModel_instancing.html index 87d5c545b..fe10610dd 100644 --- a/examples/picking_pickSurfacePrecision_VBOSceneModel_instancing.html +++ b/examples/picking/picking_pickSurfacePrecision_VBOSceneModel_instancing.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,18 +13,18 @@
- -

Picking VBOSceneModel Surfaces with Full Precision

+ +

Picking SceneModel Surfaces with Full Precision

Hover over objects to ray-pick them using the 'pickSurfacePrecision' option

Components Used

@@ -38,14 +38,14 @@

Components Used

import { Viewer, - VBOSceneModel, + SceneModel, Node, Mesh, VBOGeometry, PhongMaterial, math, buildSphereGeometry - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -65,16 +65,16 @@

Components Used

viewer.cameraControl.smartPivot = true; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching + // Create a SceneModel representing a table with four legs, using geometry batching //------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------ - // Build a VBOSceneModel representing a table with four legs, using geometry instancing + // Build a SceneModel representing a table with four legs, using geometry instancing //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const vboSceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], @@ -82,7 +82,7 @@

Components Used

}); //-------------------------------------------------------- - // Create a reusable geometry within the VBOSceneModel + // Create a reusable geometry within the SceneModel // We'll instance this geometry by five meshes //-------------------------------------------------------- @@ -227,7 +227,7 @@

Components Used

}); //-------------------------------------------------------- - // Finalize this VBOSceneModel. + // Finalize this SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction. diff --git a/examples/picking_surface_canvas_precision.html b/examples/picking/picking_surface_canvas_precision.html similarity index 97% rename from examples/picking_surface_canvas_precision.html rename to examples/picking/picking_surface_canvas_precision.html index 69fd54490..553a23778 100644 --- a/examples/picking_surface_canvas_precision.html +++ b/examples/picking/picking_surface_canvas_precision.html @@ -5,7 +5,7 @@ xeokit Example - + - - - - - -
- -
-

SAO

-

Scalable Ambient Obscurance

-

SAO is a visual effect that darkens the crevices in models, to emphasis geometric details.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Customize SAO

-
-

Components Used

- -

Resources

- -
- - - - diff --git a/examples/postEffects_SAO_Schependomlaan.html b/examples/postEffects_SAO_Schependomlaan.html deleted file mode 100644 index e5dd84ad6..000000000 --- a/examples/postEffects_SAO_Schependomlaan.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
- -
-

SAO

-

Scalable Ambient Obscurance

-

SAO is a visual effect that darkens the crevices in models, to emphasis geometric details.

-

Stats

-
    -
  • -
    Loading JavaScript modules...
    -
  • -
-

Customize SAO

-
-

Components Used

- -

Resources

- -
- - - diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_PBR.html b/examples/sceneRepresentation_VBOSceneModel_batching_PBR.html deleted file mode 100644 index d800c8f8f..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_PBR.html +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry batching and physically-based rendering

-

In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same time providing a separate geometry for each object, and using VBOSceneModel's additional metallic - and roughness - properties for physically-based rendering (PBR).

-

PBR shades objects using a physically-correct shading model, for more realism.

-

Components Used

- -
- - - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_SAO.html b/examples/sceneRepresentation_VBOSceneModel_batching_SAO.html deleted file mode 100644 index 921aa2eff..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_SAO.html +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
- -

VBOSceneModel

-

Geometry batching and SAO

-

In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same providing a separate geometry for each object, and rendering with scalable ambient obscurance - (SAO).

-

SAO emphasises detail by darkening crevices.

-

Customize SAO

-
-

Components Used

- -
- - - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_annotations.html b/examples/sceneRepresentation_VBOSceneModel_batching_annotations.html deleted file mode 100644 index 79ca3b2cd..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_annotations.html +++ /dev/null @@ -1,521 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
- -

VBOSceneModel

-

Batched geometries with annotations

-

In this example, we're programmatically building a simple scene using xeokit's VBOSceneModel component, - attaching some annotations, while also using a separate geometry for each object.

-

Components Used

- -
- - - - diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_autoNormals.html b/examples/sceneRepresentation_VBOSceneModel_batching_autoNormals.html deleted file mode 100644 index 68805f77b..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_autoNormals.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry batching with auto-generated normals

-

In this example, we're programmatically building a simple model from xeokit's scene graph components, while - providing separate geometry for each object.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_lines.html b/examples/sceneRepresentation_VBOSceneModel_batching_lines.html deleted file mode 100644 index ec1a1ea49..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_lines.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
- -

VBOSceneModel

-

Line primitives

-

In this example, we're programmatically building a simple scne using xeokit's VBOSceneModel component, while - demonstrating the "lines" geometry primitive, and while also using a separate geometry for each object.

-

Customize lines

-
-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_points.html b/examples/sceneRepresentation_VBOSceneModel_batching_points.html deleted file mode 100644 index c51afbd56..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_points.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
- -

VBOSceneModel

-

Point clouds

-

In this example, we're programmatically building a simple scne using xeokit's VBOSceneModel component, while - demonstrating the "points" geometry primitive, while also using a separate geometry for each object.

-

Customize points

-
-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_textures.html b/examples/sceneRepresentation_VBOSceneModel_batching_textures.html deleted file mode 100644 index 003845de7..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_textures.html +++ /dev/null @@ -1,371 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry batching with textures

-

In this example, we're programmatically building a simple model with a color texture from xeokit's scene graph components, while - providing separate geometry for each object.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_textures_ktx2.html b/examples/sceneRepresentation_VBOSceneModel_batching_textures_ktx2.html deleted file mode 100644 index 6259e2533..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_textures_ktx2.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry batching with compressed textures

-

This example demonstrates how to programmatically build a simple VBOSceneModel - containing textures loaded from KTX2 files.

-

To support KTX2 files, we configure our VBOSceneModel with - a - KTX2TextureTranscoder, which it uses to transcode the files into a compressed - format for the user's GPU.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_textures_pbr.html b/examples/sceneRepresentation_VBOSceneModel_batching_textures_pbr.html deleted file mode 100644 index 594a34531..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_textures_pbr.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry batching with textures

-

In this example, we're programmatically building a simple model with a color texture from xeokit's scene graph - components, while - providing separate geometry for each object.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_transform.html b/examples/sceneRepresentation_VBOSceneModel_batching_transform.html deleted file mode 100644 index 5ac789a2b..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_batching_transform.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry batching and transforms

-

In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, using - a transform hierarchy and a separate geometry for each object.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing.html b/examples/sceneRepresentation_VBOSceneModel_instancing.html deleted file mode 100644 index ba174d14d..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

VBOSceneModel with geometry reuse

-

- VBOSceneModel is a WebGL2-based SceneModel implementation that stores model geometry as vertex buffer objects (VBOs) on - the GPU and renders them using a combination of geometry instancing and batching. -

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing2_SAO.html b/examples/sceneRepresentation_VBOSceneModel_instancing2_SAO.html deleted file mode 100644 index bd508c36b..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing2_SAO.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
-

VBOSceneModel with Geometry Instancing and SAO

-
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_PBR.html b/examples/sceneRepresentation_VBOSceneModel_instancing_PBR.html deleted file mode 100644 index ffc565152..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_PBR.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry reuse and physically-based rendering

-

In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same time reusing the same geometry for each object, and using VBOSceneModel's additional metallic and - roughness - properties for physically-based rendering (PBR).

-

Reusing geometry speeds up rendering and reduces the memory footprint.

-

PBR shades objects using a physically-correct shading model, for more realism.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_PBR_spheres.html b/examples/sceneRepresentation_VBOSceneModel_instancing_PBR_spheres.html deleted file mode 100644 index e3f1ec806..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_PBR_spheres.html +++ /dev/null @@ -1,214 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry reuse and physically-based rendering

-

In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same time reusing the same geometry for each object, and using VBOSceneModel's additional metallic and - roughness - properties for physically-based rendering (PBR).

-

Reusing geometry speeds up rendering and reduces the memory footprint.

-

PBR shades objects using a physically-correct shading model, for more realism.

-

Components Used

- -
- - - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_lines.html b/examples/sceneRepresentation_VBOSceneModel_instancing_lines.html deleted file mode 100644 index d7fada265..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_lines.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - -
- -

VBOSceneModel

-

VBOSceneModel with lines primitives

-

In this example, we're building a simple model using xeokit's VBOSceneModel component, to - demonstrate geometry instancing and the "lines" geometry primitive.

-

Reusing geometry speeds up rendering and reduces the memory footprint.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_origin.html b/examples/sceneRepresentation_VBOSceneModel_instancing_origin.html deleted file mode 100644 index 982c7e8df..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_origin.html +++ /dev/null @@ -1,270 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry reuse and RTC coordinates

-

In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same time reusing the same geometry for each object, and providing geometry vertex positions as - relative-to-center (RTC) coordinates.

-

Reusing geometry speeds up rendering and reduces the memory footprint.

-

RTC coordinates are xeokit's mechanism for full-precision emulation.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_origin_SAO.html b/examples/sceneRepresentation_VBOSceneModel_instancing_origin_SAO.html deleted file mode 100644 index 2128ed4e9..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_origin_SAO.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry reuse, RTC and SAO

-

In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same time reusing the same geometry for each object, providing geometry vertex positions as - relative-to-center (RTC) coordinates, and rendering with scalable ambient obscurance (SAO).

-

Reusing geometry speeds up rendering and reduces the memory footprint.

-

RTC coordinates are xeokit's mechanism for full-precision emulation.

-

SAO emphasises detail by darkening crevices.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_points.html b/examples/sceneRepresentation_VBOSceneModel_instancing_points.html deleted file mode 100644 index 652486077..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_points.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - - - -
- -

VBOSceneModel

-

Instanced point clouds

-

In this example, we're programmatically building a simple scne using xeokit's VBOSceneModel component, while - demonstrating the "points" geometry primitive, and also using an instanced geometry for each object.

-

Reusing geometry speeds up rendering and reduces the memory footprint.

-

Customize points

-
-

Components Used

- -
- - - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_textures.html b/examples/sceneRepresentation_VBOSceneModel_instancing_textures.html deleted file mode 100644 index 8d4bf37ee..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_textures.html +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

VBOSceneModel with geometry reuse and textures

-

In this example, we're programmatically building a simple model, while - reusing the same geometry for each object. Each object also shares the same texture set, which contains a color texture.

-

Reusing geometry speeds up rendering and reduces the memory footprint.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_textures_pbr.html b/examples/sceneRepresentation_VBOSceneModel_instancing_textures_pbr.html deleted file mode 100644 index ec89eb598..000000000 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_textures_pbr.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
- -

VBOSceneModel

-

Geometry batching with textures

-

In this example, we're programmatically building a simple model with a color texture from xeokit's scene graph - components, while - providing separate geometry for each object.

-

Components Used

- -
- - - - \ No newline at end of file diff --git a/examples/ImagePlane_groundPlane.html b/examples/scenegraph/ImagePlane_groundPlane.html similarity index 85% rename from examples/ImagePlane_groundPlane.html rename to examples/scenegraph/ImagePlane_groundPlane.html index d1e893cb4..a67d6ab37 100644 --- a/examples/ImagePlane_groundPlane.html +++ b/examples/scenegraph/ImagePlane_groundPlane.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -18,22 +18,22 @@

Ground Plane using a Google Maps Satellite Image

Components used

Resources

  • - Satellite image from Google Maps + Satellite image from Google Maps
  • Resources @@ -19,22 +19,22 @@

    ImagePlane - Ground Plane using a Google Maps Satellite Image - Narrow Versi

    Components used

    Resources

    • - Satellite image from Google Maps + Satellite image from Google Maps
    • Resources @@ -19,22 +19,22 @@

      ImagePlane - Ground Plane using a Google Maps Satellite Image - Wide Version

      Components used

      Resources

      • - Satellite image from Google Maps + Satellite image from Google Maps
      • Resources - +
        - +

        ImagePlane

        Embedding a 2D plan view in a section plane

        In this example, we're loading a BIM model and slicing it with a section plane, while embedding a 2D plan view @@ -26,19 +26,19 @@

        Customize

        @@ -46,7 +46,7 @@

        Resources

        • Plan view image + href="../../assets/images/schependomlaanPlanView.png">Plan view image
        • Resources // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, XKTLoaderPlugin, SectionPlanesPlugin, ImagePlane} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, XKTLoaderPlugin, SectionPlanesPlugin, ImagePlane} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer @@ -106,7 +106,7 @@

          Resources

          const sceneModel = xktLoader.load({ id: "myModel", - src: "../assets/models/xkt/v8/ifc/Schependomlaan.ifc.xkt", + src: "../../assets/models/xkt/v8/ifc/Schependomlaan.ifc.xkt", edges: true, saoEnabled: true }); @@ -126,7 +126,7 @@

          Resources

          //------------------------------------------------------------------------------------------------------------------ const imagePlane = new ImagePlane(viewer.scene, { - src: "../assets/images/schependomlaanPlanView.png", + src: "../../assets/images/schependomlaanPlanView.png", visible: true, gridVisible: true, size: 23.95, diff --git a/examples/LineSet_grid.html b/examples/scenegraph/LineSet_grid.html similarity index 81% rename from examples/LineSet_grid.html rename to examples/scenegraph/LineSet_grid.html index e94fedefa..7dff46b94 100644 --- a/examples/LineSet_grid.html +++ b/examples/scenegraph/LineSet_grid.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
          +
          +
          + +
          +

          xeokit / Examples / Scene Graph

          +
          + + + \ No newline at end of file diff --git a/examples/sceneRepresentation_lightingTest_viewDirLights.html b/examples/scenegraph/lightingTest_viewDirLights.html similarity index 94% rename from examples/sceneRepresentation_lightingTest_viewDirLights.html rename to examples/scenegraph/lightingTest_viewDirLights.html index 78b556415..433fbf114 100644 --- a/examples/sceneRepresentation_lightingTest_viewDirLights.html +++ b/examples/scenegraph/lightingTest_viewDirLights.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + + + +
          +
          + +

          SceneModel

          +

          Attaching metadata

          +

          In this example, we're programmatically building a simple model using xeokit's SceneModel + component, then attaching metadata to the model, which we use to build the tree view UI on the left.

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/scenemodel/SceneModel_metadata_federated_TreeViewPlugin.html b/examples/scenemodel/SceneModel_metadata_federated_TreeViewPlugin.html new file mode 100644 index 000000000..b7c62d390 --- /dev/null +++ b/examples/scenemodel/SceneModel_metadata_federated_TreeViewPlugin.html @@ -0,0 +1,449 @@ + + + + + + + xeokit Example + + + + + + + + + + +
          +
          + +

          Loading federated models using SceneModel and MetaModel

          +

          In this example, we're programmatically building a simple federated model using two SceneModels and + two MetaModels.

          +

          One SceneModel contains an object for the table's top, while the other SceneModel contains four objects for the table's legs.

          +

          One MetaModel contains MetaObjects for the table and the table top. The second MetaModel contains MetaObjects for the table, the table top, and each of the table legs.

          +

          When we create these two MetaModels, they will automatically re-use the same MetaObject instances for the table and the table top.

          + +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/scenemodel/SceneModel_pbr_batching_uncomp_tris.html b/examples/scenemodel/SceneModel_pbr_batching_uncomp_tris.html new file mode 100644 index 000000000..52621976b --- /dev/null +++ b/examples/scenemodel/SceneModel_pbr_batching_uncomp_tris.html @@ -0,0 +1,217 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Non-realistic rendering, no geometry reuse, triangle primitives

          +

          + SceneModel is a WebGL2-based SceneModel implementation that stores model geometry as data textures on the GPU. +

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_geometries.html b/examples/scenemodel/SceneModel_vbo_instancing_geometries.html similarity index 78% rename from examples/sceneRepresentation_VBOSceneModel_instancing_geometries.html rename to examples/scenemodel/SceneModel_vbo_instancing_geometries.html index 6f5c2e3b0..473a9757f 100644 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_geometries.html +++ b/examples/scenemodel/SceneModel_vbo_instancing_geometries.html @@ -5,9 +5,9 @@ xeokit Example - + - + @@ -15,49 +15,49 @@
          - -

          VBOSceneModel

          -

          VBOSceneModel with various instanced geometries

          -

          In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while + +

          SceneModel

          +

          SceneModel with various instanced geometries

          +

          In this example, we're programmatically building a simple model using xeokit's SceneModel component, while demonstrating the various types of geometry primitive that are available, using an instanced geometry for each object.

          Reusing geometry speeds up rendering and reduces the memory footprint.

          Components Used

          @@ -72,7 +72,7 @@

          Components Used

          import { Viewer, - VBOSceneModel, + SceneModel, buildSphereGeometry, buildBoxGeometry, buildCylinderGeometry, @@ -80,7 +80,7 @@

          Components Used

          buildBoxLinesGeometry, buildGridGeometry, buildVectorTextGeometry - } from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + } from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -107,10 +107,10 @@

          Components Used

          viewer.scene.linesMaterial.lineWidth = 1; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel containing an assortment of the available geometry primitive types + // Create a SceneModel containing an assortment of the available geometry primitive types //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "myGeometries" }); @@ -122,7 +122,7 @@

          Components Used

          zSize: 1 }); - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "boxGeometry", primitive: "triangles", positions: box.positions, @@ -130,7 +130,7 @@

          Components Used

          indices: box.indices }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "boxMesh", geometryId: "boxGeometry", position: [0, 0, 0], @@ -145,14 +145,14 @@

          Components Used

          zSize: 1 }); - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "boxLinesGeometry", primitive: "lines", positions: boxLines.positions, indices: boxLines.indices }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "boxLinesMesh", geometryId: "boxLinesGeometry", position: [3, 0, 0], @@ -168,7 +168,7 @@

          Components Used

          widthSegments: 60 }); - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "sphereGeometry", primitive: "triangles", positions: sphere.positions, @@ -176,7 +176,7 @@

          Components Used

          indices: sphere.indices }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "sphereMesh", geometryId: "sphereGeometry", position: [7, 0, 0], @@ -194,7 +194,7 @@

          Components Used

          arc: Math.PI * 2.0 }); - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "torusGeometry", primitive: "triangles", positions: torus.positions, @@ -202,7 +202,7 @@

          Components Used

          indices: torus.indices }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "torusMesh", geometryId: "torusGeometry", position: [11, 0, 0], @@ -221,7 +221,7 @@

          Components Used

          openEnded: false }); - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "cylinderGeometry", primitive: "triangles", positions: cylinder.positions, @@ -229,7 +229,7 @@

          Components Used

          indices: cylinder.indices }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "cylinderMesh", geometryId: "cylinderGeometry", position: [16, 0, 0], @@ -243,14 +243,14 @@

          Components Used

          divisions: 10 }); - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "gridGeometry", primitive: "lines", positions: grid.positions, indices: grid.indices }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "gridMesh", geometryId: "gridGeometry", position: [25, 0, 0], @@ -261,17 +261,17 @@

          Components Used

          const text = buildVectorTextGeometry({ origin: [0, 0, 0], - text: "An assortment of geometry\nprogrammatically generated\nwithin a VBOSceneModel", + text: "An assortment of geometry\nprogrammatically generated\nwithin a SceneModel", }); - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "textGeometry", primitive: "lines", positions: text.positions, indices: text.indices }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "textMesh", geometryId: "textGeometry", position: [0, 7.5, 0], @@ -310,14 +310,14 @@

          Components Used

          i++; } - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "pointsGeometry", primitive: "points", positions: positions, colors: colors }); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "pointsMesh", geometryId: "pointsGeometry", position: [-7, 0, 0], @@ -327,12 +327,12 @@

          Components Used

          // One entity contains all our meshes - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "geometries", meshIds: ["boxMesh", "boxLinesMesh", "sphereMesh", "torusMesh", "cylinderMesh", "gridMesh", "textMesh", "pointsMesh"] }); - vboSceneModel.finalize(); + sceneModel.finalize(); \ No newline at end of file diff --git a/examples/scenemodel/benchmark_dtx_batching_autocompressed_triangles.html b/examples/scenemodel/benchmark_dtx_batching_autocompressed_triangles.html new file mode 100644 index 000000000..7e16341a2 --- /dev/null +++ b/examples/scenemodel/benchmark_dtx_batching_autocompressed_triangles.html @@ -0,0 +1,241 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Geometry batching benchmark

          +

          In this example, we're building a large model using xeokit's SceneModel component and no geometry + reuse.

          +
            +
          • +
            Geometry batching benchmark
            generating 373494 objects, please wait...
            +
          • +
          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_benchmark.html b/examples/scenemodel/benchmark_dtx_instancing_autocompressed_triangles.html similarity index 83% rename from examples/sceneRepresentation_VBOSceneModel_instancing_benchmark.html rename to examples/scenemodel/benchmark_dtx_instancing_autocompressed_triangles.html index f73c086ed..8ab4457d8 100644 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_benchmark.html +++ b/examples/scenemodel/benchmark_dtx_instancing_autocompressed_triangles.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,10 +13,10 @@
          - -

          VBOSceneModel

          + +

          SceneModel

          Geometry instancing benchmark

          -

          In this example, we're building a large model using xeokit's VBOSceneModel component and geometry instancing.

          +

          In this example, we're building a large model using xeokit's SceneModel component and geometry instancing.

          Reusing geometry speeds up rendering and reduces the memory footprint.

          @@ -43,7 +43,7 @@

          Components Used

          // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer,VBOSceneModel,buildBoxGeometry} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel, buildBoxGeometry} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -51,7 +51,8 @@

          Components Used

          const viewer = new Viewer({ canvasId: "myCanvas", - transparent: true + transparent: true, + dtxEnabled: true // Enable data texture model representation }); viewer.scene.camera.perspective.far = 10000; @@ -60,32 +61,26 @@

          Components Used

          viewer.scene.camera.look = [-106.46, -434.89, -171.60]; viewer.scene.camera.up = [0.32, 0.92, 0.11]; - viewer.scene.highlightMaterial.edges = false; - - viewer.scene.gammaInput = false; - viewer.scene.gammaOutput = false; - - viewer.cameraControl.followPointer = true; - viewer.cameraControl.smartPivot = true; - //------------------------------------------------------------------------------------------------------------------ // Generate the buildings //------------------------------------------------------------------------------------------------------------------ - viewer.scene.canvas.spinner.processes += 1; + viewer.scene.canvas.spinner.processes++; - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <----------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <----------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], - edges: false + edges: false, + dtxEnabled: true, + colorTextureEnabled: false }); - // Create a reusable geometry within the VBOSceneModel + // Create a reusable geometry within the SceneModel - vboSceneModel.createGeometry(buildBoxGeometry({ + sceneModel.createGeometry(buildBoxGeometry({ id: "myBoxGeometry", xSize: 1, ySize: 1, @@ -152,7 +147,7 @@

          Components Used

          const meshId = "mesh" + numObjects++; - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: meshId, geometryId: "myBoxGeometry", position: [xpos, ypos + ySize, zpos], @@ -161,7 +156,7 @@

          Components Used

          color: [0.3 + Math.random() * 0.5, 0.3 + Math.random() * 0.5, 0.3 + Math.random() * 0.5, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ meshIds: [meshId], isObject: true // <--- Represents an object, registers Entity by ID on viewer.scene.objects }); @@ -189,11 +184,6 @@

          Components Used

          } makeBuilding(x + 2, z + 2, x + 5 - 2, z + 5 - 2); } else { - pleaseWaitSpan.innerHTML += "preparing model.."; - vboSceneModel.finalize(); - const pleaseWait = document.getElementById("pleaseWait"); - pleaseWait.parentElement.removeChild(pleaseWait); - viewer.scene.canvas.spinner.processes -= 1; // viewer.scene.on("tick", () => { // viewer.camera.orbitYaw(0.4); @@ -203,6 +193,8 @@

          Components Used

          } } + const pleaseWait = document.getElementById("pleaseWait"); + function run() { for (var i = 0; i < 1000; i++) { nextBuilding(); @@ -210,11 +202,20 @@

          Components Used

          if (!done) { setTimeout(run); + } else { + // pleaseWait.innerHTML += "preparing model.."; + sceneModel.finalize(); + const pleaseWait = document.getElementById("pleaseWait"); + pleaseWait.parentElement.removeChild(pleaseWait); + + viewer.scene.canvas.spinner.processes--; + viewer.cameraFlight.jumpTo(sceneModel); } } run(); + //------------------------------------------------------------------------------------------------------------------ // Mouse over Entities to highlight them //------------------------------------------------------------------------------------------------------------------ @@ -247,7 +248,7 @@

          Components Used

          // } // }); - window.sceneModel = vboSceneModel; + window.sceneModel = sceneModel; \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_benchmark.html b/examples/scenemodel/benchmark_vbo_batching_autocompressed_triangles.html similarity index 86% rename from examples/sceneRepresentation_VBOSceneModel_batching_benchmark.html rename to examples/scenemodel/benchmark_vbo_batching_autocompressed_triangles.html index 772ca171c..bf9ef4678 100644 --- a/examples/sceneRepresentation_VBOSceneModel_batching_benchmark.html +++ b/examples/scenemodel/benchmark_vbo_batching_autocompressed_triangles.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,10 +13,10 @@
          - -

          VBOSceneModel

          + +

          SceneModel

          Geometry batching benchmark

          -

          In this example, we're building a large model using xeokit's VBOSceneModel component and no geometry +

          In this example, we're building a large model using xeokit's SceneModel component and no geometry reuse.

          @@ -43,7 +43,7 @@

          Components Used

          // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel, buildBoxGeometry} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel, buildBoxGeometry} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -60,8 +60,6 @@

          Components Used

          viewer.scene.camera.look = [-977.5, 17.14933204650879, -397.5]; viewer.scene.camera.up = [-0.17806679010391235, 0.9044896960258484, 0.33330681920051575]; - viewer.cameraControl.followPointer = true; - viewer.cameraControl.smartPivot = true; //------------------------------------------------------------------------------------------------------------------ // Generate the buildings @@ -69,13 +67,14 @@

          Components Used

          viewer.scene.canvas.spinner.processes += 1; - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <----------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <----------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], - edges: false + edges: false, + colorTextureEnabled: false }); var numObjects = 0; @@ -135,7 +134,7 @@

          Components Used

          const meshId = "mesh" + numObjects++; - vboSceneModel.createMesh(buildBoxGeometry({ + sceneModel.createMesh(buildBoxGeometry({ id: meshId, position: [xpos, ypos + ySize, zpos], scale: [(xmaxBox - xminBox) * 0.5, ySize, (zmaxBox - zminBox) * 0.5], @@ -143,7 +142,7 @@

          Components Used

          color: [0.3 + Math.random() * 0.5, 0.3 + Math.random() * 0.5, 0.3 + Math.random() * 0.5, 1.0] })); - vboSceneModel.createEntity({ + sceneModel.createEntity({ meshIds: [meshId], isObject: true // <--- Represents an object, registers Entity by ID on viewer.scene.objects }); @@ -161,7 +160,7 @@

          Components Used

          } } - vboSceneModel.finalize(); + sceneModel.finalize(); const pleaseWait = document.getElementById("pleaseWait"); pleaseWait.innerText = "Generated 373494 objects"; @@ -202,7 +201,7 @@

          Components Used

          // } // }); - window.sceneModel = vboSceneModel; + window.sceneModel = sceneModel; \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_origin_SAO.html b/examples/scenemodel/dtx_batching_autocompressed_rtc_sectionPlanes.html similarity index 68% rename from examples/sceneRepresentation_VBOSceneModel_batching_origin_SAO.html rename to examples/scenemodel/dtx_batching_autocompressed_rtc_sectionPlanes.html index 224a08a26..31afa9f36 100644 --- a/examples/sceneRepresentation_VBOSceneModel_batching_origin_SAO.html +++ b/examples/scenemodel/dtx_batching_autocompressed_rtc_sectionPlanes.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,29 +13,10 @@
          - -

          VBOSceneModel

          -

          Geometry batching, RTC and SAO

          -

          In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same providing a separate geometry for each object, providing geometry vertex positions as - relative-to-center (RTC) coordinates, and rendering with scalable ambient obscurance (SAO).

          -

          Reusing geometry speeds up rendering and reduces the memory footprint.

          -

          SAO emphasises detail by darkening crevices.

          -

          Components Used

          - +

          SceneModel + with Batched Geometries, RTC Coordinates and Moving SectionPlane +

          @@ -45,7 +26,7 @@

          Components Used

          // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel, math} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel, math, SectionPlanesPlugin} from "../../ist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -53,40 +34,21 @@

          Components Used

          const viewer = new Viewer({ canvasId: "myCanvas", - transparent: true + transparent: true, + dtxEnabled: true // Enable data texture model representation }); - //------------------------------------------------------------------------------------------------------------------ - // Enable and configure Scalable Ambient Obscurance (SAO) - //------------------------------------------------------------------------------------------------------------------ - - const sao = viewer.scene.sao; - - sao.enabled = true; // Only works if supported - - //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching - //------------------------------------------------------------------------------------------------------------------ - - const vboSceneModel = new VBOSceneModel(viewer.scene, { - id: "tables", - isModel: true, - scale: [1, 1, 1], - rotation: [0, 0, 0], - edges: true, - saoEnabled: true - }); + viewer.scene.camera.eye = [-21.80, 4.01, 6.56]; + viewer.scene.camera.look = [0, -5.75, 0]; + viewer.scene.camera.up = [0.37, 0.91, -0.11]; //----------------------------------------------------------- // Create several origin points //----------------------------------------------------------- //const OFFSET = 1000000000.0; - const OFFSET = 40.0; - //const OFFSET = 100.0; - const origins = [ [0, 0, 0], [OFFSET, 0, 0], @@ -95,59 +57,50 @@

          Components Used

          ]; //----------------------------------------------------------- - // Within out VBOSceneModel, create a simple table model + // Create a simple table model // at each of our origins. This will result in several - // tables, positioned very far apart from each other. + // tables, positioned apart from each other. //----------------------------------------------------------- + const sceneModel = new SceneModel(viewer.scene, { + id: "tables", + isModel: true, + scale: [1, 1, 1], + rotation: [0, 0, 0], + edges: true, + dtxEnabled: true + }); + for (let i = 0, len = origins.length; i < len; i++) { - buildTable(vboSceneModel, origins[i]); + buildTable(sceneModel, origins[i]); } - //------------------------------------------------------------ - // Finalize the VBOSceneModel. - //------------------------------------------------------------ - - vboSceneModel.finalize(); + sceneModel.finalize(); viewer.cameraFlight.jumpTo(viewer.scene); //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to highlight them + // Create a moving SectionPlane, that moves through the table models //------------------------------------------------------------------------------------------------------------------ - var lastPickedEntity = null; - - viewer.scene.input.on("mousemove", function (coords) { - - var hit = viewer.scene.pick({ - canvasPos: coords - }); + const sectionPlanes = new SectionPlanesPlugin(viewer, { + overviewCanvasId: "mySectionPlanesOverviewCanvas", + overviewVisible: true + }); - if (hit) { - - if (!lastPickedEntity || hit.entity.id !== lastPickedEntity.id) { - if (lastPickedEntity) { - lastPickedEntity.highlighted = false; - } - lastPickedEntity = hit.entity; - hit.entity.highlighted = true; - } - } else { - if (lastPickedEntity) { - lastPickedEntity.highlighted = false; - lastPickedEntity = null; - } - } + const sectionPlane = sectionPlanes.createSectionPlane({ + id: "mySectionPlane", + pos: [origins[0][0] - 10, -10, origins[0][2] - 10], + dir: math.normalizeVec3([1.0, 0.01, 1]) }); - //------------------------------------------------------------------------------------------------------------------ - // Continually orbit the point-of-interest - //------------------------------------------------------------------------------------------------------------------ + sectionPlanes.showControl(sectionPlane.id); - // viewer.scene.on("tick", () => { - // viewer.camera.orbitYaw(0.4); - // }); + let i = 0; + viewer.scene.on("tick", () => { + sectionPlane.pos = [sectionPlane.pos[0] + i, sectionPlane.pos[1], sectionPlane.pos[2] + i]; + i += 0.001; + }); //------------------------------------------------------------------------------------------------------------------ // Flies camera to the specified origin @@ -169,15 +122,15 @@

          Components Used

          }; //------------------------------------------------------------------------------------------------------------------ - // Creates a simple table-shaped model with the given VBOSceneModel, + // Creates a simple table-shaped model with the given SceneModel, // without reusing geometry, and centered at the given origin //------------------------------------------------------------------------------------------------------------------ - function buildTable(vboSceneModel, origin) { + function buildTable(sceneModel, origin) { let meshId = math.createUUID(); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: meshId, origin: origin, // This mesh's positions and transforms are relative to the origin primitive: "triangles", @@ -201,14 +154,14 @@

          Components Used

          color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ meshIds: [meshId], isObject: true }); meshId = math.createUUID(); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: meshId, origin: origin, primitive: "triangles", @@ -231,14 +184,14 @@

          Components Used

          color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ meshIds: [meshId], isObject: true }); meshId = math.createUUID(); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: meshId, origin: origin, positions: [ @@ -261,14 +214,14 @@

          Components Used

          color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ meshIds: [meshId], isObject: true }); meshId = math.createUUID(); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: meshId, origin: origin, positions: [ @@ -290,14 +243,14 @@

          Components Used

          color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ meshIds: [meshId], isObject: true }); meshId = math.createUUID(); - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: meshId, origin: origin, positions: [ @@ -319,7 +272,7 @@

          Components Used

          color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ meshIds: [meshId], isObject: true }); diff --git a/examples/scenemodel/dtx_batching_autocompressed_triangles.html b/examples/scenemodel/dtx_batching_autocompressed_triangles.html new file mode 100644 index 000000000..43b0ac024 --- /dev/null +++ b/examples/scenemodel/dtx_batching_autocompressed_triangles.html @@ -0,0 +1,186 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Non-realistic rendering, no geometry reuse, triangle primitives

          +

          + SceneModel is a WebGL2-based SceneModel implementation that stores model geometry as data textures on the GPU. +

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/scenemodel/dtx_batching_autocompressed_triangles_rtc.html b/examples/scenemodel/dtx_batching_autocompressed_triangles_rtc.html new file mode 100644 index 000000000..6b4b4787c --- /dev/null +++ b/examples/scenemodel/dtx_batching_autocompressed_triangles_rtc.html @@ -0,0 +1,238 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Geometry batching and RTC coordinates

          +

          In this example, we're programmatically building a simple model using xeokit's SceneModel component, while + at the same using a separate geometry for each object, and providing geometry vertex positions as + relative-to-center (RTC) coordinates.

          +

          RTC coordinates are xeokit's mechanism for full-precision emulation.

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/scenemodel/dtx_batching_precompressed_bucketed_triangles.html b/examples/scenemodel/dtx_batching_precompressed_bucketed_triangles.html new file mode 100644 index 000000000..983534db7 --- /dev/null +++ b/examples/scenemodel/dtx_batching_precompressed_bucketed_triangles.html @@ -0,0 +1,274 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Non-realistic rendering, no geometry reuse, triangle primitives

          +

          + SceneModel is a WebGL2-based SceneModel implementation that stores model geometry as data textures on the GPU. +

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/scenemodel/dtx_batching_precompressed_triangles.html b/examples/scenemodel/dtx_batching_precompressed_triangles.html new file mode 100644 index 000000000..858f70a04 --- /dev/null +++ b/examples/scenemodel/dtx_batching_precompressed_triangles.html @@ -0,0 +1,301 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Non-realistic rendering, no geometry reuse, triangle primitives

          +

          + SceneModel is a WebGL2-based SceneModel implementation that stores model geometry as data textures on the GPU. +

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/scenemodel/dtx_instancing_autocompressed_triangles.html b/examples/scenemodel/dtx_instancing_autocompressed_triangles.html new file mode 100644 index 000000000..edfb3977a --- /dev/null +++ b/examples/scenemodel/dtx_instancing_autocompressed_triangles.html @@ -0,0 +1,150 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Non-realistic rendering, geometry reuse, triangle primitives

          +

          + SceneModel is a WebGL2-based SceneModel implementation that stores model geometry as data textures on the GPU. +

          +

          Components Used

          + +
          + + + + + diff --git a/examples/scenemodel/dtx_instancing_precompressed_bucketed_triangles.html b/examples/scenemodel/dtx_instancing_precompressed_bucketed_triangles.html new file mode 100644 index 000000000..80a2d803a --- /dev/null +++ b/examples/scenemodel/dtx_instancing_precompressed_bucketed_triangles.html @@ -0,0 +1,160 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Non-realistic rendering, geometry reuse, triangle primitives

          +

          + SceneModel is a WebGL2-based SceneModel implementation that stores model geometry as data textures on the GPU. +

          +

          Components Used

          + +
          + + + + + diff --git a/examples/scenemodel/dtx_instancing_precompressed_triangles.html b/examples/scenemodel/dtx_instancing_precompressed_triangles.html new file mode 100644 index 000000000..15a7a26bc --- /dev/null +++ b/examples/scenemodel/dtx_instancing_precompressed_triangles.html @@ -0,0 +1,163 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Non-realistic rendering, geometry reuse, triangle primitives

          +

          + SceneModel is a WebGL2-based SceneModel implementation that stores model geometry as data textures on the GPU. +

          +

          Components Used

          + +
          + + + + + diff --git a/examples/scenemodel/dtx_lightingTest_viewDirLights.html b/examples/scenemodel/dtx_lightingTest_viewDirLights.html new file mode 100644 index 000000000..866e1562f --- /dev/null +++ b/examples/scenemodel/dtx_lightingTest_viewDirLights.html @@ -0,0 +1,694 @@ + + + + + + + xeokit Example + + + + + + + + +
          + +

          DirLight

          +

          Directional View-space lighting test for various scene representations

          +

          In this example, we're programmatically building a scene, using both the scene graph and SceneModel scene + representations, which we illuminate with directional View-space light sources.

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_transform.html b/examples/scenemodel/effects_dtx_batching_SAO.html similarity index 81% rename from examples/sceneRepresentation_VBOSceneModel_instancing_transform.html rename to examples/scenemodel/effects_dtx_batching_SAO.html index 4a014145d..f3f8b5509 100644 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_transform.html +++ b/examples/scenemodel/effects_dtx_batching_SAO.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,21 +13,27 @@
          - -

          VBOSceneModel

          -

          Geometry reuse and transforms

          -

          In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while - at the same time reusing the same geometry for each object.

          + +

          SceneModel

          +

          Geometry reuse and SAO

          +

          In this example, we're programmatically building a simple model using xeokit's SceneModel component, while + at the same time reusing the same geometry for each object, and rendering with scalable ambient obscurance + (SAO).

          Reusing geometry speeds up rendering and reduces the memory footprint.

          +

          SAO emphasises detail by darkening crevices.

          Components Used

          @@ -39,7 +45,7 @@

          Components Used

          // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -47,7 +53,8 @@

          Components Used

          const viewer = new Viewer({ canvasId: "myCanvas", - transparent: true + transparent: true, + dtxEnabled: true // Enable data texture model representation }); viewer.scene.camera.eye = [-21.80, 4.01, 6.56]; @@ -55,24 +62,32 @@

          Components Used

          viewer.scene.camera.up = [0.37, 0.91, -0.11]; //------------------------------------------------------------------------------------------------------------------ - // Build a VBOSceneModel representing a table with four legs, using geometry instancing + // Enable and configure Scalable Ambient Obscurance (SAO) //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + viewer.scene.sao.enabled = true; + + //------------------------------------------------------------------------------------------------------------------ + // Build a SceneModel representing a table with four legs, using geometry instancing + //------------------------------------------------------------------------------------------------------------------ + + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], - edges: true + edges: true, + saoEnabled: true, + dtxEnabled: true }); //-------------------------------------------------------- - // Create a reusable geometry within the VBOSceneModel + // Create a reusable geometry within the SceneModel // We'll instance this geometry by five meshes //-------------------------------------------------------- - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "myBoxGeometry", @@ -121,7 +136,7 @@

          Components Used

          // Red table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "redLegMesh", geometryId: "myBoxGeometry", position: [-4, -6, -4], @@ -130,7 +145,7 @@

          Components Used

          color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "redLeg", meshIds: ["redLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -140,7 +155,7 @@

          Components Used

          // Green table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "greenLegMesh", geometryId: "myBoxGeometry", position: [4, -6, -4], @@ -149,7 +164,7 @@

          Components Used

          color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "greenLeg", meshIds: ["greenLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -159,7 +174,7 @@

          Components Used

          // Blue table leg //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "blueLegMesh", geometryId: "myBoxGeometry", position: [4, -6, 4], @@ -168,7 +183,7 @@

          Components Used

          color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "blueLeg", meshIds: ["blueLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -178,7 +193,7 @@

          Components Used

          // Yellow table leg //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "yellowLegMesh", geometryId: "myBoxGeometry", position: [-4, -6, 4], @@ -187,7 +202,7 @@

          Components Used

          color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "yellowLeg", meshIds: ["yellowLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -197,7 +212,7 @@

          Components Used

          // Purple table top //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "purpleTableTopMesh", geometryId: "myBoxGeometry", position: [0, -3, 0], @@ -206,22 +221,20 @@

          Components Used

          color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "purpleTableTop", meshIds: ["purpleTableTopMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects }); //-------------------------------------------------------- - // Finalize this VBOSceneModel. + // Finalize this SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction. //-------------------------------------------------------- - vboSceneModel.finalize(); - - viewer.cameraFlight.jumpTo(viewer.scene); + sceneModel.finalize(); //------------------------------------------------------------------------------------------------------------------ // Find Entity instances by their IDs @@ -267,7 +280,7 @@

          Components Used

          } }); - window.sceneModel = vboSceneModel; + window.sceneModel = sceneModel; \ No newline at end of file diff --git a/examples/scenemodel/effects_dtx_instancing_SAO.html b/examples/scenemodel/effects_dtx_instancing_SAO.html new file mode 100644 index 000000000..8032e492e --- /dev/null +++ b/examples/scenemodel/effects_dtx_instancing_SAO.html @@ -0,0 +1,326 @@ + + + + + + + xeokit Example + + + + + + + +
          + +

          SceneModel

          +

          Geometry reuse and SAO

          +

          In this example, we're programmatically building a simple model using xeokit's SceneModel component, while + at the same time reusing the same geometry for each object, and rendering with scalable ambient obscurance + (SAO).

          +

          Reusing geometry speeds up rendering and reduces the memory footprint.

          +

          SAO emphasises detail by darkening crevices.

          +

          Components Used

          + +
          + + + + \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching.html b/examples/scenemodel/effects_vbo_batching_SAO.html similarity index 83% rename from examples/sceneRepresentation_VBOSceneModel_batching.html rename to examples/scenemodel/effects_vbo_batching_SAO.html index 2437a2774..a405d683a 100644 --- a/examples/sceneRepresentation_VBOSceneModel_batching.html +++ b/examples/scenemodel/effects_vbo_batching_SAO.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,27 +13,27 @@
          - -

          VBOSceneModel

          -

          Geometry batching

          -

          - VBOSceneModel is a WebGL2-based SceneModel implementation that stores model geometry as vertex buffer objects (VBOs) on - the GPU and renders them using a combination of geometry instancing and batching. -

          -

          In this example, we're programmatically building a simple model from xeokit's scene graph components, while - providing separate geometry for each object.

          + +

          SceneModel

          +

          Geometry reuse and SAO

          +

          In this example, we're programmatically building a simple model using xeokit's SceneModel component, while + at the same time reusing the same geometry for each object, and rendering with scalable ambient obscurance + (SAO).

          +

          Reusing geometry speeds up rendering and reduces the memory footprint.

          +

          SAO emphasises detail by darkening crevices.

          Components Used

          @@ -45,7 +45,7 @@

          Components Used

          // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -60,16 +60,19 @@

          Components Used

          viewer.scene.camera.look = [0, -5.75, 0]; viewer.scene.camera.up = [0.37, 0.91, -0.11]; - viewer.cameraControl.followPointer = true; - viewer.cameraControl.smartPivot = true; + //------------------------------------------------------------------------------------------------------------------ + // Enable and configure Scalable Ambient Obscurance (SAO) + //------------------------------------------------------------------------------------------------------------------ + + viewer.scene.sao.enabled = true; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching + // Create a SceneModel representing a table with four legs, using geometry batching //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], @@ -81,7 +84,7 @@

          Components Used

          // Each object is comprised of a mesh, which belongs to a node //----------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "redLegMesh", // The primitive type - allowed values are "points", "lines" and "triangles". @@ -129,7 +132,7 @@

          Components Used

          color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "redLeg", meshIds: ["redLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -139,7 +142,7 @@

          Components Used

          // Green table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "greenLegMesh", primitive: "triangles", positions: [ @@ -161,7 +164,7 @@

          Components Used

          color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "greenLeg", meshIds: ["greenLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -171,7 +174,7 @@

          Components Used

          // Blue table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "blueLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -193,7 +196,7 @@

          Components Used

          color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "blueLeg", meshIds: ["blueLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -203,7 +206,7 @@

          Components Used

          // Yellow table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "yellowLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -224,7 +227,7 @@

          Components Used

          color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "yellowLeg", meshIds: ["yellowLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -234,7 +237,7 @@

          Components Used

          // Purple table top object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "purpleTableTopMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -255,23 +258,23 @@

          Components Used

          color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "purpleTableTop", meshIds: ["purpleTableTopMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects }); //------------------------------------------------------------ - // Finalize the VBOSceneModel. + // Finalize the SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction within it. //------------------------------------------------------------ - vboSceneModel.finalize(); + sceneModel.finalize(); //------------------------------------------------------------------------------------------------------------------ - // Find Entities by their IDs + // Find Entity instances by their IDs //------------------------------------------------------------------------------------------------------------------ // Get the whole table model @@ -286,30 +289,35 @@

          Components Used

          // Mouse over Entities to highlight them //------------------------------------------------------------------------------------------------------------------ - var lastPickedEntity = null; + var lastEntity = null; viewer.scene.input.on("mousemove", function (coords) { + var hit = viewer.scene.pick({ canvasPos: coords }); + if (hit) { - if (!lastPickedEntity || hit.entity.id !== lastPickedEntity.id) { - if (lastPickedEntity) { - lastPickedEntity.highlighted = false; + if (!lastEntity || hit.entity.id !== lastEntity.id) { + + if (lastEntity) { + lastEntity.highlighted = false; } - lastPickedEntity = hit.entity; + lastEntity = hit.entity; hit.entity.highlighted = true; } } else { - if (lastPickedEntity) { - lastPickedEntity.highlighted = false; - lastPickedEntity = null; + + if (lastEntity) { + lastEntity.highlighted = false; + lastEntity = null; } } }); + window.sceneModel = sceneModel; \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_colorize.html b/examples/scenemodel/effects_vbo_batching_colorize.html similarity index 90% rename from examples/sceneRepresentation_VBOSceneModel_batching_colorize.html rename to examples/scenemodel/effects_vbo_batching_colorize.html index 64c6e5433..854be1db3 100644 --- a/examples/sceneRepresentation_VBOSceneModel_batching_colorize.html +++ b/examples/scenemodel/effects_vbo_batching_colorize.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,17 +13,17 @@
          - -

          VBOSceneModel

          + +

          SceneModel

          Geometry batching example

          @@ -35,7 +35,7 @@

          VBOSceneModel

          // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -51,12 +51,12 @@

          VBOSceneModel

          viewer.scene.camera.up = [0.37, 0.91, -0.11]; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching + // Create a SceneModel representing a table with four legs, using geometry batching //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], @@ -68,7 +68,7 @@

          VBOSceneModel

          // Each object is comprised of a mesh, which belongs to a node //----------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "redLegMesh", // The primitive type - allowed values are "points", "lines" and "triangles". @@ -116,7 +116,7 @@

          VBOSceneModel

          color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "redLeg", meshIds: ["redLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -126,7 +126,7 @@

          VBOSceneModel

          // Green table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "greenLegMesh", primitive: "triangles", positions: [ @@ -148,7 +148,7 @@

          VBOSceneModel

          color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "greenLeg", meshIds: ["greenLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -158,7 +158,7 @@

          VBOSceneModel

          // Blue table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "blueLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -180,7 +180,7 @@

          VBOSceneModel

          color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "blueLeg", meshIds: ["blueLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -190,7 +190,7 @@

          VBOSceneModel

          // Yellow table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "yellowLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -211,7 +211,7 @@

          VBOSceneModel

          color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "yellowLeg", meshIds: ["yellowLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -221,7 +221,7 @@

          VBOSceneModel

          // Purple table top object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "purpleTableTopMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -242,20 +242,20 @@

          VBOSceneModel

          color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "purpleTableTop", meshIds: ["purpleTableTopMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects }); //------------------------------------------------------------ - // Finalize the VBOSceneModel. + // Finalize the SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction within it. //------------------------------------------------------------ - vboSceneModel.finalize(); + sceneModel.finalize(); //------------------------------------------------------------------------------------------------------------------ // Find Entities by their IDs @@ -286,7 +286,7 @@

          VBOSceneModel

          if (!lastEntity || hit.entity.id !== lastEntity.id) { if (lastEntity) { - lastEntity.colorize = [1.0, 1.0, 1.0]; + lastEntity.colorize = null; } lastEntity = hit.entity; @@ -295,7 +295,7 @@

          VBOSceneModel

          } else { if (lastEntity) { - lastEntity.colorize = [1.0, 1.0, 1.0]; + lastEntity.colorize = null; lastEntity = null; } } diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_edges.html b/examples/scenemodel/effects_vbo_batching_highlight.html similarity index 89% rename from examples/sceneRepresentation_VBOSceneModel_batching_edges.html rename to examples/scenemodel/effects_vbo_batching_highlight.html index 54924b31f..af4e4a7cb 100644 --- a/examples/sceneRepresentation_VBOSceneModel_batching_edges.html +++ b/examples/scenemodel/effects_vbo_batching_highlight.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,18 +13,20 @@
          - -

          VBOSceneModel

          + +

          SceneModel

          Geometry batching example

          @@ -35,7 +37,7 @@

          VBOSceneModel

          // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -51,16 +53,16 @@

          VBOSceneModel

          viewer.scene.camera.up = [0.37, 0.91, -0.11]; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching + // Create a SceneModel representing a table with four legs, using geometry batching //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], - edges: false + edges: true }); //----------------------------------------------------------- @@ -68,7 +70,7 @@

          VBOSceneModel

          // Each object is comprised of a mesh, which belongs to a node //----------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "redLegMesh", // The primitive type - allowed values are "points", "lines" and "triangles". @@ -116,7 +118,7 @@

          VBOSceneModel

          color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "redLeg", meshIds: ["redLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -126,7 +128,7 @@

          VBOSceneModel

          // Green table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "greenLegMesh", primitive: "triangles", positions: [ @@ -148,7 +150,7 @@

          VBOSceneModel

          color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "greenLeg", meshIds: ["greenLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -158,7 +160,7 @@

          VBOSceneModel

          // Blue table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "blueLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -180,7 +182,7 @@

          VBOSceneModel

          color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "blueLeg", meshIds: ["blueLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -190,7 +192,7 @@

          VBOSceneModel

          // Yellow table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "yellowLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -211,7 +213,7 @@

          VBOSceneModel

          color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "yellowLeg", meshIds: ["yellowLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -221,7 +223,7 @@

          VBOSceneModel

          // Purple table top object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "purpleTableTopMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -242,20 +244,20 @@

          VBOSceneModel

          color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "purpleTableTop", meshIds: ["purpleTableTopMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects }); //------------------------------------------------------------ - // Finalize the VBOSceneModel. + // Finalize the SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction within it. //------------------------------------------------------------ - vboSceneModel.finalize(); + sceneModel.finalize(); //------------------------------------------------------------------------------------------------------------------ // Find Entities by their IDs @@ -270,7 +272,7 @@

          VBOSceneModel

          var blueLeg = viewer.scene.objects["blueLeg"]; //------------------------------------------------------------------------------------------------------------------ - // Mouse over Entities to show their edges + // Mouse over Entities to highlight them //------------------------------------------------------------------------------------------------------------------ var lastEntity = null; @@ -286,16 +288,16 @@

          VBOSceneModel

          if (!lastEntity || hit.entity.id !== lastEntity.id) { if (lastEntity) { - lastEntity.edges = false; + lastEntity.highlighted = false; } lastEntity = hit.entity; - lastEntity.edges = true; + lastEntity.highlighted = true; } } else { if (lastEntity) { - lastEntity.edges = false; + lastEntity.highlighted = false; lastEntity = null; } } diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_opacity.html b/examples/scenemodel/effects_vbo_batching_opacity.html similarity index 91% rename from examples/sceneRepresentation_VBOSceneModel_batching_opacity.html rename to examples/scenemodel/effects_vbo_batching_opacity.html index 498d2d087..c1f4e96bb 100644 --- a/examples/sceneRepresentation_VBOSceneModel_batching_opacity.html +++ b/examples/scenemodel/effects_vbo_batching_opacity.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,17 +13,17 @@
          - -

          VBOSceneModel

          + +

          SceneModel

          Geometry batching example

          • - Viewer
          • - VBOSceneModel + SceneModel
          • @@ -37,7 +37,7 @@

            VBOSceneModel

            // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -53,12 +53,12 @@

            VBOSceneModel

            viewer.scene.camera.up = [0.37, 0.91, -0.11]; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching + // Create a SceneModel representing a table with four legs, using geometry batching //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], @@ -70,7 +70,7 @@

            VBOSceneModel

            // Each object is comprised of a mesh, which belongs to a node //----------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "redLegMesh", // The primitive type - allowed values are "points", "lines" and "triangles". @@ -118,7 +118,7 @@

            VBOSceneModel

            color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "redLeg", meshIds: ["redLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -128,7 +128,7 @@

            VBOSceneModel

            // Green table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "greenLegMesh", primitive: "triangles", positions: [ @@ -150,7 +150,7 @@

            VBOSceneModel

            color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "greenLeg", meshIds: ["greenLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -160,7 +160,7 @@

            VBOSceneModel

            // Blue table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "blueLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -182,7 +182,7 @@

            VBOSceneModel

            color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "blueLeg", meshIds: ["blueLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -192,7 +192,7 @@

            VBOSceneModel

            // Yellow table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "yellowLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -213,7 +213,7 @@

            VBOSceneModel

            color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "yellowLeg", meshIds: ["yellowLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -223,7 +223,7 @@

            VBOSceneModel

            // Purple table top object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "purpleTableTopMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -244,20 +244,20 @@

            VBOSceneModel

            color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "purpleTableTop", meshIds: ["purpleTableTopMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects }); //------------------------------------------------------------ - // Finalize the VBOSceneModel. + // Finalize the SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction within it. //------------------------------------------------------------ - vboSceneModel.finalize(); + sceneModel.finalize(); //------------------------------------------------------------------------------------------------------------------ // Find Entities by their IDs diff --git a/examples/sceneRepresentation_VBOSceneModel_batching_measureDistance.html b/examples/scenemodel/effects_vbo_batching_select.html similarity index 85% rename from examples/sceneRepresentation_VBOSceneModel_batching_measureDistance.html rename to examples/scenemodel/effects_vbo_batching_select.html index 2417685aa..6c81d4b91 100644 --- a/examples/sceneRepresentation_VBOSceneModel_batching_measureDistance.html +++ b/examples/scenemodel/effects_vbo_batching_select.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,7 +13,21 @@
            -

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            + +

            SceneModel

            +

            Geometry batching example

            +
            @@ -23,7 +37,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel, DistanceMeasurementsPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -39,12 +53,12 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            viewer.scene.camera.up = [0.37, 0.91, -0.11]; //------------------------------------------------------------------------------------------------------------------ - // Create a VBOSceneModel representing a table with four legs, using geometry batching + // Create a SceneModel representing a table with four legs, using geometry batching //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], @@ -56,7 +70,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            // Each object is comprised of a mesh, which belongs to a node //----------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "redLegMesh", // The primitive type - allowed values are "points", "lines" and "triangles". @@ -104,7 +118,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "redLeg", meshIds: ["redLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -114,7 +128,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            // Green table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "greenLegMesh", primitive: "triangles", positions: [ @@ -136,7 +150,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "greenLeg", meshIds: ["greenLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -146,7 +160,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            // Blue table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "blueLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -168,7 +182,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "blueLeg", meshIds: ["blueLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -178,7 +192,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            // Yellow table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "yellowLegMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -199,7 +213,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "yellowLeg", meshIds: ["yellowLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -209,7 +223,7 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            // Purple table top object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "purpleTableTopMesh", positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1, 1, @@ -230,20 +244,20 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "purpleTableTop", meshIds: ["purpleTableTopMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects }); //------------------------------------------------------------ - // Finalize the VBOSceneModel. + // Finalize the SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction within it. //------------------------------------------------------------ - vboSceneModel.finalize(); + sceneModel.finalize(); //------------------------------------------------------------------------------------------------------------------ // Find Entities by their IDs @@ -257,14 +271,37 @@

            VBOSceneModel with Batched Geometries and DistanceMeasurementPlugin

            var greenLeg = viewer.scene.objects["greenLeg"]; var blueLeg = viewer.scene.objects["blueLeg"]; - //------------------------------------------------------------------------------------------------------------------ - // Create a DistanceMeasurementsPlugin, activate its DistanceMeasuremntsControl + // Mouse over Entities to select them //------------------------------------------------------------------------------------------------------------------ - const distanceMeasurements = new DistanceMeasurementsPlugin(viewer); + var lastEntity = null; + + viewer.scene.input.on("mousemove", function (coords) { + + const hit = viewer.scene.pick({ + canvasPos: coords + }); + + if (hit) { - distanceMeasurements.control.activate(); + if (!lastEntity || hit.entity.id !== lastEntity.id) { + + if (lastEntity) { + lastEntity.selected = false; + } + + lastEntity = hit.entity; + lastEntity.selected = true; + } + } else { + + if (lastEntity) { + lastEntity.selected = false; + lastEntity = null; + } + } + }); \ No newline at end of file diff --git a/examples/sceneRepresentation_VBOSceneModel_instancing_SAO.html b/examples/scenemodel/effects_vbo_instancing_SAO.html similarity index 86% rename from examples/sceneRepresentation_VBOSceneModel_instancing_SAO.html rename to examples/scenemodel/effects_vbo_instancing_SAO.html index 0b29caa21..d9b3a7fb7 100644 --- a/examples/sceneRepresentation_VBOSceneModel_instancing_SAO.html +++ b/examples/scenemodel/effects_vbo_instancing_SAO.html @@ -5,7 +5,7 @@ xeokit Example - + @@ -13,10 +13,10 @@
            - -

            VBOSceneModel

            + +

            SceneModel

            Geometry reuse and SAO

            -

            In this example, we're programmatically building a simple model using xeokit's VBOSceneModel component, while +

            In this example, we're programmatically building a simple model using xeokit's SceneModel component, while at the same time reusing the same geometry for each object, and rendering with scalable ambient obscurance (SAO).

            Reusing geometry speeds up rendering and reduces the memory footprint.

            @@ -24,15 +24,15 @@

            Geometry reuse and SAO

            Components Used

            @@ -45,7 +45,7 @@

            Components Used

            // Import the modules we need for this example //------------------------------------------------------------------------------------------------------------------ - import {Viewer, VBOSceneModel} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; + import {Viewer, SceneModel} from "../../dist/xeokit-sdk.es.js"; //------------------------------------------------------------------------------------------------------------------ // Create a Viewer and arrange the camera @@ -64,17 +64,15 @@

            Components Used

            // Enable and configure Scalable Ambient Obscurance (SAO) //------------------------------------------------------------------------------------------------------------------ - const sao = viewer.scene.sao; - - sao.enabled = true; + viewer.scene.sao.enabled = true; //------------------------------------------------------------------------------------------------------------------ - // Build a VBOSceneModel representing a table with four legs, using geometry instancing + // Build a SceneModel representing a table with four legs, using geometry instancing //------------------------------------------------------------------------------------------------------------------ - const vboSceneModel = new VBOSceneModel(viewer.scene, { + const sceneModel = new SceneModel(viewer.scene, { id: "table", - isModel: true, // <--------------------- Represents a model, registers VBOSceneModel by ID on viewer.scene.models + isModel: true, // <--------------------- Represents a model, registers SceneModel by ID on viewer.scene.models position: [0, 0, 0], scale: [1, 1, 1], rotation: [0, 0, 0], @@ -83,11 +81,11 @@

            Components Used

            }); //-------------------------------------------------------- - // Create a reusable geometry within the VBOSceneModel + // Create a reusable geometry within the SceneModel // We'll instance this geometry by five meshes //-------------------------------------------------------- - vboSceneModel.createGeometry({ + sceneModel.createGeometry({ id: "myBoxGeometry", @@ -136,7 +134,7 @@

            Components Used

            // Red table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "redLegMesh", geometryId: "myBoxGeometry", position: [-4, -6, -4], @@ -145,7 +143,7 @@

            Components Used

            color: [1, 0.3, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "redLeg", meshIds: ["redLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -155,7 +153,7 @@

            Components Used

            // Green table leg object //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "greenLegMesh", geometryId: "myBoxGeometry", position: [4, -6, -4], @@ -164,7 +162,7 @@

            Components Used

            color: [0.3, 1.0, 0.3] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "greenLeg", meshIds: ["greenLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -174,7 +172,7 @@

            Components Used

            // Blue table leg //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "blueLegMesh", geometryId: "myBoxGeometry", position: [4, -6, 4], @@ -183,7 +181,7 @@

            Components Used

            color: [0.3, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "blueLeg", meshIds: ["blueLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -193,7 +191,7 @@

            Components Used

            // Yellow table leg //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "yellowLegMesh", geometryId: "myBoxGeometry", position: [-4, -6, 4], @@ -202,7 +200,7 @@

            Components Used

            color: [1.0, 1.0, 0.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "yellowLeg", meshIds: ["yellowLegMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects @@ -212,7 +210,7 @@

            Components Used

            // Purple table top //-------------------------------------------------------- - vboSceneModel.createMesh({ + sceneModel.createMesh({ id: "purpleTableTopMesh", geometryId: "myBoxGeometry", position: [0, -3, 0], @@ -221,20 +219,20 @@

            Components Used

            color: [1.0, 0.3, 1.0] }); - vboSceneModel.createEntity({ + sceneModel.createEntity({ id: "purpleTableTop", meshIds: ["purpleTableTopMesh"], isObject: true // <----------------- Represents an object, registers Entity by ID on viewer.scene.objects }); //-------------------------------------------------------- - // Finalize this VBOSceneModel. + // Finalize this SceneModel. // // Internally, this builds any geometry batches or instanced // arrays that are currently under construction. //-------------------------------------------------------- - vboSceneModel.finalize(); + sceneModel.finalize(); //------------------------------------------------------------------------------------------------------------------ // Find Entity instances by their IDs @@ -280,7 +278,7 @@

            Components Used

            } }); - window.sceneModel = vboSceneModel; + window.sceneModel = sceneModel; \ No newline at end of file diff --git a/examples/scenemodel/index.html b/examples/scenemodel/index.html new file mode 100644 index 000000000..1eade0985 --- /dev/null +++ b/examples/scenemodel/index.html @@ -0,0 +1,608 @@ + + + + + + + xeokit Examples + + + + + + + + + +
            +
            +
            + +
            +

            xeokit / Examples / SceneModel Examples

            +
            + + + \ No newline at end of file diff --git a/examples/scenemodel/lighting_vbo_view_dir.html b/examples/scenemodel/lighting_vbo_view_dir.html new file mode 100644 index 000000000..7455d3135 --- /dev/null +++ b/examples/scenemodel/lighting_vbo_view_dir.html @@ -0,0 +1,692 @@ + + + + + + + xeokit Example + + + + + + + + +
            + +

            DirLight

            +

            Directional View-space lighting test for various scene representations

            +

            In this example, we're programmatically building a scene, using both the scene graph and SceneModel scene + representations, which we illuminate with directional View-space light sources.

            +

            Components Used

            + +
            + + + + \ No newline at end of file diff --git a/examples/scenemodel/lod_dtx_batching_autocompressed_triangles.html b/examples/scenemodel/lod_dtx_batching_autocompressed_triangles.html new file mode 100644 index 000000000..c0d4e1003 --- /dev/null +++ b/examples/scenemodel/lod_dtx_batching_autocompressed_triangles.html @@ -0,0 +1,221 @@ + + + + + + + xeokit Example + + + + + + + +
            + +

            SceneModel

            +

            Geometry batching benchmark

            +

            In this example, we're building a large model using xeokit's SceneModel component and no geometry + reuse.

            +
              +
            • +
              Geometry batching benchmark
              generating 373494 objects, please wait...
              +
            • +
            +

            Components Used

            + +
            + + + + \ No newline at end of file diff --git a/examples/scenemodel/lod_dtx_instancing_autocompressed_triangles.html b/examples/scenemodel/lod_dtx_instancing_autocompressed_triangles.html new file mode 100644 index 000000000..d5e2f8266 --- /dev/null +++ b/examples/scenemodel/lod_dtx_instancing_autocompressed_triangles.html @@ -0,0 +1,223 @@ + + + + + + + xeokit Example + + + + + + + +
            + +

            SceneModel

            +

            Geometry instancing benchmark

            +

            In this example, we're building a large model using xeokit's SceneModel component and geometry instancing.

            +

            Reusing geometry speeds up rendering and reduces the memory footprint.

            +
              +
            • +
              Geometry batching benchmark
              generating 373494 objects, please wait...
              +
            • +
            +

            Components Used

            + +
            + + + + \ No newline at end of file diff --git a/examples/scenemodel/lod_vbo_batching_autocompressed_triangles.html b/examples/scenemodel/lod_vbo_batching_autocompressed_triangles.html new file mode 100644 index 000000000..dbcc26504 --- /dev/null +++ b/examples/scenemodel/lod_vbo_batching_autocompressed_triangles.html @@ -0,0 +1,185 @@ + + + + + + + xeokit Example + + + + + + + +
            + +

            SceneModel

            +

            Geometry batching benchmark

            +

            In this example, we're building a large model using xeokit's SceneModel component and no geometry + reuse.

            +
              +
            • +
              Geometry batching benchmark
              generating 373494 objects, please wait...
              +
            • +
            +

            Components Used

            + +
            + + + + \ No newline at end of file diff --git a/examples/scenemodel/lod_vbo_instancing_autocompressed_triangles.html b/examples/scenemodel/lod_vbo_instancing_autocompressed_triangles.html new file mode 100644 index 000000000..c9ce315e0 --- /dev/null +++ b/examples/scenemodel/lod_vbo_instancing_autocompressed_triangles.html @@ -0,0 +1,224 @@ + + + + + + + xeokit Example + + + + + + + +
            + +

            SceneModel

            +

            Geometry instancing benchmark

            +

            In this example, we're building a large model using xeokit's SceneModel component and geometry instancing.

            +

            Reusing geometry speeds up rendering and reduces the memory footprint.

            +
              +
            • +
              Geometry batching benchmark
              generating 373494 objects, please wait...
              +
            • +
            +

            Components Used

            + +
            + + + + \ No newline at end of file diff --git a/examples/logDepthBuf_SceneGraph_RTC.html b/examples/scenemodel/logDepthBuf_SceneGraph_RTC.html similarity index 95% rename from examples/logDepthBuf_SceneGraph_RTC.html rename to examples/scenemodel/logDepthBuf_SceneGraph_RTC.html index 82486d9c5..f25643671 100644 --- a/examples/logDepthBuf_SceneGraph_RTC.html +++ b/examples/scenemodel/logDepthBuf_SceneGraph_RTC.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
            +
            +
            + +
            +

            xeokit / Examples / Slicing

            +
            + + + \ No newline at end of file diff --git a/examples/gizmos_SectionPlanesPlugin_getSnapshot.html b/examples/snapshots/getSnapshot_excludeSectionPlaneControl.html similarity index 90% rename from examples/gizmos_SectionPlanesPlugin_getSnapshot.html rename to examples/snapshots/getSnapshot_excludeSectionPlaneControl.html index 3373dec73..7af4b93dc 100644 --- a/examples/gizmos_SectionPlanesPlugin_getSnapshot.html +++ b/examples/snapshots/getSnapshot_excludeSectionPlaneControl.html @@ -5,7 +5,7 @@ xeokit Example - + + + + + +
            +
            +
            + +
            +

            xeokit / Examples / Snapshots

            +
            + + + \ No newline at end of file diff --git a/examples/storeyViews_StoreyViewsPlugin_createStoreyMap.html b/examples/storeyViews_StoreyViewsPlugin_createStoreyMap.html deleted file mode 100644 index a0d7986c8..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_createStoreyMap.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
            -
            - -

            StoreyViewsPlugin

            -

            Using createStoreyMap() to create a storey map PNG

            -

            Components Used

            - -

            Resources

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_createStoreyMap_height.html b/examples/storeyViews_StoreyViewsPlugin_createStoreyMap_height.html deleted file mode 100644 index 22aa87d29..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_createStoreyMap_height.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
            -
            - -

            StoreyViewsPlugin

            -

            Using createStoreyMap() to create a storey map PNG

            -

            Components Used

            - -

            Resources

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera.html b/examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera.html deleted file mode 100644 index f2ab1dbef..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
            - -

            StoreyViewsPlugin

            -

            Using gotoStoreyCamera() and showStoreyObjects()

            -

            Positioning the camera for an orthographic plan view, while showing only the objects within a given - IfcBuildingStorey.

            -

            Components used

            - -

            Components used

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera2.html b/examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera2.html deleted file mode 100644 index aff109e9b..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_gotoStoreyCamera2.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
            - -

            StoreyViewsPlugin

            -

            Using gotoStoreyCamera() and showStoreyObjects()

            -

            Positioning the camera for an orthographic plan view, while showing only the objects within a given - IfcBuildingStorey.

            -

            Components used

            - -

            Components used

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_pickStoreyMap.html b/examples/storeyViews_StoreyViewsPlugin_pickStoreyMap.html deleted file mode 100644 index d4ed74db8..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_pickStoreyMap.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
            -
            - -

            StoreyViewsPlugin

            -

            Using createStoreyMap() and pickStoreyMap()

            -

            Components Used

            - -

            Resources

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_recipe1.html b/examples/storeyViews_StoreyViewsPlugin_recipe1.html deleted file mode 100644 index 86e587926..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_recipe1.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
            -
            - -

            StoreyViewsPlugin

            -

            UX Recipe #1: using createStoreyMap() and pickStoreyMap()

            -

            Click a room in the 2D plan to fit it within the 3D View.

            -

            Click empty space in the 2D plan to fit the whole model.

            -

            Components Used

            - -

            Resources

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_recipe2.html b/examples/storeyViews_StoreyViewsPlugin_recipe2.html deleted file mode 100644 index 554b72408..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_recipe2.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
            -
            - -

            StoreyViewsPlugin

            -

            UX Recipe #2

            -

            Click anywhere in the 2D plan image (see top left) to go there within the 3D view, in first-person mode.

            -

            Click empty space in the 2D plan image to return to ortho view.

            -

            Components Used

            - -

            Resources

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_recipe3.html b/examples/storeyViews_StoreyViewsPlugin_recipe3.html deleted file mode 100644 index 2d689f595..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_recipe3.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - xeokit Example - - - - - - - - -
            -
            - -

            StoreyViewsPlugin

            -

            UX Recipe #3

            -

            Click a room in the plan images to go there in first-person mode. Click empty space in the images to - return.

            -

            Components Used

            - -

            Resources

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_recipe4.html b/examples/storeyViews_StoreyViewsPlugin_recipe4.html deleted file mode 100644 index 2d9af1927..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_recipe4.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
            -
            - -

            StoreyViewsPlugin

            -

            UX Recipe #4

            -

            Click a room in the 3D plan to go there in first-person mode. Click empty space to return to ortho plan - view.

            -

            Components Used

            - -

            Resources

            - -
            - - - - diff --git a/examples/storeyViews_StoreyViewsPlugin_showStoreyObjects.html b/examples/storeyViews_StoreyViewsPlugin_showStoreyObjects.html deleted file mode 100644 index ef80f5a13..000000000 --- a/examples/storeyViews_StoreyViewsPlugin_showStoreyObjects.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
            - -

            StoreyViewsPlugin

            -

            showStoreyObjects

            -

            Showing only the objects within an IfcBuildingStorey

            -

            Components used

            - -

            Components used

            - -
            - - - diff --git a/examples/viewer/index.html b/examples/viewer/index.html new file mode 100644 index 000000000..8c4fd7de4 --- /dev/null +++ b/examples/viewer/index.html @@ -0,0 +1,470 @@ + + + + + + + xeokit Examples + + + + + + + + + +
            +
            +
            + +
            +

            xeokit / Examples / Customizing the Viewer

            +
            + + + \ No newline at end of file diff --git a/examples/viewer/localization_NavCubePlugin.html b/examples/viewer/localization_NavCubePlugin.html new file mode 100644 index 000000000..17c82cadd --- /dev/null +++ b/examples/viewer/localization_NavCubePlugin.html @@ -0,0 +1,189 @@ + + + + + + + xeokit Example + + + + + + + + + + + +
            + +

            NavCubePlugin Localization

            +

            Navigation helper with localized labels

            +

            NavCubePlugin creates a navigational helper that allows us easily jump the camera to axis-aligned views of our + scene.

            +

            In this example, we're configuring our Viewer with a LocaleService, which allows us to dynamically switch our + NavCube's labels between different languages.

            +

            Select a Locale

            +

            Select a locale and watch the NavCube labels change:

            +
            +

            Components Used

            + +

            Resources

            + +
            + + + \ No newline at end of file diff --git a/examples/localization_NavCubePlugin_defaultLocaleService.html b/examples/viewer/localization_NavCubePlugin_defaultLocaleService.html similarity index 86% rename from examples/localization_NavCubePlugin_defaultLocaleService.html rename to examples/viewer/localization_NavCubePlugin_defaultLocaleService.html index 55384ca0e..c232b5580 100644 --- a/examples/localization_NavCubePlugin_defaultLocaleService.html +++ b/examples/viewer/localization_NavCubePlugin_defaultLocaleService.html @@ -5,10 +5,10 @@ xeokit Example - + - - + + + + + + + + + + +
            +

            Logarithmic depth buffer enabled

            +

            XKT model with double-precision geometry, rendered with logarithmic buffer enabled


            +

            Stats

            +
              +
            • +
              Loading JavaScript modules...
              +
            • +
            +

            Components used

            + +

            Resources

            + + +
            + + + + diff --git a/examples/postEffects_SAO_OTCConferenceCenter.html b/examples/viewer/sao_ConferenceCenter.html similarity index 91% rename from examples/postEffects_SAO_OTCConferenceCenter.html rename to examples/viewer/sao_ConferenceCenter.html index 1ff30c8d4..eb75d3b57 100644 --- a/examples/postEffects_SAO_OTCConferenceCenter.html +++ b/examples/viewer/sao_ConferenceCenter.html @@ -5,10 +5,10 @@ xeokit Example - + - - + + - - - - - -
            -

            Repeatedly creating and destroying a viewer and canvas

            -
            - -
            - - - - \ No newline at end of file diff --git a/examples/viewer_disableAntialiasing.html b/examples/viewer_disableAntialiasing.html deleted file mode 100644 index ca213ac28..000000000 --- a/examples/viewer_disableAntialiasing.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - xeokit Example - - - - - - - -
            -

            Viewer - disabling anti-aliasing


            - -
            - - - \ No newline at end of file diff --git a/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js b/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js index 39246c8fe..5937f934c 100644 --- a/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +++ b/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js @@ -33,6 +33,23 @@ class AngleMeasurementsControl extends Component { this._state = FINDING_ORIGIN; this._currentAngleMeasurement = null; + // Add a marker to the canvas + const markerDiv = document.createElement('div'); + const canvas = this.scene.canvas.canvas; + canvas.parentNode.insertBefore(markerDiv, canvas); + + markerDiv.style.background = "black"; + markerDiv.style.border = "2px solid blue"; + markerDiv.style.borderRadius = "10px"; + markerDiv.style.width = "5px"; + markerDiv.style.height = "5px"; + markerDiv.style.margin = "-200px -200px"; + markerDiv.style.zIndex = "100"; + markerDiv.style.position = "absolute"; + markerDiv.style.pointerEvents = "none"; + + this.markerDiv = markerDiv; + // Event handles from CameraControl this._onMouseHoverSurface = null; this._onHoverNothing = null; @@ -72,9 +89,7 @@ class AngleMeasurementsControl extends Component { const canvas = scene.canvas.canvas; const input = scene.input; - const pickSurfacePrecisionEnabled = scene.pickSurfacePrecisionEnabled; - - let isMouseHoveringEntity = false; + let mouseHovering = false; let mouseHoverEntity = null; let mouseWorldPos = math.vec3(); const mouseHoverCanvasPos = math.vec2(); @@ -88,31 +103,41 @@ class AngleMeasurementsControl extends Component { const touchEndCanvasPos = math.vec2(); const touchStartWorldPos = math.vec3(); - this._onMouseHoverSurface = cameraControl.on("hoverSurface", event => { - isMouseHoveringEntity = true; + this._onMouseHoverSurface = cameraControl.on("hoverSnapOrSurface", event => { + mouseHovering = true; mouseHoverEntity = event.entity; mouseWorldPos.set(event.worldPos); mouseHoverCanvasPos.set(event.canvasPos); - if (this._currentAngleMeasurement) { - switch (this._state) { - case FINDING_CORNER: + switch (this._state) { + case FINDING_ORIGIN: + this.markerDiv.style.marginLeft = `${event.canvasPos[0] - 5}px`; + this.markerDiv.style.marginTop = `${event.canvasPos[1] - 5}px`; + this.markerDiv.style.background = "pink"; + this.markerDiv.style.border = "2px solid red"; + break; + case FINDING_CORNER: + if (this._currentAngleMeasurement) { this._currentAngleMeasurement.originWireVisible = true; this._currentAngleMeasurement.targetWireVisible = false; this._currentAngleMeasurement.cornerVisible = true; this._currentAngleMeasurement.angleVisible = false; - this._currentAngleMeasurement.corner.entity = event.entity; this._currentAngleMeasurement.corner.worldPos = event.worldPos; - canvas.style.cursor = "pointer"; - break; - case FINDING_TARGET: + } + this.markerDiv.style.marginLeft = `-10000px`; + this.markerDiv.style.marginTop = `-10000px`; + canvas.style.cursor = "pointer"; + break; + case FINDING_TARGET: + if (this._currentAngleMeasurement) { this._currentAngleMeasurement.targetWireVisible = true; this._currentAngleMeasurement.targetVisible = true; this._currentAngleMeasurement.angleVisible = true; - this._currentAngleMeasurement.target.entity = event.entity; this._currentAngleMeasurement.target.worldPos = event.worldPos; - canvas.style.cursor = "pointer"; - break; - } + } + this.markerDiv.style.marginLeft = `-10000px`; + this.markerDiv.style.marginTop = `-10000px`; + canvas.style.cursor = "pointer"; + break; } }); @@ -130,17 +155,7 @@ class AngleMeasurementsControl extends Component { } switch (this._state) { case FINDING_ORIGIN: - if (isMouseHoveringEntity) { - if (pickSurfacePrecisionEnabled) { - const pickResult = scene.pick({ - canvasPos: mouseHoverCanvasPos, - pickSurface: true, - pickSurfacePrecision: pickSurfacePrecisionEnabled - }); - if (pickResult && pickResult.worldPos) { - worldPos.set(pickResult.worldPos); - } - } + if (mouseHovering) { this._currentAngleMeasurement = this.plugin.createMeasurement({ id: math.createUUID(), origin: { @@ -168,17 +183,7 @@ class AngleMeasurementsControl extends Component { } break; case FINDING_CORNER: - if (isMouseHoveringEntity) { - if (pickSurfacePrecisionEnabled) { - const pickResult = scene.pick({ - canvasPos: mouseHoverCanvasPos, - pickSurface: true, - pickSurfacePrecision: true - }); - if (pickResult && pickResult.worldPos) { - this._currentAngleMeasurement.corner.worldPos = pickResult.worldPos; - } - } + if (mouseHovering) { this._currentAngleMeasurement.targetWireVisible = false; this._currentAngleMeasurement.targetVisible = true; this._currentAngleMeasurement.angleVisible = true; @@ -193,18 +198,7 @@ class AngleMeasurementsControl extends Component { } break; case FINDING_TARGET: - if (isMouseHoveringEntity) { - if (pickSurfacePrecisionEnabled) { - const pickResult = scene.pick({ - canvasPos: mouseHoverCanvasPos, - pickSurface: true, - pickSurfacePrecision: true - }); - if (pickResult && pickResult.worldPos) { - this._currentAngleMeasurement.target.worldPos = pickResult.worldPos; - this._currentAngleMeasurement.approximate = false; - } - } + if (mouseHovering) { this._currentAngleMeasurement.targetVisible = true; this._currentAngleMeasurement.angleVisible = true; this.fire("measurementEnd", this._currentAngleMeasurement); @@ -222,9 +216,10 @@ class AngleMeasurementsControl extends Component { } }); - this._onHoverNothing = cameraControl.on("hoverOff", event => { - - isMouseHoveringEntity = false; + this._onMouseHoverOff = cameraControl.on("hoverSnapOrSurfaceOff", event => { + mouseHovering = false; + this.markerDiv.style.marginLeft = `-100px`; + this.markerDiv.style.marginTop = `-100px`; if (this._currentAngleMeasurement) { switch (this._state) { case FINDING_ORIGIN: @@ -269,8 +264,7 @@ class AngleMeasurementsControl extends Component { } const pickResult = scene.pick({ canvasPos: touchEndCanvasPos, - pickSurface: true, - pickSurfacePrecision: false + pickSurface: true }); if (pickResult && pickResult.worldPos) { switch (this._state) { diff --git a/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js b/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js index 2d127ac82..d4f4f0100 100644 --- a/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +++ b/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js @@ -13,7 +13,7 @@ const tempVec3c = math.vec3(); /** * {@link Viewer} plugin that saves and loads BCF viewpoints as JSON objects. * - * [](http://xeokit.github.io/xeokit-sdk/examples/#BCF_SaveViewpoint) + * [](/examples/#BCF_SaveViewpoint) * * * [[Example 1: Saving viewer state to a BCF viewpoint](https://xeokit.github.io/xeokit-sdk/examples/#BCF_SaveViewpoint)] * * [[Example 2: Loading viewer state from a BCF viewpoint](https://xeokit.github.io/xeokit-sdk/examples/#BCF_LoadViewpoint)] @@ -277,7 +277,7 @@ const tempVec3c = math.vec3(); * }); * ```` * - * [[Run an example](http://xeokit.github.io/xeokit-sdk/examples/#BCF_LoadViewpoint_defaultInvisible)] + * [[Run an example](/examples/#BCF_LoadViewpoint_defaultInvisible)] * * ## Behaviour with XKTLoaderPlugin globalizeObjectIds * diff --git a/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js b/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js index 463dcaced..b389a5f2b 100644 --- a/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js +++ b/src/plugins/CityJSONLoaderPlugin/CityJSONLoaderPlugin.js @@ -1,8 +1,5 @@ -import {utils} from "../../viewer/scene/utils.js"; -import {VBOSceneModel} from "../../viewer/scene/models/VBOSceneModel/VBOSceneModel.js"; -import {Plugin} from "../../viewer/Plugin.js"; +import {math, Plugin, SceneModel, utils} from "../../viewer/index.js"; import {CityJSONDefaultDataSource} from "./CityJSONDefaultDataSource.js"; -import {math} from "../../viewer/index.js"; import {earcut} from '../lib/earcut.js'; @@ -168,6 +165,10 @@ class CityJSONLoaderPlugin extends Plugin { * @param {Number[]} [params.rotation=[0,0,0]] The model's orientation, given as Euler angles in degrees, for each of the X, Y and Z axis. * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters. Relative to ````origin````. * @param {Object} [params.stats] Collects model statistics. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}. */ load(params = {}) { @@ -177,8 +178,9 @@ class CityJSONLoaderPlugin extends Plugin { delete params.id; } - const sceneModel = new VBOSceneModel(this.viewer.scene, utils.apply(params, { - isModel: true + const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, { + isModel: true, + edges: true })); if (!params.src && !params.cityJSON) { diff --git a/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js b/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js index f90230ce6..3b6962f65 100644 --- a/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +++ b/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js @@ -415,7 +415,7 @@ class DistanceMeasurement extends Component { // this._xAxisLabel.setVisible(this.axisVisible && this.xAxisVisible); // this._yAxisLabel.setVisible(this.axisVisible && this.yAxisVisible); // this._zAxisLabel.setVisible(this.axisVisible && this.zAxisVisible); - // this._lengthLabel.setVisible(false); + // this._lengthLabel.setVisible(false); this._originDot.setVisible(this._visible && this._originVisible); this._targetDot.setVisible(this._visible && this._targetVisible); @@ -867,4 +867,4 @@ class DistanceMeasurement extends Component { } } -export {DistanceMeasurement}; +export {DistanceMeasurement}; \ No newline at end of file diff --git a/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js b/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js index 4af14e65b..a8a620361 100644 --- a/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +++ b/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js @@ -17,7 +17,7 @@ class DistanceMeasurementsControl extends Component { /** * @private */ - constructor(plugin, cfg={}) { + constructor(plugin, cfg = {}) { super(plugin.viewer.scene); @@ -28,8 +28,6 @@ class DistanceMeasurementsControl extends Component { this.plugin = plugin; this._active = false; - this._snapMode = "off"; - this._snapToVertex = false; // Add a marker to the canvas const markerDiv = document.createElement('div'); @@ -64,10 +62,10 @@ class DistanceMeasurementsControl extends Component { // Shows 2D canvas pos of touch start this._touchStartDot = new Dot(plugin._container, { - fillColor: plugin.defaultColor, - zIndex: plugin.zIndex + 1, - visible: false - }); + fillColor: plugin.defaultColor, + zIndex: plugin.zIndex + 1, + visible: false + }); // Tracks 3D world pos of touch start, dynamically calculates 2D canvas pos this._touchStartMarker = new Marker(this, { @@ -91,40 +89,6 @@ class DistanceMeasurementsControl extends Component { // Event handles from Canvas element this._onCanvasTouchStart = null; this._onCanvasTouchEnd = null; - - this.snapMode = cfg.snapMode; - } - - /** - * Sets the pointer snapping behaviour. - * - * Accepted values are "off" and "vertex". - * - * If set to "vertex", the DistanceMeasurementsPlugin will continuously snap the pointer to the nearest vertex as the user hovers over the model. - * - * @param snapMode {String} - */ - set snapMode(snapMode) { - if (snapMode === undefined || snapMode === null) { - snapMode = "vertex"; - } else if (snapMode !== "vertex") { - return; - } - this._snapMode = snapMode; - this._snapToVertex = (snapMode === "vertex"); - } - - /** - * Gets the pointer snapping behaviour. - * - * Accepted values are "off" and "vertex". - * - * If set to "vertex", the DistanceMeasurementsPlugin will continuously snap the pointer to the nearest vertex as the user hovers over the model. - * - * @returns {String} - */ - get snapMode() { - return this._snapMode; } /** Gets if this DistanceMeasurementsControl is currently active, where it is responding to input. @@ -154,12 +118,13 @@ class DistanceMeasurementsControl extends Component { const pickSurfacePrecisionEnabled = scene.pickSurfacePrecisionEnabled; - let mouseHoverEntity = null; + let mouseHovering = false; const mouseWorldPos = math.vec3(); const mouseCanvasPos = math.vec2(); - let lastMouseCanvasX; - let lastMouseCanvasY; + let mouseDownCanvasX; + let mouseDownCanvasY; + const mouseCanvasClickTolerance = 5; const FIRST_TOUCH_EXPECTED = 0; @@ -171,50 +136,20 @@ class DistanceMeasurementsControl extends Component { const touchEndCanvasPos = math.vec2(); const touchStartWorldPos = math.vec3(); - this._onMouseHoverSurface = cameraControl.on("hoverSurface", event => { - - // This gets fired for both mouse and touch input, but we don't care when handling touch - mouseHoverEntity = event.entity; - - let useSnapToVertex = false; - - if (this._snapToVertex) { - useSnapToVertex = !!event.snappedWorldPos && !!event.snappedCanvasPos; - } - - if (useSnapToVertex) { - mouseWorldPos.set(event.snappedWorldPos); - mouseCanvasPos.set(event.snappedCanvasPos); - - if (touchState === FIRST_TOUCH_EXPECTED) { - this.markerDiv.style.marginLeft = `${event.snappedCanvasPos[0]-5}px`; - this.markerDiv.style.marginTop = `${event.snappedCanvasPos[1]-5}px`; - - this.markerDiv.style.background = "greenyellow"; - this.markerDiv.style.border = "2px solid green"; - } - } else { - if (event.worldPos !== null && event.canvasPos !== null) { - mouseWorldPos.set(event.worldPos); - mouseCanvasPos.set(event.canvasPos); - - if (touchState === FIRST_TOUCH_EXPECTED) { - this.markerDiv.style.marginLeft = `${event.canvasPos[0]-5}px`; - this.markerDiv.style.marginTop = `${event.canvasPos[1]-5}px`; - - this.markerDiv.style.background = "pink"; - this.markerDiv.style.border = "2px solid red"; - } - } - } - - if (touchState !== FIRST_TOUCH_EXPECTED || !this.active) { + this._onMouseHoverSurface = cameraControl.on("hoverSnapOrSurface", event => { // This gets fired for both mouse and touch input, but we don't care when handling touch + mouseHovering = true; + mouseWorldPos.set(event.worldPos); + mouseCanvasPos.set(event.canvasPos); + if (touchState === FIRST_TOUCH_EXPECTED) { + this.markerDiv.style.marginLeft = `${event.canvasPos[0] - 5}px`; + this.markerDiv.style.marginTop = `${event.canvasPos[1] - 5}px`; + this.markerDiv.style.background = "pink"; + this.markerDiv.style.border = "2px solid red"; + } else if (!this.active) { this.markerDiv.style.marginLeft = `-10000px`; this.markerDiv.style.marginTop = `-10000px`; } - canvas.style.cursor = "pointer"; - if (this._currentDistanceMeasurementByMouse) { this._currentDistanceMeasurementByMouse.wireVisible = this._currentDistanceMeasurementByMouseInittouchState.wireVisible; this._currentDistanceMeasurementByMouse.axisVisible = this._currentDistanceMeasurementByMouseInittouchState.axisVisible && this.plugin.defaultAxisVisible; @@ -222,36 +157,24 @@ class DistanceMeasurementsControl extends Component { this._currentDistanceMeasurementByMouse.yAxisVisible = this._currentDistanceMeasurementByMouseInittouchState.yAxisVisible && this.plugin.defaultYAxisVisible; this._currentDistanceMeasurementByMouse.zAxisVisible = this._currentDistanceMeasurementByMouseInittouchState.zAxisVisible && this.plugin.defaultZAxisVisible; this._currentDistanceMeasurementByMouse.targetVisible = this._currentDistanceMeasurementByMouseInittouchState.targetVisible; - this._currentDistanceMeasurementByMouse.target.entity = mouseHoverEntity; this._currentDistanceMeasurementByMouse.target.worldPos = mouseWorldPos; } }); this._onInputMouseDown = input.on("mousedown", (coords) => { - lastMouseCanvasX = coords[0]; - lastMouseCanvasY = coords[1]; + mouseDownCanvasX = coords[0]; + mouseDownCanvasY = coords[1]; }); this._onInputMouseUp = input.on("mouseup", (coords) => { - if (coords[0] > lastMouseCanvasX + mouseCanvasClickTolerance || - coords[0] < lastMouseCanvasX - mouseCanvasClickTolerance || - coords[1] > lastMouseCanvasY + mouseCanvasClickTolerance || - coords[1] < lastMouseCanvasY - mouseCanvasClickTolerance) { + if (coords[0] > mouseDownCanvasX + mouseCanvasClickTolerance || + coords[0] < mouseDownCanvasX - mouseCanvasClickTolerance || + coords[1] > mouseDownCanvasY + mouseCanvasClickTolerance || + coords[1] < mouseDownCanvasY - mouseCanvasClickTolerance) { return; } if (this._currentDistanceMeasurementByMouse) { - if (mouseHoverEntity) { - if (pickSurfacePrecisionEnabled) { - const pickResult = scene.pick({ - canvasPos: mouseCanvasPos, - pickSurface: true, - pickSurfacePrecision: true - }); - if (pickResult && pickResult.worldPos) { - this._currentDistanceMeasurementByMouse.target.worldPos = pickResult.worldPos; - } - this._currentDistanceMeasurementByMouse.approximate = false; - } + if (mouseHovering) { this._currentDistanceMeasurementByMouse.clickable = true; this.fire("measurementEnd", this._currentDistanceMeasurementByMouse); this._currentDistanceMeasurementByMouse = null; @@ -261,35 +184,21 @@ class DistanceMeasurementsControl extends Component { this._currentDistanceMeasurementByMouse = null; } } else { - if (mouseHoverEntity) { - if (pickSurfacePrecisionEnabled) { - const pickResult = scene.pick({ - canvasPos: mouseCanvasPos, - pickSurface: true, - pickSurfacePrecision: true - }); - if (pickResult && pickResult.worldPos) { - mouseWorldPos.set(pickResult.worldPos); - } - } + if (mouseHovering) { this._currentDistanceMeasurementByMouse = plugin.createMeasurement({ id: math.createUUID(), origin: { - entity: mouseHoverEntity, - worldPos: mouseWorldPos + worldPos: mouseWorldPos.slice() }, target: { - entity: mouseHoverEntity, - worldPos: mouseWorldPos + worldPos: mouseWorldPos.slice() }, approximate: true }); this._currentDistanceMeasurementByMouseInittouchState.axisVisible = this._currentDistanceMeasurementByMouse.axisVisible && this.plugin.defaultAxisVisible; - this._currentDistanceMeasurementByMouseInittouchState.xAxisVisible = this._currentDistanceMeasurementByMouse.xAxisVisible && this.plugin.defaultXAxisVisible; this._currentDistanceMeasurementByMouseInittouchState.yAxisVisible = this._currentDistanceMeasurementByMouse.yAxisVisible && this.plugin.defaultYAxisVisible; this._currentDistanceMeasurementByMouseInittouchState.zAxisVisible = this._currentDistanceMeasurementByMouse.zAxisVisible && this.plugin.defaultZAxisVisible; - this._currentDistanceMeasurementByMouseInittouchState.wireVisible = this._currentDistanceMeasurementByMouse.wireVisible; this._currentDistanceMeasurementByMouseInittouchState.targetVisible = this._currentDistanceMeasurementByMouse.targetVisible; this._currentDistanceMeasurementByMouse.clickable = false; @@ -298,12 +207,10 @@ class DistanceMeasurementsControl extends Component { } }); - this._onMouseHoverOff = cameraControl.on("hoverOff", event => { - mouseHoverEntity = null; - + this._onMouseHoverOff = cameraControl.on("hoverSnapOrSurfaceOff", event => { + mouseHovering = false; this.markerDiv.style.marginLeft = `-100px`; this.markerDiv.style.marginTop = `-100px`; - if (this._currentDistanceMeasurementByMouse) { this._currentDistanceMeasurementByMouse.wireVisible = false; this._currentDistanceMeasurementByMouse.targetVisible = false; @@ -312,16 +219,6 @@ class DistanceMeasurementsControl extends Component { canvas.style.cursor = "default"; }); - this._onPickedNothing = cameraControl.on("pickedNothing", event => { - if (this._currentDistanceMeasurementByMouse) { - this.fire("measurementCancel", this._currentDistanceMeasurementByMouse); - this._currentDistanceMeasurementByMouse.destroy(); - this._currentDistanceMeasurementByMouse = null; - } - startDot.setVisible(false); - touchState = FIRST_TOUCH_EXPECTED; - }); - canvas.addEventListener("touchstart", this._onCanvasTouchStart = (event) => { const touches = event.touches; const changedTouches = event.changedTouches; @@ -343,8 +240,7 @@ class DistanceMeasurementsControl extends Component { } const pickResult = scene.pick({ canvasPos: touchEndCanvasPos, - pickSurface: true, - pickSurfacePrecision: pickSurfacePrecisionEnabled + pickSurface: true }); if (pickResult && pickResult.worldPos) { switch (touchState) { @@ -360,11 +256,9 @@ class DistanceMeasurementsControl extends Component { const measurement = plugin.createMeasurement({ id: math.createUUID(), origin: { - entity: mouseHoverEntity, worldPos: touchStartWorldPos }, target: { - entity: mouseHoverEntity, worldPos: pickResult.worldPos }, approximate: (!pickSurfacePrecisionEnabled) @@ -470,4 +364,4 @@ const getCanvasPosFromEvent = function (event, canvasPos) { return canvasPos; }; -export {DistanceMeasurementsControl}; +export {DistanceMeasurementsControl}; \ No newline at end of file diff --git a/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js b/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js index 924978b7b..3de6fd404 100644 --- a/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +++ b/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js @@ -225,8 +225,6 @@ class DistanceMeasurementsPlugin extends Plugin { * @param {boolean} [cfg.defaultZAxisVisible=true] The default value of the DistanceMeasurements `zAxisVisible` property. * @param {string} [cfg.defaultColor=#00BBFF] The default color of the length dots, wire and label. * @param {number} [cfg.zIndex] If set, the wires, dots and labels will have this zIndex (+1 for dots and +2 for labels). - * @param {boolean} [cfg.snapMode="off"] If set to "vertex", the {@link DistanceMeasurementsPlugin} will continuously snap the pointer to the nearest vertex as the user hovers over the model. - * */ constructor(viewer, cfg = {}) { @@ -235,7 +233,6 @@ class DistanceMeasurementsPlugin extends Plugin { this._container = cfg.container || document.body; this._control = new DistanceMeasurementsControl(this, { - snapMode: cfg.snapMode }); this._measurements = {}; @@ -454,4 +451,4 @@ class DistanceMeasurementsPlugin extends Plugin { } } -export {DistanceMeasurementsPlugin} +export {DistanceMeasurementsPlugin} \ No newline at end of file diff --git a/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js b/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js index 21bcffa3e..e11eeca7a 100644 --- a/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +++ b/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js @@ -1,9 +1,8 @@ -import {utils} from "../../viewer/scene/utils.js" -import {VBOSceneModel} from "../../viewer/scene/models/VBOSceneModel/VBOSceneModel.js"; -import {Plugin} from "../../viewer/Plugin.js"; -import {GLTFVBOSceneModelLoader} from "./GLTFVBOSceneModelLoader.js"; -import {IFCObjectDefaults} from "../../viewer/metadata/IFCObjectDefaults.js"; +import {Plugin, SceneModel, utils} from "../../viewer/index.js" +import {GLTFSceneModelLoader} from "./GLTFSceneModelLoader.js"; + import {GLTFDefaultDataSource} from "./GLTFDefaultDataSource.js"; +import {IFCObjectDefaults} from "../../viewer/metadata/IFCObjectDefaults"; /** * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/). @@ -28,8 +27,8 @@ import {GLTFDefaultDataSource} from "./GLTFDefaultDataSource.js"; * * ## Usage * - * In the example below we'll load a house plan model from a [binary glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along - * with an accompanying JSON [IFC metadata file](http://xeokit.github.io/xeokit-sdk/examples/metaModels/schependomlaan/). + * In the example below we'll load a house plan model from a [binary glTF file](/examples/models/gltf/schependomlaan/), along + * with an accompanying JSON [IFC metadata file](/examples/metaModels/schependomlaan/). * * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s * that hold their metadata. @@ -174,7 +173,7 @@ class GLTFLoaderPlugin extends Plugin { super("GLTFLoader", viewer, cfg); - this._sceneModelLoader = new GLTFVBOSceneModelLoader(this, cfg); + this._sceneModelLoader = new GLTFSceneModelLoader(this, cfg); this.dataSource = cfg.dataSource; this.objectDefaults = cfg.objectDefaults; @@ -247,6 +246,10 @@ class GLTFLoaderPlugin extends Plugin { * @param {Boolean} [params.colorTextureEnabled=true] Indicates if base color texture rendering is enabled for the model. Overridden by ````pbrEnabled````. Only works when {@link Scene#colorTextureEnabled} is also ````true````. * @param {Boolean} [params.backfaces=false] When true, allows visible backfaces, wherever specified in the glTF. When false, ignores backfaces. * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models} */ load(params = {}) { @@ -256,8 +259,9 @@ class GLTFLoaderPlugin extends Plugin { delete params.id; } - const sceneModel = new VBOSceneModel(this.viewer.scene, utils.apply(params, { - isModel: true + const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, { + isModel: true, + dtxEnabled: params.dtxEnabled })); const modelId = sceneModel.id; // In case ID was auto-generated diff --git a/src/plugins/GLTFLoaderPlugin/GLTFVBOSceneModelLoader.js b/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js similarity index 99% rename from src/plugins/GLTFLoaderPlugin/GLTFVBOSceneModelLoader.js rename to src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js index 8144e644b..438e11b24 100644 --- a/src/plugins/GLTFLoaderPlugin/GLTFVBOSceneModelLoader.js +++ b/src/plugins/GLTFLoaderPlugin/GLTFSceneModelLoader.js @@ -20,7 +20,7 @@ import { /** * @private */ -class GLTFVBOSceneModelLoader { +class GLTFSceneModelLoader { constructor(cfg) { cfg = cfg || {}; @@ -666,4 +666,4 @@ function error(ctx, msg) { ctx.plugin.error(msg); } -export {GLTFVBOSceneModelLoader}; +export {GLTFSceneModelLoader}; diff --git a/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js b/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js index 3311ad996..43bfb8bbb 100644 --- a/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js +++ b/src/plugins/LASLoaderPlugin/LASLoaderPlugin.js @@ -1,5 +1,5 @@ import {utils} from "../../viewer/scene/utils.js"; -import {VBOSceneModel} from "../../viewer/scene/models/VBOSceneModel/VBOSceneModel.js"; +import {SceneModel} from "../../viewer/scene/model/index.js"; import {Plugin} from "../../viewer/Plugin.js"; import {LASDefaultDataSource} from "./LASDefaultDataSource.js"; import {math} from "../../viewer/index.js"; @@ -281,7 +281,7 @@ class LASLoaderPlugin extends Plugin { delete params.id; } - const sceneModel = new VBOSceneModel(this.viewer.scene, utils.apply(params, { + const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, { isModel: true })); diff --git a/src/plugins/NavCubePlugin/CubeTextureCanvas.js b/src/plugins/NavCubePlugin/CubeTextureCanvas.js index e12c7c011..f35f46845 100644 --- a/src/plugins/NavCubePlugin/CubeTextureCanvas.js +++ b/src/plugins/NavCubePlugin/CubeTextureCanvas.js @@ -3,7 +3,7 @@ import {math} from "../../viewer/scene/math/math.js"; /** * @private */ -function CubeTextureCanvas(viewer, cfg = {}) { +function CubeTextureCanvas(viewer, navCubeScene, cfg = {}) { const cubeColor = "lightgrey"; const cubeHighlightColor = cfg.hoverColor || "rgba(0,0,0,0.4)"; @@ -167,7 +167,7 @@ function CubeTextureCanvas(viewer, cfg = {}) { } } - viewer.scene.glRedraw(); + navCubeScene.glRedraw(); } const translateLabel = (function () { diff --git a/src/plugins/NavCubePlugin/NavCubePlugin.js b/src/plugins/NavCubePlugin/NavCubePlugin.js index 9f2f6c567..17f64e412 100644 --- a/src/plugins/NavCubePlugin/NavCubePlugin.js +++ b/src/plugins/NavCubePlugin/NavCubePlugin.js @@ -188,7 +188,7 @@ class NavCubePlugin extends Plugin { }; }()); - this._cubeTextureCanvas = new CubeTextureCanvas(viewer, cfg); + this._cubeTextureCanvas = new CubeTextureCanvas(viewer, navCubeScene, cfg); this._cubeSampler = new Texture(navCubeScene, { image: this._cubeTextureCanvas.getImage(), diff --git a/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js b/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js index 74d0a733a..81bf66b6a 100644 --- a/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +++ b/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js @@ -22,7 +22,7 @@ import {OBJSceneGraphLoader} from "./OBJSceneGraphLoader.js"; * * ## Usage * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#loading_OBJ_SportsCar)] + * [[Run this example](/examples/#loading_OBJ_SportsCar)] * * ````javascript * import {Viewer, OBJLoaderPlugin} from "xeokit-sdk.es.js"; diff --git a/src/plugins/SectionPlanesPlugin/Control.js b/src/plugins/SectionPlanesPlugin/Control.js index f387b6d13..95ffdfef0 100644 --- a/src/plugins/SectionPlanesPlugin/Control.js +++ b/src/plugins/SectionPlanesPlugin/Control.js @@ -1182,7 +1182,7 @@ class Control { grabbed = true; }); - this._onCameraControlHoverLeave = this._viewer.cameraControl.on("hoverOut", (hit) => { + this._onCameraControlHoverLeave = this._viewer.cameraControl.on("hoverOutEntity", (hit) => { if (!this._visible) { return; } diff --git a/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js b/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js index 64be6a777..a994542d2 100644 --- a/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +++ b/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js @@ -22,7 +22,7 @@ const tempVec3 = math.vec3(); * this example). * * Click a plane in the overview to activate a 3D control with which you can interactively * reposition its SectionPlane in the main canvas. - * * Use {@link BCFViewpointsPlugin} to save and load SectionPlanes in BCF viewpoints. + * * Use {@lin BCFViewpointsPlugin} to save and load SectionPlanes in BCF viewpoints. * * ## Usage * diff --git a/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js b/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js index 84ba5c83b..5b104aa0d 100644 --- a/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +++ b/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js @@ -318,26 +318,29 @@ class StoreyViewsPlugin extends Plugin { const metaScene = viewer.metaScene; const metaModel = metaScene.metaModels[modelId]; const model = scene.models[modelId]; - if (!metaModel || !metaModel.rootMetaObject) { + if (!metaModel || !metaModel.rootMetaObjects) { return; } - const storeyIds = metaModel.rootMetaObject.getObjectIDsInSubtreeByType(["IfcBuildingStorey"]); - for (let i = 0, len = storeyIds.length; i < len; i++) { - const storeyId = storeyIds[i]; - const metaObject = metaScene.metaObjects[storeyId]; - const childObjectIds = metaObject.getObjectIDsInSubtree(); - const aabb = scene.getAABB(childObjectIds); - const numObjects = (Math.random() > 0.5) ? childObjectIds.length : 0; - const storey = new Storey(this, aabb, modelId, storeyId, numObjects); - storey._onModelDestroyed = model.once("destroyed", () => { - this._deregisterModelStoreys(modelId); - this.fire("storeys", this.storeys); - }); - this.storeys[storeyId] = storey; - if (!this.modelStoreys[modelId]) { - this.modelStoreys[modelId] = {}; + const rootMetaObjects = metaModel.rootMetaObjects; + for (let j = 0, lenj = rootMetaObjects.length; j < lenj; j++) { + const storeyIds = rootMetaObjects[j].getObjectIDsInSubtreeByType(["IfcBuildingStorey"]); + for (let i = 0, len = storeyIds.length; i < len; i++) { + const storeyId = storeyIds[i]; + const metaObject = metaScene.metaObjects[storeyId]; + const childObjectIds = metaObject.getObjectIDsInSubtree(); + const aabb = scene.getAABB(childObjectIds); + const numObjects = (Math.random() > 0.5) ? childObjectIds.length : 0; + const storey = new Storey(this, aabb, modelId, storeyId, numObjects); + storey._onModelDestroyed = model.once("destroyed", () => { + this._deregisterModelStoreys(modelId); + this.fire("storeys", this.storeys); + }); + this.storeys[storeyId] = storey; + if (!this.modelStoreys[modelId]) { + this.modelStoreys[modelId] = {}; + } + this.modelStoreys[modelId][storeyId] = storey; } - this.modelStoreys[modelId][storeyId] = storey; } } @@ -582,7 +585,7 @@ class StoreyViewsPlugin extends Plugin { const scene = viewer.scene; const format = options.format || "png"; const aabb = storey.aabb; - const aspect = (aabb[5] - aabb[2]) / (aabb[3] - aabb[0]); + const aspect = Math.abs((aabb[5] - aabb[2]) / (aabb[3] - aabb[0])); const padding = options.padding || 0; let width; @@ -594,15 +597,15 @@ class StoreyViewsPlugin extends Plugin { } else if (options.height) { height = options.height; - width = height / aspect; + width = Math.round(height / aspect); } else if (options.width) { width = options.width; - height = width * aspect; + height = Math.round(width * aspect); } else { width = 300; - height = width * aspect; + height = Math.round(width * aspect); } this._objectsMemento.saveObjects(scene); diff --git a/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js b/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js index c94e1e432..327e495b9 100644 --- a/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js +++ b/src/plugins/WebIFCLoaderPlugin/WebIFCLoaderPlugin.js @@ -1,7 +1,7 @@ import * as WebIFC from "web-ifc"; import {utils} from "../../viewer/scene/utils.js" -import {VBOSceneModel} from "../../viewer/scene/models/VBOSceneModel/VBOSceneModel.js"; +import {SceneModel} from "../../viewer/scene/model/index.js"; import {Plugin} from "../../viewer/Plugin.js"; import {WebIFCDefaultDataSource} from "./WebIFCDefaultDataSource.js"; import {IFCObjectDefaults} from "../../viewer/metadata/IFCObjectDefaults.js"; @@ -567,6 +567,10 @@ class WebIFCLoaderPlugin extends Plugin { * @param {Boolean} [params.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}. * @param {Boolean} [params.globalizeObjectIds=false] Indicates whether to globalize each {@link Entity#id} and {@link MetaObject#id}, in case you need to prevent ID clashes with other models. See {@link WebIFCLoaderPlugin#globalizeObjectIds} for more info. * @param {Object} [params.stats] Collects model statistics. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}. */ load(params = {}) { @@ -576,7 +580,7 @@ class WebIFCLoaderPlugin extends Plugin { delete params.id; } - const sceneModel = new VBOSceneModel(this.viewer.scene, utils.apply(params, { + const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, { isModel: true })); diff --git a/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js b/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js index f5b4ffcd9..9a6c3a144 100644 --- a/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +++ b/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js @@ -1,6 +1,5 @@ import {utils} from "../../viewer/scene/utils.js" -import {VBOSceneModel} from "../../viewer/scene/models/VBOSceneModel/VBOSceneModel.js"; -import {DataTextureSceneModel} from "../../viewer/scene/models/DataTextureSceneModel/DataTextureSceneModel.js"; +import {SceneModel} from "../../viewer/scene/model/index.js"; import {Plugin} from "../../viewer/Plugin.js"; import {XKTDefaultDataSource} from "./XKTDefaultDataSource.js"; import {IFCObjectDefaults} from "../../viewer/metadata/IFCObjectDefaults.js"; @@ -450,7 +449,7 @@ class XKTLoaderPlugin extends Plugin { * improve Viewer performance for models that have a lot of geometry reuse, but may also increase the amount of * browser and GPU memory they require. See [#769](https://github.com/xeokit/xeokit-sdk/issues/769) for more info. * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied - * to limit the size of the batched geometry arrays that {@link VBOSceneModel} internally creates for batched geometries. + * to limit the size of the batched geometry arrays that {@link SceneModel} internally creates for batched geometries. * A low value means less heap allocation/de-allocation while loading batched geometries, but more draw calls and * slower rendering speed. A high value means larger heap allocation/de-allocation while loading, but less draw calls * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```. @@ -460,7 +459,7 @@ class XKTLoaderPlugin extends Plugin { constructor(viewer, cfg = {}) { super("XKTLoader", viewer, cfg); - + this._maxGeometryBatchSize = cfg.maxGeometryBatchSize; this.textureTranscoder = cfg.textureTranscoder; @@ -725,7 +724,10 @@ class XKTLoaderPlugin extends Plugin { * all geometry instances into batches (````false````), and not use instancing to render them. Setting this ````false```` can significantly * improve Viewer performance for models that have excessive geometry reuse, but may also increases the amount of * browser and GPU memory used by the model. See [#769](https://github.com/xeokit/xeokit-sdk/issues/769) for more info. - * @param {Boolean} [params.useDataTextures=false] When we set this ````true````, an alternative memory representation of object geometry will be used that relies on data textures. At the expense of some rendering performance overhead, this will reduce the used RAM to around 25% respect to setting the option to ````false````. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}. */ load(params = {}) { @@ -735,25 +737,15 @@ class XKTLoaderPlugin extends Plugin { delete params.id; } - let sceneModel; - - if (!!params.useDataTextures) { - sceneModel = new DataTextureSceneModel(this.viewer.scene, utils.apply(params, { - isModel: true, - origin: params.origin, - targetLodFps: params.useDataTextures.targetLodFps || false, - enableViewFrustumCulling: params.useDataTextures.enableViewFrustumCulling || false, - disableVertexWelding: params.useDataTextures.disableVertexWelding || false, - disableIndexRebucketing: params.useDataTextures.disableIndexRebucketing || false, - })); - } else { - sceneModel = new VBOSceneModel(this.viewer.scene, utils.apply(params, { - isModel: true, - textureTranscoder: this._textureTranscoder, - maxGeometryBatchSize: this._maxGeometryBatchSize, - origin: params.origin - })); - } + const sceneModel = new SceneModel(this.viewer.scene, utils.apply(params, { + isModel: true, + textureTranscoder: this._textureTranscoder, + maxGeometryBatchSize: this._maxGeometryBatchSize, + origin: params.origin, + disableVertexWelding: params.disableVertexWelding || false, + disableIndexRebucketing: params.disableIndexRebucketing || false, + dtxEnabled: params.dtxEnabled + })); const modelId = sceneModel.id; // In case ID was auto-generated @@ -767,7 +759,7 @@ class XKTLoaderPlugin extends Plugin { const excludeTypes = params.excludeTypes || this._excludeTypes; const objectDefaults = params.objectDefaults || this._objectDefaults; - options.reuseGeometries = (params.reuseGeometries !== null && params.reuseGeometries !== undefined ) ? params.reuseGeometries : (this._reuseGeometries !== false); + options.reuseGeometries = (params.reuseGeometries !== null && params.reuseGeometries !== undefined) ? params.reuseGeometries : (this._reuseGeometries !== false); if (includeTypes) { options.includeTypesMap = {}; diff --git a/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js b/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js index 84e9136c9..62316af73 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js +++ b/src/plugins/XKTLoaderPlugin/parsers/ParserV10.js @@ -388,7 +388,7 @@ function load(viewer, options, inflatedData, sceneModel) { const meshMatrixIndex = eachMeshMatricesPortion[meshIndex]; const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16); - const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the VBOSceneModel + const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the SceneModel let geometryArrays = geometryArraysCache[geometryId]; @@ -429,12 +429,6 @@ function load(viewer, options, inflatedData, sceneModel) { geometryArrays.geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]); geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0); break; - case 4: - geometryArrays.primitiveName = "line-strip"; - geometryArrays.geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]); - geometryArrays.geometryIndices = lineStripToLines(indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1])); - geometryValid = (geometryArrays.geometryPositions.length > 0 && geometryArrays.geometryIndices.length > 0); - break; default: continue; } @@ -584,12 +578,6 @@ function load(viewer, options, inflatedData, sceneModel) { geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]); geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0); break; - case 4: - primitiveName = "lines-strip"; - geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]); - geometryIndices = lineStripToLines(indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1])); - geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0); - break; default: continue; } @@ -631,18 +619,6 @@ function load(viewer, options, inflatedData, sceneModel) { } } -function lineStripToLines(lineStrip) { - if (lineStrip.length < 2) { - return lineStrip; - } - const lines = []; - for (let i = 0; i < lineStrip.length - 1; i++) { - lines.push(lineStrip[i]); - lines.push(lineStrip[i + 1]); - } - return lines; -} - /** @private */ const ParserV10 = { version: 10, diff --git a/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js b/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js index a4d945041..43ccbc8c3 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +++ b/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js @@ -148,7 +148,7 @@ function load(viewer, options, inflatedData, sceneModel) { // Create 1) geometries for instanced primitives, and 2) meshes for batched primitives. We create all the // batched meshes now, before we create entities, because we're creating the batched meshes in runs that share // the same decode matrices. Each run of meshes with the same decode matrix will end up in the same - // BatchingLayer; the VBOSceneModel#createMesh() method starts a new BatchingLayer each time the decode + // BatchingLayer; the SceneModel#createMesh() method starts a new BatchingLayer each time the decode // matrix has changed since the last invocation of that method, hence why we need to order batched meshes // in runs like this. @@ -174,7 +174,7 @@ function load(viewer, options, inflatedData, sceneModel) { // Primitive instanced by more than one entity, and has positions in Model-space - var geometryId = "geometry" + orderedPrimitiveIndex; // These IDs are local to the VBOSceneModel + var geometryId = "geometry" + orderedPrimitiveIndex; // These IDs are local to the SceneModel sceneModel.createGeometry({ id: geometryId, @@ -192,7 +192,7 @@ function load(viewer, options, inflatedData, sceneModel) { // Primitive is used only by one entity, and has positions pre-transformed into World-space - const meshId = orderedPrimitiveIndex; // These IDs are local to the VBOSceneModel + const meshId = orderedPrimitiveIndex; // These IDs are local to the SceneModel const entityIndex = batchedPrimitiveEntityIndexes[orderedPrimitiveIndex]; const entityId = eachEntityId[entityIndex]; diff --git a/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js b/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js index 58732437a..a54caa4b4 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +++ b/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js @@ -141,7 +141,7 @@ function load(viewer, options, inflatedData, sceneModel) { // Primitive instanced by more than one entity, and has positions in Model-space - var geometryId = "geometry" + primitiveIndex; // These IDs are local to the VBOSceneModel + var geometryId = "geometry" + primitiveIndex; // These IDs are local to the SceneModel sceneModel.createGeometry({ id: geometryId, @@ -158,7 +158,7 @@ function load(viewer, options, inflatedData, sceneModel) { // Primitive is used only by one entity, and has positions pre-transformed into World-space - const meshId = primitiveIndex; // These IDs are local to the VBOSceneModel + const meshId = primitiveIndex; // These IDs are local to the SceneModel const entityIndex = batchedPrimitiveEntityIndexes[primitiveIndex]; const entityId = eachEntityId[entityIndex]; diff --git a/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js b/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js index 0e5cee4cc..302023b27 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +++ b/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js @@ -229,7 +229,7 @@ function load(viewer, options, inflatedData, sceneModel) { // Create mesh for multi-use primitive - create (or reuse) geometry, create mesh using that geometry - const geometryId = "geometry." + tileIndex + "." + primitiveIndex; // These IDs are local to the VBOSceneModel + const geometryId = "geometry." + tileIndex + "." + primitiveIndex; // These IDs are local to the SceneModel if (!geometryCreated[geometryId]) { @@ -237,7 +237,7 @@ function load(viewer, options, inflatedData, sceneModel) { id: geometryId, primitive: "triangles", positionsCompressed: primitivePositions, - normalsCompressed: primitiveNormals, + // normalsCompressed: primitiveNormals, indices: primitiveIndices, edgeIndices: primitiveEdgeIndices, positionsDecodeMatrix: reusedPrimitivesDecodeMatrix diff --git a/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js b/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js index 052171025..520982e58 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +++ b/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js @@ -283,7 +283,7 @@ function load(viewer, options, inflatedData, sceneModel) { const meshMatrixIndex = eachMeshMatricesPortion[meshIndex]; const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16); - const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the VBOSceneModel + const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the SceneModel if (!geometryCreated[geometryId]) { diff --git a/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js b/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js index 385192211..8e06b1ffb 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +++ b/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js @@ -341,7 +341,7 @@ function load(viewer, options, inflatedData, sceneModel) { const meshMatrixIndex = eachMeshMatricesPortion[meshIndex]; const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16); - const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the VBOSceneModel + const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the SceneModel let geometryArrays = geometryArraysCache[geometryId]; diff --git a/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js b/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js index d5b309e7c..e5cc54fec 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js +++ b/src/plugins/XKTLoaderPlugin/parsers/ParserV9.js @@ -294,7 +294,7 @@ function load(viewer, options, inflatedData, sceneModel) { const meshMatrixIndex = eachMeshMatricesPortion[meshIndex]; const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16); - const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the VBOSceneModel + const geometryId = "geometry." + tileIndex + "." + geometryIndex; // These IDs are local to the SceneModel let geometryArrays = geometryArraysCache[geometryId]; diff --git a/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js b/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js index e99343f00..05a54a215 100644 --- a/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +++ b/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js @@ -1,6727 +1,2 @@ - -/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.pako = {})); -}(this, (function (exports) { 'use strict'; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - /* eslint-disable space-unary-ops */ - - /* Public constants ==========================================================*/ - /* ===========================================================================*/ - - - //const Z_FILTERED = 1; - //const Z_HUFFMAN_ONLY = 2; - //const Z_RLE = 3; - const Z_FIXED$1 = 4; - //const Z_DEFAULT_STRATEGY = 0; - - /* Possible values of the data_type field (though see inflate()) */ - const Z_BINARY = 0; - const Z_TEXT = 1; - //const Z_ASCII = 1; // = Z_TEXT - const Z_UNKNOWN$1 = 2; - - /*============================================================================*/ - - - function zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } } - - // From zutil.h - - const STORED_BLOCK = 0; - const STATIC_TREES = 1; - const DYN_TREES = 2; - /* The three kinds of block type */ - - const MIN_MATCH$1 = 3; - const MAX_MATCH$1 = 258; - /* The minimum and maximum match lengths */ - - // From deflate.h - /* =========================================================================== - * Internal compression state. - */ - - const LENGTH_CODES$1 = 29; - /* number of length codes, not counting the special END_BLOCK code */ - - const LITERALS$1 = 256; - /* number of literal bytes 0..255 */ - - const L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1; - /* number of Literal or Length codes, including the END_BLOCK code */ - - const D_CODES$1 = 30; - /* number of distance codes */ - - const BL_CODES$1 = 19; - /* number of codes used to transfer the bit lengths */ - - const HEAP_SIZE$1 = 2 * L_CODES$1 + 1; - /* maximum heap size */ - - const MAX_BITS$1 = 15; - /* All codes must not exceed MAX_BITS bits */ - - const Buf_size = 16; - /* size of bit buffer in bi_buf */ - - - /* =========================================================================== - * Constants - */ - - const MAX_BL_BITS = 7; - /* Bit length codes must not exceed MAX_BL_BITS bits */ - - const END_BLOCK = 256; - /* end of block literal code */ - - const REP_3_6 = 16; - /* repeat previous bit length 3-6 times (2 bits of repeat count) */ - - const REPZ_3_10 = 17; - /* repeat a zero length 3-10 times (3 bits of repeat count) */ - - const REPZ_11_138 = 18; - /* repeat a zero length 11-138 times (7 bits of repeat count) */ - - /* eslint-disable comma-spacing,array-bracket-spacing */ - const extra_lbits = /* extra bits for each length code */ - new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]); - - const extra_dbits = /* extra bits for each distance code */ - new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]); - - const extra_blbits = /* extra bits for each bit length code */ - new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]); - - const bl_order = - new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]); - /* eslint-enable comma-spacing,array-bracket-spacing */ - - /* The lengths of the bit length codes are sent in order of decreasing - * probability, to avoid transmitting the lengths for unused bit length codes. - */ - - /* =========================================================================== - * Local data. These are initialized only once. - */ - - // We pre-fill arrays with 0 to avoid uninitialized gaps - - const DIST_CODE_LEN = 512; /* see definition of array dist_code below */ - - // !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1 - const static_ltree = new Array((L_CODES$1 + 2) * 2); - zero$1(static_ltree); - /* The static literal tree. Since the bit lengths are imposed, there is no - * need for the L_CODES extra codes used during heap construction. However - * The codes 286 and 287 are needed to build a canonical tree (see _tr_init - * below). - */ - - const static_dtree = new Array(D_CODES$1 * 2); - zero$1(static_dtree); - /* The static distance tree. (Actually a trivial tree since all codes use - * 5 bits.) - */ - - const _dist_code = new Array(DIST_CODE_LEN); - zero$1(_dist_code); - /* Distance codes. The first 256 values correspond to the distances - * 3 .. 258, the last 256 values correspond to the top 8 bits of - * the 15 bit distances. - */ - - const _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1); - zero$1(_length_code); - /* length code for each normalized match length (0 == MIN_MATCH) */ - - const base_length = new Array(LENGTH_CODES$1); - zero$1(base_length); - /* First normalized length for each code (0 = MIN_MATCH) */ - - const base_dist = new Array(D_CODES$1); - zero$1(base_dist); - /* First normalized distance for each code (0 = distance of 1) */ - - - function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { - - this.static_tree = static_tree; /* static tree or NULL */ - this.extra_bits = extra_bits; /* extra bits for each code or NULL */ - this.extra_base = extra_base; /* base index for extra_bits */ - this.elems = elems; /* max number of elements in the tree */ - this.max_length = max_length; /* max bit length for the codes */ - - // show if `static_tree` has data or dummy - needed for monomorphic objects - this.has_stree = static_tree && static_tree.length; - } - - - let static_l_desc; - let static_d_desc; - let static_bl_desc; - - - function TreeDesc(dyn_tree, stat_desc) { - this.dyn_tree = dyn_tree; /* the dynamic tree */ - this.max_code = 0; /* largest code with non zero frequency */ - this.stat_desc = stat_desc; /* the corresponding static tree */ - } - - - - const d_code = (dist) => { - - return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; - }; - - - /* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ - const put_short = (s, w) => { - // put_byte(s, (uch)((w) & 0xff)); - // put_byte(s, (uch)((ush)(w) >> 8)); - s.pending_buf[s.pending++] = (w) & 0xff; - s.pending_buf[s.pending++] = (w >>> 8) & 0xff; - }; - - - /* =========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ - const send_bits = (s, value, length) => { - - if (s.bi_valid > (Buf_size - length)) { - s.bi_buf |= (value << s.bi_valid) & 0xffff; - put_short(s, s.bi_buf); - s.bi_buf = value >> (Buf_size - s.bi_valid); - s.bi_valid += length - Buf_size; - } else { - s.bi_buf |= (value << s.bi_valid) & 0xffff; - s.bi_valid += length; - } - }; - - - const send_code = (s, c, tree) => { - - send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/); - }; - - - /* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ - const bi_reverse = (code, len) => { - - let res = 0; - do { - res |= code & 1; - code >>>= 1; - res <<= 1; - } while (--len > 0); - return res >>> 1; - }; - - - /* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ - const bi_flush = (s) => { - - if (s.bi_valid === 16) { - put_short(s, s.bi_buf); - s.bi_buf = 0; - s.bi_valid = 0; - - } else if (s.bi_valid >= 8) { - s.pending_buf[s.pending++] = s.bi_buf & 0xff; - s.bi_buf >>= 8; - s.bi_valid -= 8; - } - }; - - - /* =========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ - const gen_bitlen = (s, desc) => - // deflate_state *s; - // tree_desc *desc; /* the tree descriptor */ - { - const tree = desc.dyn_tree; - const max_code = desc.max_code; - const stree = desc.stat_desc.static_tree; - const has_stree = desc.stat_desc.has_stree; - const extra = desc.stat_desc.extra_bits; - const base = desc.stat_desc.extra_base; - const max_length = desc.stat_desc.max_length; - let h; /* heap index */ - let n, m; /* iterate over the tree elements */ - let bits; /* bit length */ - let xbits; /* extra bits */ - let f; /* frequency */ - let overflow = 0; /* number of elements with bit length too large */ - - for (bits = 0; bits <= MAX_BITS$1; bits++) { - s.bl_count[bits] = 0; - } - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */ - - for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) { - n = s.heap[h]; - bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1; - if (bits > max_length) { - bits = max_length; - overflow++; - } - tree[n * 2 + 1]/*.Len*/ = bits; - /* We overwrite tree[n].Dad which is no longer needed */ - - if (n > max_code) { continue; } /* not a leaf node */ - - s.bl_count[bits]++; - xbits = 0; - if (n >= base) { - xbits = extra[n - base]; - } - f = tree[n * 2]/*.Freq*/; - s.opt_len += f * (bits + xbits); - if (has_stree) { - s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits); - } - } - if (overflow === 0) { return; } - - // Trace((stderr,"\nbit length overflow\n")); - /* This happens for example on obj2 and pic of the Calgary corpus */ - - /* Find the first bit length which could increase: */ - do { - bits = max_length - 1; - while (s.bl_count[bits] === 0) { bits--; } - s.bl_count[bits]--; /* move one leaf down the tree */ - s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */ - s.bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits !== 0; bits--) { - n = s.bl_count[bits]; - while (n !== 0) { - m = s.heap[--h]; - if (m > max_code) { continue; } - if (tree[m * 2 + 1]/*.Len*/ !== bits) { - // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); - s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/; - tree[m * 2 + 1]/*.Len*/ = bits; - } - n--; - } - } - }; - - - /* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ - const gen_codes = (tree, max_code, bl_count) => - // ct_data *tree; /* the tree to decorate */ - // int max_code; /* largest code with non zero frequency */ - // ushf *bl_count; /* number of codes at each bit length */ - { - const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */ - let code = 0; /* running code value */ - let bits; /* bit index */ - let n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS$1; bits++) { - next_code[bits] = code = (code + bl_count[bits - 1]) << 1; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - //Assert (code + bl_count[MAX_BITS]-1 == (1< { - - let n; /* iterates over tree elements */ - let bits; /* bit counter */ - let length; /* length value */ - let code; /* code value */ - let dist; /* distance index */ - const bl_count = new Array(MAX_BITS$1 + 1); - /* number of codes at each bit length for an optimal tree */ - - // do check in _tr_init() - //if (static_init_done) return; - - /* For some embedded targets, global variables are not initialized: */ - /*#ifdef NO_INIT_GLOBAL_POINTERS - static_l_desc.static_tree = static_ltree; - static_l_desc.extra_bits = extra_lbits; - static_d_desc.static_tree = static_dtree; - static_d_desc.extra_bits = extra_dbits; - static_bl_desc.extra_bits = extra_blbits; - #endif*/ - - /* Initialize the mapping length (0..255) -> length code (0..28) */ - length = 0; - for (code = 0; code < LENGTH_CODES$1 - 1; code++) { - base_length[code] = length; - for (n = 0; n < (1 << extra_lbits[code]); n++) { - _length_code[length++] = code; - } - } - //Assert (length == 256, "tr_static_init: length != 256"); - /* Note that the length 255 (match length 258) can be represented - * in two different ways: code 284 + 5 bits or code 285, so we - * overwrite length_code[255] to use the best encoding: - */ - _length_code[length - 1] = code; - - /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ - dist = 0; - for (code = 0; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < (1 << extra_dbits[code]); n++) { - _dist_code[dist++] = code; - } - } - //Assert (dist == 256, "tr_static_init: dist != 256"); - dist >>= 7; /* from now on, all distances are divided by 128 */ - for (; code < D_CODES$1; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { - _dist_code[256 + dist++] = code; - } - } - //Assert (dist == 256, "tr_static_init: 256+dist != 512"); - - /* Construct the codes of the static literal tree */ - for (bits = 0; bits <= MAX_BITS$1; bits++) { - bl_count[bits] = 0; - } - - n = 0; - while (n <= 143) { - static_ltree[n * 2 + 1]/*.Len*/ = 8; - n++; - bl_count[8]++; - } - while (n <= 255) { - static_ltree[n * 2 + 1]/*.Len*/ = 9; - n++; - bl_count[9]++; - } - while (n <= 279) { - static_ltree[n * 2 + 1]/*.Len*/ = 7; - n++; - bl_count[7]++; - } - while (n <= 287) { - static_ltree[n * 2 + 1]/*.Len*/ = 8; - n++; - bl_count[8]++; - } - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - gen_codes(static_ltree, L_CODES$1 + 1, bl_count); - - /* The static distance tree is trivial: */ - for (n = 0; n < D_CODES$1; n++) { - static_dtree[n * 2 + 1]/*.Len*/ = 5; - static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5); - } - - // Now data ready and we can init static trees - static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1); - static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1); - static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS); - - //static_init_done = true; - }; - - - /* =========================================================================== - * Initialize a new block. - */ - const init_block = (s) => { - - let n; /* iterates over tree elements */ - - /* Initialize the trees. */ - for (n = 0; n < L_CODES$1; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; } - for (n = 0; n < D_CODES$1; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; } - for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; } - - s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1; - s.opt_len = s.static_len = 0; - s.last_lit = s.matches = 0; - }; - - - /* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ - const bi_windup = (s) => - { - if (s.bi_valid > 8) { - put_short(s, s.bi_buf); - } else if (s.bi_valid > 0) { - //put_byte(s, (Byte)s->bi_buf); - s.pending_buf[s.pending++] = s.bi_buf; - } - s.bi_buf = 0; - s.bi_valid = 0; - }; - - /* =========================================================================== - * Copy a stored block, storing first the length and its - * one's complement if requested. - */ - const copy_block = (s, buf, len, header) => - //DeflateState *s; - //charf *buf; /* the input data */ - //unsigned len; /* its length */ - //int header; /* true if block header must be written */ - { - bi_windup(s); /* align on byte boundary */ - - if (header) { - put_short(s, len); - put_short(s, ~len); - } - // while (len--) { - // put_byte(s, *buf++); - // } - s.pending_buf.set(s.window.subarray(buf, buf + len), s.pending); - s.pending += len; - }; - - /* =========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ - const smaller = (tree, n, m, depth) => { - - const _n2 = n * 2; - const _m2 = m * 2; - return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ || - (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m])); - }; - - /* =========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ - const pqdownheap = (s, tree, k) => - // deflate_state *s; - // ct_data *tree; /* the tree to restore */ - // int k; /* node to move down */ - { - const v = s.heap[k]; - let j = k << 1; /* left son of k */ - while (j <= s.heap_len) { - /* Set j to the smallest of the two sons: */ - if (j < s.heap_len && - smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { - j++; - } - /* Exit if v is smaller than both sons */ - if (smaller(tree, v, s.heap[j], s.depth)) { break; } - - /* Exchange v with the smallest son */ - s.heap[k] = s.heap[j]; - k = j; - - /* And continue down the tree, setting j to the left son of k */ - j <<= 1; - } - s.heap[k] = v; - }; - - - // inlined manually - // const SMALLEST = 1; - - /* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ - const compress_block = (s, ltree, dtree) => - // deflate_state *s; - // const ct_data *ltree; /* literal tree */ - // const ct_data *dtree; /* distance tree */ - { - let dist; /* distance of matched string */ - let lc; /* match length or unmatched char (if dist == 0) */ - let lx = 0; /* running index in l_buf */ - let code; /* the code to send */ - let extra; /* number of extra bits to send */ - - if (s.last_lit !== 0) { - do { - dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]); - lc = s.pending_buf[s.l_buf + lx]; - lx++; - - if (dist === 0) { - send_code(s, lc, ltree); /* send a literal byte */ - //Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra !== 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - //Assert (code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra !== 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, - // "pendingBuf overflow"); - - } while (lx < s.last_lit); - } - - send_code(s, END_BLOCK, ltree); - }; - - - /* =========================================================================== - * Construct one Huffman tree and assigns the code bit strings and lengths. - * Update the total bit length for the current block. - * IN assertion: the field freq is set for all tree elements. - * OUT assertions: the fields len and code are set to the optimal bit length - * and corresponding code. The length opt_len is updated; static_len is - * also updated if stree is not null. The field max_code is set. - */ - const build_tree = (s, desc) => - // deflate_state *s; - // tree_desc *desc; /* the tree descriptor */ - { - const tree = desc.dyn_tree; - const stree = desc.stat_desc.static_tree; - const has_stree = desc.stat_desc.has_stree; - const elems = desc.stat_desc.elems; - let n, m; /* iterate over heap elements */ - let max_code = -1; /* largest code with non zero frequency */ - let node; /* new node being created */ - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - s.heap_len = 0; - s.heap_max = HEAP_SIZE$1; - - for (n = 0; n < elems; n++) { - if (tree[n * 2]/*.Freq*/ !== 0) { - s.heap[++s.heap_len] = max_code = n; - s.depth[n] = 0; - - } else { - tree[n * 2 + 1]/*.Len*/ = 0; - } - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (s.heap_len < 2) { - node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0); - tree[node * 2]/*.Freq*/ = 1; - s.depth[node] = 0; - s.opt_len--; - - if (has_stree) { - s.static_len -= stree[node * 2 + 1]/*.Len*/; - } - /* node is 0 or 1 so it does not have extra bits */ - } - desc.max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); } - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - node = elems; /* next internal node of the tree */ - do { - //pqremove(s, tree, n); /* n = node of least frequency */ - /*** pqremove ***/ - n = s.heap[1/*SMALLEST*/]; - s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--]; - pqdownheap(s, tree, 1/*SMALLEST*/); - /***/ - - m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */ - - s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */ - s.heap[--s.heap_max] = m; - - /* Create a new node father of n and m */ - tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/; - s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; - tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node; - - /* and insert the new node in the heap */ - s.heap[1/*SMALLEST*/] = node++; - pqdownheap(s, tree, 1/*SMALLEST*/); - - } while (s.heap_len >= 2); - - s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - gen_bitlen(s, desc); - - /* The field len is now set, we can generate the bit codes */ - gen_codes(tree, max_code, s.bl_count); - }; - - - /* =========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. - */ - const scan_tree = (s, tree, max_code) => - // deflate_state *s; - // ct_data *tree; /* the tree to be scanned */ - // int max_code; /* and its largest code of non zero frequency */ - { - let n; /* iterates over all tree elements */ - let prevlen = -1; /* last emitted length */ - let curlen; /* length of current code */ - - let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ - - let count = 0; /* repeat count of the current code */ - let max_count = 7; /* max repeat count */ - let min_count = 4; /* min repeat count */ - - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */ - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; - - if (++count < max_count && curlen === nextlen) { - continue; - - } else if (count < min_count) { - s.bl_tree[curlen * 2]/*.Freq*/ += count; - - } else if (curlen !== 0) { - - if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; } - s.bl_tree[REP_3_6 * 2]/*.Freq*/++; - - } else if (count <= 10) { - s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++; - - } else { - s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++; - } - - count = 0; - prevlen = curlen; - - if (nextlen === 0) { - max_count = 138; - min_count = 3; - - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - - } else { - max_count = 7; - min_count = 4; - } - } - }; - - - /* =========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ - const send_tree = (s, tree, max_code) => - // deflate_state *s; - // ct_data *tree; /* the tree to be scanned */ - // int max_code; /* and its largest code of non zero frequency */ - { - let n; /* iterates over all tree elements */ - let prevlen = -1; /* last emitted length */ - let curlen; /* length of current code */ - - let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */ - - let count = 0; /* repeat count of the current code */ - let max_count = 7; /* max repeat count */ - let min_count = 4; /* min repeat count */ - - /* tree[max_code+1].Len = -1; */ /* guard already set */ - if (nextlen === 0) { - max_count = 138; - min_count = 3; - } - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[(n + 1) * 2 + 1]/*.Len*/; - - if (++count < max_count && curlen === nextlen) { - continue; - - } else if (count < min_count) { - do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); - - } else if (curlen !== 0) { - if (curlen !== prevlen) { - send_code(s, curlen, s.bl_tree); - count--; - } - //Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s.bl_tree); - send_bits(s, count - 3, 2); - - } else if (count <= 10) { - send_code(s, REPZ_3_10, s.bl_tree); - send_bits(s, count - 3, 3); - - } else { - send_code(s, REPZ_11_138, s.bl_tree); - send_bits(s, count - 11, 7); - } - - count = 0; - prevlen = curlen; - if (nextlen === 0) { - max_count = 138; - min_count = 3; - - } else if (curlen === nextlen) { - max_count = 6; - min_count = 3; - - } else { - max_count = 7; - min_count = 4; - } - } - }; - - - /* =========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ - const build_bl_tree = (s) => { - - let max_blindex; /* index of last bit length code of non zero freq */ - - /* Determine the bit length frequencies for literal and distance trees */ - scan_tree(s, s.dyn_ltree, s.l_desc.max_code); - scan_tree(s, s.dyn_dtree, s.d_desc.max_code); - - /* Build the bit length tree: */ - build_tree(s, s.bl_desc); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) { - if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) { - break; - } - } - /* Update opt_len to include the bit length tree and counts */ - s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; - //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", - // s->opt_len, s->static_len)); - - return max_blindex; - }; - - - /* =========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ - const send_all_trees = (s, lcodes, dcodes, blcodes) => - // deflate_state *s; - // int lcodes, dcodes, blcodes; /* number of codes for each tree */ - { - let rank; /* index in bl_order */ - - //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); - //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, - // "too many codes"); - //Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes - 1, 5); - send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ - for (rank = 0; rank < blcodes; rank++) { - //Tracev((stderr, "\nbl code %2d ", bl_order[rank])); - send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3); - } - //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - - send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */ - //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - - send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */ - //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); - }; - - - /* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "black list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. - */ - const detect_data_type = (s) => { - /* black_mask is the bit mask of black-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - let black_mask = 0xf3ffc07f; - let n; - - /* Check for non-textual ("black-listed") bytes. */ - for (n = 0; n <= 31; n++, black_mask >>>= 1) { - if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) { - return Z_BINARY; - } - } - - /* Check for textual ("white-listed") bytes. */ - if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 || - s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) { - return Z_TEXT; - } - for (n = 32; n < LITERALS$1; n++) { - if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) { - return Z_TEXT; - } - } - - /* There are no "black-listed" or "white-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; - }; - - - let static_init_done = false; - - /* =========================================================================== - * Initialize the tree data structures for a new zlib stream. - */ - const _tr_init$1 = (s) => - { - - if (!static_init_done) { - tr_static_init(); - static_init_done = true; - } - - s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); - s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); - s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); - - s.bi_buf = 0; - s.bi_valid = 0; - - /* Initialize the first block of the first file: */ - init_block(s); - }; - - - /* =========================================================================== - * Send a stored block - */ - const _tr_stored_block$1 = (s, buf, stored_len, last) => - //DeflateState *s; - //charf *buf; /* input block */ - //ulg stored_len; /* length of input block */ - //int last; /* one if this is the last block for a file */ - { - send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */ - copy_block(s, buf, stored_len, true); /* with header */ - }; - - - /* =========================================================================== - * Send one empty static block to give enough lookahead for inflate. - * This takes 10 bits, of which 7 may remain in the bit buffer. - */ - const _tr_align$1 = (s) => { - send_bits(s, STATIC_TREES << 1, 3); - send_code(s, END_BLOCK, static_ltree); - bi_flush(s); - }; - - - /* =========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. - */ - const _tr_flush_block$1 = (s, buf, stored_len, last) => - //DeflateState *s; - //charf *buf; /* input block, or NULL if too old */ - //ulg stored_len; /* length of input block */ - //int last; /* one if this is the last block for a file */ - { - let opt_lenb, static_lenb; /* opt_len and static_len in bytes */ - let max_blindex = 0; /* index of last bit length code of non zero freq */ - - /* Build the Huffman trees unless a stored block is forced */ - if (s.level > 0) { - - /* Check if the file is binary or text */ - if (s.strm.data_type === Z_UNKNOWN$1) { - s.strm.data_type = detect_data_type(s); - } - - /* Construct the literal and distance trees */ - build_tree(s, s.l_desc); - // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, - // s->static_len)); - - build_tree(s, s.d_desc); - // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, - // s->static_len)); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = build_bl_tree(s); - - /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s.opt_len + 3 + 7) >>> 3; - static_lenb = (s.static_len + 3 + 7) >>> 3; - - // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", - // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - // s->last_lit)); - - if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } - - } else { - // Assert(buf != (char*)0, "lost buf"); - opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ - } - - if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) { - /* 4: two words for the lengths */ - - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - _tr_stored_block$1(s, buf, stored_len, last); - - } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) { - - send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); - compress_block(s, static_ltree, static_dtree); - - } else { - send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); - send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); - compress_block(s, s.dyn_ltree, s.dyn_dtree); - } - // Assert (s->compressed_len == s->bits_sent, "bad compressed size"); - /* The above check is made mod 2^32, for files larger than 512 MB - * and uLong implemented on 32 bits. - */ - init_block(s); - - if (last) { - bi_windup(s); - } - // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - // s->compressed_len-7*last)); - }; - - /* =========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ - const _tr_tally$1 = (s, dist, lc) => - // deflate_state *s; - // unsigned dist; /* distance of matched string */ - // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ - { - //let out_length, in_length, dcode; - - s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff; - s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff; - - s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff; - s.last_lit++; - - if (dist === 0) { - /* lc is the unmatched char */ - s.dyn_ltree[lc * 2]/*.Freq*/++; - } else { - s.matches++; - /* Here, lc is the match length - MIN_MATCH */ - dist--; /* dist = match distance - 1 */ - //Assert((ush)dist < (ush)MAX_DIST(s) && - // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && - // (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - - s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++; - s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++; - } - - // (!) This block is disabled in zlib defaults, - // don't enable it for binary compatibility - - //#ifdef TRUNCATE_BLOCK - // /* Try to guess if it is profitable to stop the current block here */ - // if ((s.last_lit & 0x1fff) === 0 && s.level > 2) { - // /* Compute an upper bound for the compressed length */ - // out_length = s.last_lit*8; - // in_length = s.strstart - s.block_start; - // - // for (dcode = 0; dcode < D_CODES; dcode++) { - // out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]); - // } - // out_length >>>= 3; - // //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", - // // s->last_lit, in_length, out_length, - // // 100L - out_length*100L/in_length)); - // if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) { - // return true; - // } - // } - //#endif - - return (s.last_lit === s.lit_bufsize - 1); - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ - }; - - var _tr_init_1 = _tr_init$1; - var _tr_stored_block_1 = _tr_stored_block$1; - var _tr_flush_block_1 = _tr_flush_block$1; - var _tr_tally_1 = _tr_tally$1; - var _tr_align_1 = _tr_align$1; - - var trees = { - _tr_init: _tr_init_1, - _tr_stored_block: _tr_stored_block_1, - _tr_flush_block: _tr_flush_block_1, - _tr_tally: _tr_tally_1, - _tr_align: _tr_align_1 - }; - - // Note: adler32 takes 12% for level 0 and 2% for level 6. - // It isn't worth it to make additional optimizations as in original. - // Small size is preferable. - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - const adler32 = (adler, buf, len, pos) => { - let s1 = (adler & 0xffff) |0, - s2 = ((adler >>> 16) & 0xffff) |0, - n = 0; - - while (len !== 0) { - // Set limit ~ twice less than 5552, to keep - // s2 in 31-bits, because we force signed ints. - // in other case %= will fail. - n = len > 2000 ? 2000 : len; - len -= n; - - do { - s1 = (s1 + buf[pos++]) |0; - s2 = (s2 + s1) |0; - } while (--n); - - s1 %= 65521; - s2 %= 65521; - } - - return (s1 | (s2 << 16)) |0; - }; - - - var adler32_1 = adler32; - - // Note: we can't get significant speed boost here. - // So write code to minimize size - no pregenerated tables - // and array tools dependencies. - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - // Use ordinary array, since untyped makes no boost here - const makeTable = () => { - let c, table = []; - - for (var n = 0; n < 256; n++) { - c = n; - for (var k = 0; k < 8; k++) { - c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1)); - } - table[n] = c; - } - - return table; - }; - - // Create table on load. Just 255 signed longs. Not a problem. - const crcTable = new Uint32Array(makeTable()); - - - const crc32 = (crc, buf, len, pos) => { - const t = crcTable; - const end = pos + len; - - crc ^= -1; - - for (let i = pos; i < end; i++) { - crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF]; - } - - return (crc ^ (-1)); // >>> 0; - }; - - - var crc32_1 = crc32; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - var messages = { - 2: 'need dictionary', /* Z_NEED_DICT 2 */ - 1: 'stream end', /* Z_STREAM_END 1 */ - 0: '', /* Z_OK 0 */ - '-1': 'file error', /* Z_ERRNO (-1) */ - '-2': 'stream error', /* Z_STREAM_ERROR (-2) */ - '-3': 'data error', /* Z_DATA_ERROR (-3) */ - '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */ - '-5': 'buffer error', /* Z_BUF_ERROR (-5) */ - '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ - }; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - var constants$2 = { - - /* Allowed flush values; see deflate() and inflate() below for details */ - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_TREES: 6, - - /* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - Z_MEM_ERROR: -4, - Z_BUF_ERROR: -5, - //Z_VERSION_ERROR: -6, - - /* compression levels */ - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, - - - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, - - /* Possible values of the data_type field (though see inflate()) */ - Z_BINARY: 0, - Z_TEXT: 1, - //Z_ASCII: 1, // = Z_TEXT (deprecated) - Z_UNKNOWN: 2, - - /* The deflate compression method */ - Z_DEFLATED: 8 - //Z_NULL: null // Use -1 or null inline, depending on var type - }; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - const { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees; - - - - - /* Public constants ==========================================================*/ - /* ===========================================================================*/ - - const { - Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1, - Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$1, - Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1, - Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1, - Z_UNKNOWN, - Z_DEFLATED: Z_DEFLATED$2 - } = constants$2; - - /*============================================================================*/ - - - const MAX_MEM_LEVEL = 9; - /* Maximum value for memLevel in deflateInit2 */ - const MAX_WBITS$1 = 15; - /* 32K LZ77 window */ - const DEF_MEM_LEVEL = 8; - - - const LENGTH_CODES = 29; - /* number of length codes, not counting the special END_BLOCK code */ - const LITERALS = 256; - /* number of literal bytes 0..255 */ - const L_CODES = LITERALS + 1 + LENGTH_CODES; - /* number of Literal or Length codes, including the END_BLOCK code */ - const D_CODES = 30; - /* number of distance codes */ - const BL_CODES = 19; - /* number of codes used to transfer the bit lengths */ - const HEAP_SIZE = 2 * L_CODES + 1; - /* maximum heap size */ - const MAX_BITS = 15; - /* All codes must not exceed MAX_BITS bits */ - - const MIN_MATCH = 3; - const MAX_MATCH = 258; - const MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1); - - const PRESET_DICT = 0x20; - - const INIT_STATE = 42; - const EXTRA_STATE = 69; - const NAME_STATE = 73; - const COMMENT_STATE = 91; - const HCRC_STATE = 103; - const BUSY_STATE = 113; - const FINISH_STATE = 666; - - const BS_NEED_MORE = 1; /* block not completed, need more input or more output */ - const BS_BLOCK_DONE = 2; /* block flush performed */ - const BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */ - const BS_FINISH_DONE = 4; /* finish done, accept no more input or output */ - - const OS_CODE = 0x03; // Unix :) . Don't detect, use this default. - - const err = (strm, errorCode) => { - strm.msg = messages[errorCode]; - return errorCode; - }; - - const rank = (f) => { - return ((f) << 1) - ((f) > 4 ? 9 : 0); - }; - - const zero = (buf) => { - let len = buf.length; while (--len >= 0) { buf[len] = 0; } - }; - - - /* eslint-disable new-cap */ - let HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask; - // This hash causes less collisions, https://github.com/nodeca/pako/issues/135 - // But breaks binary compatibility - //let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask; - let HASH = HASH_ZLIB; - - /* ========================================================================= - * Flush as much pending output as possible. All deflate() output goes - * through this function so some applications may wish to modify it - * to avoid allocating a large strm->output buffer and copying into it. - * (See also read_buf()). - */ - const flush_pending = (strm) => { - const s = strm.state; - - //_tr_flush_bits(s); - let len = s.pending; - if (len > strm.avail_out) { - len = strm.avail_out; - } - if (len === 0) { return; } - - strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out); - strm.next_out += len; - s.pending_out += len; - strm.total_out += len; - strm.avail_out -= len; - s.pending -= len; - if (s.pending === 0) { - s.pending_out = 0; - } - }; - - - const flush_block_only = (s, last) => { - _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last); - s.block_start = s.strstart; - flush_pending(s.strm); - }; - - - const put_byte = (s, b) => { - s.pending_buf[s.pending++] = b; - }; - - - /* ========================================================================= - * Put a short in the pending buffer. The 16-bit value is put in MSB order. - * IN assertion: the stream state is correct and there is enough room in - * pending_buf. - */ - const putShortMSB = (s, b) => { - - // put_byte(s, (Byte)(b >> 8)); - // put_byte(s, (Byte)(b & 0xff)); - s.pending_buf[s.pending++] = (b >>> 8) & 0xff; - s.pending_buf[s.pending++] = b & 0xff; - }; - - - /* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->input buffer and copying from it. - * (See also flush_pending()). - */ - const read_buf = (strm, buf, start, size) => { - - let len = strm.avail_in; - - if (len > size) { len = size; } - if (len === 0) { return 0; } - - strm.avail_in -= len; - - // zmemcpy(buf, strm->next_in, len); - buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start); - if (strm.state.wrap === 1) { - strm.adler = adler32_1(strm.adler, buf, len, start); - } - - else if (strm.state.wrap === 2) { - strm.adler = crc32_1(strm.adler, buf, len, start); - } - - strm.next_in += len; - strm.total_in += len; - - return len; - }; - - - /* =========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - * OUT assertion: the match length is not greater than s->lookahead. - */ - const longest_match = (s, cur_match) => { - - let chain_length = s.max_chain_length; /* max hash chain length */ - let scan = s.strstart; /* current string */ - let match; /* matched string */ - let len; /* length of current match */ - let best_len = s.prev_length; /* best match length so far */ - let nice_match = s.nice_match; /* stop if match long enough */ - const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ? - s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/; - - const _win = s.window; // shortcut - - const wmask = s.w_mask; - const prev = s.prev; - - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - - const strend = s.strstart + MAX_MATCH; - let scan_end1 = _win[scan + best_len - 1]; - let scan_end = _win[scan + best_len]; - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - /* Do not waste too much time if we already have a good match: */ - if (s.prev_length >= s.good_match) { - chain_length >>= 2; - } - /* Do not look for matches beyond the end of the input. This is necessary - * to make deflate deterministic. - */ - if (nice_match > s.lookahead) { nice_match = s.lookahead; } - - // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - do { - // Assert(cur_match < s->strstart, "no future"); - match = cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2. Note that the checks below - * for insufficient lookahead only occur occasionally for performance - * reasons. Therefore uninitialized memory will be accessed, and - * conditional jumps will be made that depend on those values. - * However the length of the match is limited to the lookahead, so - * the output of deflate is not affected by the uninitialized values. - */ - - if (_win[match + best_len] !== scan_end || - _win[match + best_len - 1] !== scan_end1 || - _win[match] !== _win[scan] || - _win[++match] !== _win[scan + 1]) { - continue; - } - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2; - match++; - // Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - /*jshint noempty:false*/ - } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && - scan < strend); - - // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - len = MAX_MATCH - (strend - scan); - scan = strend - MAX_MATCH; - - if (len > best_len) { - s.match_start = cur_match; - best_len = len; - if (len >= nice_match) { - break; - } - scan_end1 = _win[scan + best_len - 1]; - scan_end = _win[scan + best_len]; - } - } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); - - if (best_len <= s.lookahead) { - return best_len; - } - return s.lookahead; - }; - - - /* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ - const fill_window = (s) => { - - const _w_size = s.w_size; - let p, n, m, more, str; - - //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); - - do { - more = s.window_size - s.lookahead - s.strstart; - - // JS ints have 32 bit, block below not needed - /* Deal with !@#$% 64K limit: */ - //if (sizeof(int) <= 2) { - // if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - // more = wsize; - // - // } else if (more == (unsigned)(-1)) { - // /* Very unlikely, but possible on 16 bit machine if - // * strstart == 0 && lookahead == 1 (input done a byte at time) - // */ - // more--; - // } - //} - - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { - - s.window.set(s.window.subarray(_w_size, _w_size + _w_size), 0); - s.match_start -= _w_size; - s.strstart -= _w_size; - /* we now have strstart >= MAX_DIST */ - s.block_start -= _w_size; - - /* Slide the hash table (could be avoided with 32 bit values - at the expense of memory usage). We slide even when level == 0 - to keep the hash table consistent if we switch back to level > 0 - later. (Using level 0 permanently is not an optimal usage of - zlib, so we don't care about this pathological case.) - */ - - n = s.hash_size; - p = n; - - do { - m = s.head[--p]; - s.head[p] = (m >= _w_size ? m - _w_size : 0); - } while (--n); - - n = _w_size; - p = n; - - do { - m = s.prev[--p]; - s.prev[p] = (m >= _w_size ? m - _w_size : 0); - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); - - more += _w_size; - } - if (s.strm.avail_in === 0) { - break; - } - - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - //Assert(more >= 2, "more < 2"); - n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); - s.lookahead += n; - - /* Initialize the hash value now that we have some input: */ - if (s.lookahead + s.insert >= MIN_MATCH) { - str = s.strstart - s.insert; - s.ins_h = s.window[str]; - - /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */ - s.ins_h = HASH(s, s.ins_h, s.window[str + 1]); - //#if MIN_MATCH != 3 - // Call update_hash() MIN_MATCH-3 more times - //#endif - while (s.insert) { - /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ - s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); - - s.prev[str & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = str; - str++; - s.insert--; - if (s.lookahead + s.insert < MIN_MATCH) { - break; - } - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); - - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ - // if (s.high_water < s.window_size) { - // const curr = s.strstart + s.lookahead; - // let init = 0; - // - // if (s.high_water < curr) { - // /* Previous high water mark below current data -- zero WIN_INIT - // * bytes or up to end of window, whichever is less. - // */ - // init = s.window_size - curr; - // if (init > WIN_INIT) - // init = WIN_INIT; - // zmemzero(s->window + curr, (unsigned)init); - // s->high_water = curr + init; - // } - // else if (s->high_water < (ulg)curr + WIN_INIT) { - // /* High water mark at or above current data, but below current data - // * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up - // * to end of window, whichever is less. - // */ - // init = (ulg)curr + WIN_INIT - s->high_water; - // if (init > s->window_size - s->high_water) - // init = s->window_size - s->high_water; - // zmemzero(s->window + s->high_water, (unsigned)init); - // s->high_water += init; - // } - // } - // - // Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, - // "not enough room for search"); - }; - - /* =========================================================================== - * Copy without compression as much as possible from the input stream, return - * the current block state. - * This function does not insert new strings in the dictionary since - * uncompressible data is probably not useful. This function is used - * only for the level=0 compression option. - * NOTE: this function should be optimized to avoid extra copying from - * window to pending_buf. - */ - const deflate_stored = (s, flush) => { - - /* Stored blocks are limited to 0xffff bytes, pending_buf is limited - * to pending_buf_size, and each stored block has a 5 byte header: - */ - let max_block_size = 0xffff; - - if (max_block_size > s.pending_buf_size - 5) { - max_block_size = s.pending_buf_size - 5; - } - - /* Copy as much as possible from input to output: */ - for (;;) { - /* Fill the window as much as possible: */ - if (s.lookahead <= 1) { - - //Assert(s->strstart < s->w_size+MAX_DIST(s) || - // s->block_start >= (long)s->w_size, "slide too late"); - // if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) || - // s.block_start >= s.w_size)) { - // throw new Error("slide too late"); - // } - - fill_window(s); - if (s.lookahead === 0 && flush === Z_NO_FLUSH$2) { - return BS_NEED_MORE; - } - - if (s.lookahead === 0) { - break; - } - /* flush the current block */ - } - //Assert(s->block_start >= 0L, "block gone"); - // if (s.block_start < 0) throw new Error("block gone"); - - s.strstart += s.lookahead; - s.lookahead = 0; - - /* Emit a stored block if pending_buf will be full: */ - const max_start = s.block_start + max_block_size; - - if (s.strstart === 0 || s.strstart >= max_start) { - /* strstart == 0 is possible when wraparound on 16-bit machine */ - s.lookahead = s.strstart - max_start; - s.strstart = max_start; - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - - - } - /* Flush if we may have to slide, otherwise block_start may become - * negative and the data will be gone: - */ - if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - } - - s.insert = 0; - - if (flush === Z_FINISH$3) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; - } - - if (s.strstart > s.block_start) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - - return BS_NEED_MORE; - }; - - /* =========================================================================== - * Compress as much as possible from the input stream, return the current - * block state. - * This function does not perform lazy evaluation of matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ - const deflate_fast = (s, flush) => { - - let hash_head; /* head of the hash chain */ - let bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { - break; /* flush the current block */ - } - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = 0/*NIL*/; - if (s.lookahead >= MIN_MATCH) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s.match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - } - if (s.match_length >= MIN_MATCH) { - // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only - - /*** _tr_tally_dist(s, s.strstart - s.match_start, - s.match_length - MIN_MATCH, bflush); ***/ - bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); - - s.lookahead -= s.match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ - if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) { - s.match_length--; /* string at strstart already in table */ - do { - s.strstart++; - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. - */ - } while (--s.match_length !== 0); - s.strstart++; - } else - { - s.strstart += s.match_length; - s.match_length = 0; - s.ins_h = s.window[s.strstart]; - /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */ - s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]); - - //#if MIN_MATCH != 3 - // Call UPDATE_HASH() MIN_MATCH-3 more times - //#endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } - } else { - /* No match, output a literal byte */ - //Tracevv((stderr,"%c", s.window[s.strstart])); - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = _tr_tally(s, 0, s.window[s.strstart]); - - s.lookahead--; - s.strstart++; - } - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - } - s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1); - if (flush === Z_FINISH$3) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; - } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - return BS_BLOCK_DONE; - }; - - /* =========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ - const deflate_slow = (s, flush) => { - - let hash_head; /* head of hash chain */ - let bflush; /* set if current block must be flushed */ - - let max_insert; - - /* Process the input block. */ - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s.lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { break; } /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = 0/*NIL*/; - if (s.lookahead >= MIN_MATCH) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } - - /* Find the longest match, discarding those <= prev_length. - */ - s.prev_length = s.match_length; - s.prev_match = s.match_start; - s.match_length = MIN_MATCH - 1; - - if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match && - s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s.match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - - if (s.match_length <= 5 && - (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) { - - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - s.match_length = MIN_MATCH - 1; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { - max_insert = s.strstart + s.lookahead - MIN_MATCH; - /* Do not insert strings in hash table beyond this. */ - - //check_match(s, s.strstart-1, s.prev_match, s.prev_length); - - /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match, - s.prev_length - MIN_MATCH, bflush);***/ - bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not - * enough lookahead, the last two strings are not inserted in - * the hash table. - */ - s.lookahead -= s.prev_length - 1; - s.prev_length -= 2; - do { - if (++s.strstart <= max_insert) { - /*** INSERT_STRING(s, s.strstart, hash_head); ***/ - s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]); - hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h]; - s.head[s.ins_h] = s.strstart; - /***/ - } - } while (--s.prev_length !== 0); - s.match_available = 0; - s.match_length = MIN_MATCH - 1; - s.strstart++; - - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - - } else if (s.match_available) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - //Tracevv((stderr,"%c", s->window[s->strstart-1])); - /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ - bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); - - if (bflush) { - /*** FLUSH_BLOCK_ONLY(s, 0) ***/ - flush_block_only(s, false); - /***/ - } - s.strstart++; - s.lookahead--; - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - s.match_available = 1; - s.strstart++; - s.lookahead--; - } - } - //Assert (flush != Z_NO_FLUSH, "no flush?"); - if (s.match_available) { - //Tracevv((stderr,"%c", s->window[s->strstart-1])); - /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/ - bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); - - s.match_available = 0; - } - s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; - if (flush === Z_FINISH$3) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; - } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - - return BS_BLOCK_DONE; - }; - - - /* =========================================================================== - * For Z_RLE, simply look for runs of bytes, generate matches only of distance - * one. Do not maintain a hash table. (It will be regenerated if this run of - * deflate switches away from Z_RLE.) - */ - const deflate_rle = (s, flush) => { - - let bflush; /* set if current block must be flushed */ - let prev; /* byte at distance one to match */ - let scan, strend; /* scan goes up to strend for length of run */ - - const _win = s.window; - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the longest run, plus one for the unrolled loop. - */ - if (s.lookahead <= MAX_MATCH) { - fill_window(s); - if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) { - return BS_NEED_MORE; - } - if (s.lookahead === 0) { break; } /* flush the current block */ - } - - /* See how many times the previous byte repeats */ - s.match_length = 0; - if (s.lookahead >= MIN_MATCH && s.strstart > 0) { - scan = s.strstart - 1; - prev = _win[scan]; - if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { - strend = s.strstart + MAX_MATCH; - do { - /*jshint noempty:false*/ - } while (prev === _win[++scan] && prev === _win[++scan] && - prev === _win[++scan] && prev === _win[++scan] && - prev === _win[++scan] && prev === _win[++scan] && - prev === _win[++scan] && prev === _win[++scan] && - scan < strend); - s.match_length = MAX_MATCH - (strend - scan); - if (s.match_length > s.lookahead) { - s.match_length = s.lookahead; - } - } - //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); - } - - /* Emit match if have run of MIN_MATCH or longer, else emit literal */ - if (s.match_length >= MIN_MATCH) { - //check_match(s, s.strstart, s.strstart - 1, s.match_length); - - /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/ - bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH); - - s.lookahead -= s.match_length; - s.strstart += s.match_length; - s.match_length = 0; - } else { - /* No match, output a literal byte */ - //Tracevv((stderr,"%c", s->window[s->strstart])); - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = _tr_tally(s, 0, s.window[s.strstart]); - - s.lookahead--; - s.strstart++; - } - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - } - s.insert = 0; - if (flush === Z_FINISH$3) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; - } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - return BS_BLOCK_DONE; - }; - - /* =========================================================================== - * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. - * (It will be regenerated if this run of deflate switches away from Huffman.) - */ - const deflate_huff = (s, flush) => { - - let bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we have a literal to write. */ - if (s.lookahead === 0) { - fill_window(s); - if (s.lookahead === 0) { - if (flush === Z_NO_FLUSH$2) { - return BS_NEED_MORE; - } - break; /* flush the current block */ - } - } - - /* Output a literal byte */ - s.match_length = 0; - //Tracevv((stderr,"%c", s->window[s->strstart])); - /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/ - bflush = _tr_tally(s, 0, s.window[s.strstart]); - s.lookahead--; - s.strstart++; - if (bflush) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - } - s.insert = 0; - if (flush === Z_FINISH$3) { - /*** FLUSH_BLOCK(s, 1); ***/ - flush_block_only(s, true); - if (s.strm.avail_out === 0) { - return BS_FINISH_STARTED; - } - /***/ - return BS_FINISH_DONE; - } - if (s.last_lit) { - /*** FLUSH_BLOCK(s, 0); ***/ - flush_block_only(s, false); - if (s.strm.avail_out === 0) { - return BS_NEED_MORE; - } - /***/ - } - return BS_BLOCK_DONE; - }; - - /* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ - function Config(good_length, max_lazy, nice_length, max_chain, func) { - - this.good_length = good_length; - this.max_lazy = max_lazy; - this.nice_length = nice_length; - this.max_chain = max_chain; - this.func = func; - } - - const configuration_table = [ - /* good lazy nice chain */ - new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ - new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ - new Config(4, 5, 16, 8, deflate_fast), /* 2 */ - new Config(4, 6, 32, 32, deflate_fast), /* 3 */ - - new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ - new Config(8, 16, 32, 32, deflate_slow), /* 5 */ - new Config(8, 16, 128, 128, deflate_slow), /* 6 */ - new Config(8, 32, 128, 256, deflate_slow), /* 7 */ - new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ - new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ - ]; - - - /* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ - const lm_init = (s) => { - - s.window_size = 2 * s.w_size; - - /*** CLEAR_HASH(s); ***/ - zero(s.head); // Fill with NIL (= 0); - - /* Set the default configuration parameters: - */ - s.max_lazy_match = configuration_table[s.level].max_lazy; - s.good_match = configuration_table[s.level].good_length; - s.nice_match = configuration_table[s.level].nice_length; - s.max_chain_length = configuration_table[s.level].max_chain; - - s.strstart = 0; - s.block_start = 0; - s.lookahead = 0; - s.insert = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - s.ins_h = 0; - }; - - - function DeflateState() { - this.strm = null; /* pointer back to this zlib stream */ - this.status = 0; /* as the name implies */ - this.pending_buf = null; /* output still pending */ - this.pending_buf_size = 0; /* size of pending_buf */ - this.pending_out = 0; /* next pending byte to output to the stream */ - this.pending = 0; /* nb of bytes in the pending buffer */ - this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ - this.gzhead = null; /* gzip header information to write */ - this.gzindex = 0; /* where in extra, name, or comment */ - this.method = Z_DEFLATED$2; /* can only be DEFLATED */ - this.last_flush = -1; /* value of flush param for previous deflate call */ - - this.w_size = 0; /* LZ77 window size (32K by default) */ - this.w_bits = 0; /* log2(w_size) (8..16) */ - this.w_mask = 0; /* w_size - 1 */ - - this.window = null; - /* Sliding window. Input bytes are read into the second half of the window, - * and move to the first half later to keep a dictionary of at least wSize - * bytes. With this organization, matches are limited to a distance of - * wSize-MAX_MATCH bytes, but this ensures that IO is always - * performed with a length multiple of the block size. - */ - - this.window_size = 0; - /* Actual size of window: 2*wSize, except when the user input buffer - * is directly used as sliding window. - */ - - this.prev = null; - /* Link to older string with same hash index. To limit the size of this - * array to 64K, this link is maintained only for the last 32K strings. - * An index in this array is thus a window index modulo 32K. - */ - - this.head = null; /* Heads of the hash chains or NIL. */ - - this.ins_h = 0; /* hash index of string to be inserted */ - this.hash_size = 0; /* number of elements in hash table */ - this.hash_bits = 0; /* log2(hash_size) */ - this.hash_mask = 0; /* hash_size-1 */ - - this.hash_shift = 0; - /* Number of bits by which ins_h must be shifted at each input - * step. It must be such that after MIN_MATCH steps, the oldest - * byte no longer takes part in the hash key, that is: - * hash_shift * MIN_MATCH >= hash_bits - */ - - this.block_start = 0; - /* Window position at the beginning of the current output block. Gets - * negative when the window is moved backwards. - */ - - this.match_length = 0; /* length of best match */ - this.prev_match = 0; /* previous match */ - this.match_available = 0; /* set if previous match exists */ - this.strstart = 0; /* start of string to insert */ - this.match_start = 0; /* start of matching string */ - this.lookahead = 0; /* number of valid bytes ahead in window */ - - this.prev_length = 0; - /* Length of the best match at previous step. Matches not greater than this - * are discarded. This is used in the lazy match evaluation. - */ - - this.max_chain_length = 0; - /* To speed up deflation, hash chains are never searched beyond this - * length. A higher limit improves compression ratio but degrades the - * speed. - */ - - this.max_lazy_match = 0; - /* Attempt to find a better match only when the current match is strictly - * smaller than this value. This mechanism is used only for compression - * levels >= 4. - */ - // That's alias to max_lazy_match, don't use directly - //this.max_insert_length = 0; - /* Insert new strings in the hash table only if the match length is not - * greater than this length. This saves time but degrades compression. - * max_insert_length is used only for compression levels <= 3. - */ - - this.level = 0; /* compression level (1..9) */ - this.strategy = 0; /* favor or force Huffman coding*/ - - this.good_match = 0; - /* Use a faster search when the previous match is longer than this */ - - this.nice_match = 0; /* Stop searching when current match exceeds this */ - - /* used by trees.c: */ - - /* Didn't use ct_data typedef below to suppress compiler warning */ - - // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ - // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ - // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ - - // Use flat array of DOUBLE size, with interleaved fata, - // because JS does not support effective - this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2); - this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2); - this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2); - zero(this.dyn_ltree); - zero(this.dyn_dtree); - zero(this.bl_tree); - - this.l_desc = null; /* desc. for literal tree */ - this.d_desc = null; /* desc. for distance tree */ - this.bl_desc = null; /* desc. for bit length tree */ - - //ush bl_count[MAX_BITS+1]; - this.bl_count = new Uint16Array(MAX_BITS + 1); - /* number of codes at each bit length for an optimal tree */ - - //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ - this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */ - zero(this.heap); - - this.heap_len = 0; /* number of elements in the heap */ - this.heap_max = 0; /* element of largest frequency */ - /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. - * The same heap array is used to build all trees. - */ - - this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1]; - zero(this.depth); - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ - - this.l_buf = 0; /* buffer index for literals or lengths */ - - this.lit_bufsize = 0; - /* Size of match buffer for literals/lengths. There are 4 reasons for - * limiting lit_bufsize to 64K: - * - frequencies can be kept in 16 bit counters - * - if compression is not successful for the first block, all input - * data is still in the window so we can still emit a stored block even - * when input comes from standard input. (This can also be done for - * all blocks if lit_bufsize is not greater than 32K.) - * - if compression is not successful for a file smaller than 64K, we can - * even emit a stored file instead of a stored block (saving 5 bytes). - * This is applicable only for zip (not gzip or zlib). - * - creating new Huffman trees less frequently may not provide fast - * adaptation to changes in the input data statistics. (Take for - * example a binary file with poorly compressible code followed by - * a highly compressible string table.) Smaller buffer sizes give - * fast adaptation but have of course the overhead of transmitting - * trees more frequently. - * - I can't count above 4 - */ - - this.last_lit = 0; /* running index in l_buf */ - - this.d_buf = 0; - /* Buffer index for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ - - this.opt_len = 0; /* bit length of current block with optimal trees */ - this.static_len = 0; /* bit length of current block with static trees */ - this.matches = 0; /* number of string matches in current block */ - this.insert = 0; /* bytes at end of window left to insert */ - - - this.bi_buf = 0; - /* Output buffer. bits are inserted starting at the bottom (least - * significant bits). - */ - this.bi_valid = 0; - /* Number of valid bits in bi_buf. All bits above the last valid bit - * are always zero. - */ - - // Used for window memory init. We safely ignore it for JS. That makes - // sense only for pointers and memory check tools. - //this.high_water = 0; - /* High water mark offset in window for initialized bytes -- bytes above - * this are set to zero in order to avoid memory check warnings when - * longest match routines access bytes past the input. This is then - * updated to the new high water mark. - */ - } - - - const deflateResetKeep = (strm) => { - - if (!strm || !strm.state) { - return err(strm, Z_STREAM_ERROR$2); - } - - strm.total_in = strm.total_out = 0; - strm.data_type = Z_UNKNOWN; - - const s = strm.state; - s.pending = 0; - s.pending_out = 0; - - if (s.wrap < 0) { - s.wrap = -s.wrap; - /* was made negative by deflate(..., Z_FINISH); */ - } - s.status = (s.wrap ? INIT_STATE : BUSY_STATE); - strm.adler = (s.wrap === 2) ? - 0 // crc32(0, Z_NULL, 0) - : - 1; // adler32(0, Z_NULL, 0) - s.last_flush = Z_NO_FLUSH$2; - _tr_init(s); - return Z_OK$3; - }; - - - const deflateReset = (strm) => { - - const ret = deflateResetKeep(strm); - if (ret === Z_OK$3) { - lm_init(strm.state); - } - return ret; - }; - - - const deflateSetHeader = (strm, head) => { - - if (!strm || !strm.state) { return Z_STREAM_ERROR$2; } - if (strm.state.wrap !== 2) { return Z_STREAM_ERROR$2; } - strm.state.gzhead = head; - return Z_OK$3; - }; - - - const deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => { - - if (!strm) { // === Z_NULL - return Z_STREAM_ERROR$2; - } - let wrap = 1; - - if (level === Z_DEFAULT_COMPRESSION$1) { - level = 6; - } - - if (windowBits < 0) { /* suppress zlib wrapper */ - wrap = 0; - windowBits = -windowBits; - } - - else if (windowBits > 15) { - wrap = 2; /* write gzip wrapper instead */ - windowBits -= 16; - } - - - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 || - windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || - strategy < 0 || strategy > Z_FIXED) { - return err(strm, Z_STREAM_ERROR$2); - } - - - if (windowBits === 8) { - windowBits = 9; - } - /* until 256-byte window bug fixed */ - - const s = new DeflateState(); - - strm.state = s; - s.strm = strm; - - s.wrap = wrap; - s.gzhead = null; - s.w_bits = windowBits; - s.w_size = 1 << s.w_bits; - s.w_mask = s.w_size - 1; - - s.hash_bits = memLevel + 7; - s.hash_size = 1 << s.hash_bits; - s.hash_mask = s.hash_size - 1; - s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); - - s.window = new Uint8Array(s.w_size * 2); - s.head = new Uint16Array(s.hash_size); - s.prev = new Uint16Array(s.w_size); - - // Don't need mem init magic for JS. - //s.high_water = 0; /* nothing written to s->window yet */ - - s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - - s.pending_buf_size = s.lit_bufsize * 4; - - //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); - //s->pending_buf = (uchf *) overlay; - s.pending_buf = new Uint8Array(s.pending_buf_size); - - // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`) - //s->d_buf = overlay + s->lit_bufsize/sizeof(ush); - s.d_buf = 1 * s.lit_bufsize; - - //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; - s.l_buf = (1 + 2) * s.lit_bufsize; - - s.level = level; - s.strategy = strategy; - s.method = method; - - return deflateReset(strm); - }; - - const deflateInit = (strm, level) => { - - return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1); - }; - - - const deflate$2 = (strm, flush) => { - - let beg, val; // for gzip header write only - - if (!strm || !strm.state || - flush > Z_BLOCK$1 || flush < 0) { - return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2; - } - - const s = strm.state; - - if (!strm.output || - (!strm.input && strm.avail_in !== 0) || - (s.status === FINISH_STATE && flush !== Z_FINISH$3)) { - return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2); - } - - s.strm = strm; /* just in case */ - const old_flush = s.last_flush; - s.last_flush = flush; - - /* Write the header */ - if (s.status === INIT_STATE) { - - if (s.wrap === 2) { // GZIP header - strm.adler = 0; //crc32(0L, Z_NULL, 0); - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (!s.gzhead) { // s->gzhead == Z_NULL - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s.level === 9 ? 2 : - (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? - 4 : 0)); - put_byte(s, OS_CODE); - s.status = BUSY_STATE; - } - else { - put_byte(s, (s.gzhead.text ? 1 : 0) + - (s.gzhead.hcrc ? 2 : 0) + - (!s.gzhead.extra ? 0 : 4) + - (!s.gzhead.name ? 0 : 8) + - (!s.gzhead.comment ? 0 : 16) - ); - put_byte(s, s.gzhead.time & 0xff); - put_byte(s, (s.gzhead.time >> 8) & 0xff); - put_byte(s, (s.gzhead.time >> 16) & 0xff); - put_byte(s, (s.gzhead.time >> 24) & 0xff); - put_byte(s, s.level === 9 ? 2 : - (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? - 4 : 0)); - put_byte(s, s.gzhead.os & 0xff); - if (s.gzhead.extra && s.gzhead.extra.length) { - put_byte(s, s.gzhead.extra.length & 0xff); - put_byte(s, (s.gzhead.extra.length >> 8) & 0xff); - } - if (s.gzhead.hcrc) { - strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0); - } - s.gzindex = 0; - s.status = EXTRA_STATE; - } - } - else // DEFLATE header - { - let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8; - let level_flags = -1; - - if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { - level_flags = 0; - } else if (s.level < 6) { - level_flags = 1; - } else if (s.level === 6) { - level_flags = 2; - } else { - level_flags = 3; - } - header |= (level_flags << 6); - if (s.strstart !== 0) { header |= PRESET_DICT; } - header += 31 - (header % 31); - - s.status = BUSY_STATE; - putShortMSB(s, header); - - /* Save the adler32 of the preset dictionary: */ - if (s.strstart !== 0) { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 0xffff); - } - strm.adler = 1; // adler32(0L, Z_NULL, 0); - } - } - - //#ifdef GZIP - if (s.status === EXTRA_STATE) { - if (s.gzhead.extra/* != Z_NULL*/) { - beg = s.pending; /* start of bytes to update crc */ - - while (s.gzindex < (s.gzhead.extra.length & 0xffff)) { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - break; - } - } - put_byte(s, s.gzhead.extra[s.gzindex] & 0xff); - s.gzindex++; - } - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (s.gzindex === s.gzhead.extra.length) { - s.gzindex = 0; - s.status = NAME_STATE; - } - } - else { - s.status = NAME_STATE; - } - } - if (s.status === NAME_STATE) { - if (s.gzhead.name/* != Z_NULL*/) { - beg = s.pending; /* start of bytes to update crc */ - //int val; - - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - // JS specific: little magic to add zero terminator to end of string - if (s.gzindex < s.gzhead.name.length) { - val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); - - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.gzindex = 0; - s.status = COMMENT_STATE; - } - } - else { - s.status = COMMENT_STATE; - } - } - if (s.status === COMMENT_STATE) { - if (s.gzhead.comment/* != Z_NULL*/) { - beg = s.pending; /* start of bytes to update crc */ - //int val; - - do { - if (s.pending === s.pending_buf_size) { - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); - } - flush_pending(strm); - beg = s.pending; - if (s.pending === s.pending_buf_size) { - val = 1; - break; - } - } - // JS specific: little magic to add zero terminator to end of string - if (s.gzindex < s.gzhead.comment.length) { - val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff; - } else { - val = 0; - } - put_byte(s, val); - } while (val !== 0); - - if (s.gzhead.hcrc && s.pending > beg) { - strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg); - } - if (val === 0) { - s.status = HCRC_STATE; - } - } - else { - s.status = HCRC_STATE; - } - } - if (s.status === HCRC_STATE) { - if (s.gzhead.hcrc) { - if (s.pending + 2 > s.pending_buf_size) { - flush_pending(strm); - } - if (s.pending + 2 <= s.pending_buf_size) { - put_byte(s, strm.adler & 0xff); - put_byte(s, (strm.adler >> 8) & 0xff); - strm.adler = 0; //crc32(0L, Z_NULL, 0); - s.status = BUSY_STATE; - } - } - else { - s.status = BUSY_STATE; - } - } - //#endif - - /* Flush as much pending output as possible */ - if (s.pending !== 0) { - flush_pending(strm); - if (strm.avail_out === 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ - s.last_flush = -1; - return Z_OK$3; - } - - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUF_ERROR. - */ - } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && - flush !== Z_FINISH$3) { - return err(strm, Z_BUF_ERROR$1); - } - - /* User must not provide more input after the first FINISH: */ - if (s.status === FINISH_STATE && strm.avail_in !== 0) { - return err(strm, Z_BUF_ERROR$1); - } - - /* Start a new block or continue the current one. - */ - if (strm.avail_in !== 0 || s.lookahead !== 0 || - (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) { - let bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) : - (s.strategy === Z_RLE ? deflate_rle(s, flush) : - configuration_table[s.level].func(s, flush)); - - if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { - s.status = FINISH_STATE; - } - if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { - if (strm.avail_out === 0) { - s.last_flush = -1; - /* avoid BUF_ERROR next call, see above */ - } - return Z_OK$3; - /* If flush != Z_NO_FLUSH && avail_out == 0, the next call - * of deflate should use the same flush parameter to make sure - * that the flush is complete. So we don't have to output an - * empty block here, this will be done at next call. This also - * ensures that for a very small output buffer, we emit at most - * one empty block. - */ - } - if (bstate === BS_BLOCK_DONE) { - if (flush === Z_PARTIAL_FLUSH) { - _tr_align(s); - } - else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */ - - _tr_stored_block(s, 0, 0, false); - /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sync(). - */ - if (flush === Z_FULL_FLUSH$1) { - /*** CLEAR_HASH(s); ***/ /* forget history */ - zero(s.head); // Fill with NIL (= 0); - - if (s.lookahead === 0) { - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - } - } - flush_pending(strm); - if (strm.avail_out === 0) { - s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */ - return Z_OK$3; - } - } - } - //Assert(strm->avail_out > 0, "bug2"); - //if (strm.avail_out <= 0) { throw new Error("bug2");} - - if (flush !== Z_FINISH$3) { return Z_OK$3; } - if (s.wrap <= 0) { return Z_STREAM_END$3; } - - /* Write the trailer */ - if (s.wrap === 2) { - put_byte(s, strm.adler & 0xff); - put_byte(s, (strm.adler >> 8) & 0xff); - put_byte(s, (strm.adler >> 16) & 0xff); - put_byte(s, (strm.adler >> 24) & 0xff); - put_byte(s, strm.total_in & 0xff); - put_byte(s, (strm.total_in >> 8) & 0xff); - put_byte(s, (strm.total_in >> 16) & 0xff); - put_byte(s, (strm.total_in >> 24) & 0xff); - } - else - { - putShortMSB(s, strm.adler >>> 16); - putShortMSB(s, strm.adler & 0xffff); - } - - flush_pending(strm); - /* If avail_out is zero, the application will call deflate again - * to flush the rest. - */ - if (s.wrap > 0) { s.wrap = -s.wrap; } - /* write the trailer only once! */ - return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3; - }; - - - const deflateEnd = (strm) => { - - if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { - return Z_STREAM_ERROR$2; - } - - const status = strm.state.status; - if (status !== INIT_STATE && - status !== EXTRA_STATE && - status !== NAME_STATE && - status !== COMMENT_STATE && - status !== HCRC_STATE && - status !== BUSY_STATE && - status !== FINISH_STATE - ) { - return err(strm, Z_STREAM_ERROR$2); - } - - strm.state = null; - - return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3; - }; - - - /* ========================================================================= - * Initializes the compression dictionary from the given byte - * sequence without producing any compressed output. - */ - const deflateSetDictionary = (strm, dictionary) => { - - let dictLength = dictionary.length; - - if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) { - return Z_STREAM_ERROR$2; - } - - const s = strm.state; - const wrap = s.wrap; - - if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) { - return Z_STREAM_ERROR$2; - } - - /* when using zlib wrappers, compute Adler-32 for provided dictionary */ - if (wrap === 1) { - /* adler32(strm->adler, dictionary, dictLength); */ - strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0); - } - - s.wrap = 0; /* avoid computing Adler-32 in read_buf */ - - /* if dictionary would fill window, just replace the history */ - if (dictLength >= s.w_size) { - if (wrap === 0) { /* already empty otherwise */ - /*** CLEAR_HASH(s); ***/ - zero(s.head); // Fill with NIL (= 0); - s.strstart = 0; - s.block_start = 0; - s.insert = 0; - } - /* use the tail */ - // dictionary = dictionary.slice(dictLength - s.w_size); - let tmpDict = new Uint8Array(s.w_size); - tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0); - dictionary = tmpDict; - dictLength = s.w_size; - } - /* insert dictionary into window and hash */ - const avail = strm.avail_in; - const next = strm.next_in; - const input = strm.input; - strm.avail_in = dictLength; - strm.next_in = 0; - strm.input = dictionary; - fill_window(s); - while (s.lookahead >= MIN_MATCH) { - let str = s.strstart; - let n = s.lookahead - (MIN_MATCH - 1); - do { - /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */ - s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); - - s.prev[str & s.w_mask] = s.head[s.ins_h]; - - s.head[s.ins_h] = str; - str++; - } while (--n); - s.strstart = str; - s.lookahead = MIN_MATCH - 1; - fill_window(s); - } - s.strstart += s.lookahead; - s.block_start = s.strstart; - s.insert = s.lookahead; - s.lookahead = 0; - s.match_length = s.prev_length = MIN_MATCH - 1; - s.match_available = 0; - strm.next_in = next; - strm.input = input; - strm.avail_in = avail; - s.wrap = wrap; - return Z_OK$3; - }; - - - var deflateInit_1 = deflateInit; - var deflateInit2_1 = deflateInit2; - var deflateReset_1 = deflateReset; - var deflateResetKeep_1 = deflateResetKeep; - var deflateSetHeader_1 = deflateSetHeader; - var deflate_2$1 = deflate$2; - var deflateEnd_1 = deflateEnd; - var deflateSetDictionary_1 = deflateSetDictionary; - var deflateInfo = 'pako deflate (from Nodeca project)'; - - /* Not implemented - module.exports.deflateBound = deflateBound; - module.exports.deflateCopy = deflateCopy; - module.exports.deflateParams = deflateParams; - module.exports.deflatePending = deflatePending; - module.exports.deflatePrime = deflatePrime; - module.exports.deflateTune = deflateTune; - */ - - var deflate_1$2 = { - deflateInit: deflateInit_1, - deflateInit2: deflateInit2_1, - deflateReset: deflateReset_1, - deflateResetKeep: deflateResetKeep_1, - deflateSetHeader: deflateSetHeader_1, - deflate: deflate_2$1, - deflateEnd: deflateEnd_1, - deflateSetDictionary: deflateSetDictionary_1, - deflateInfo: deflateInfo - }; - - const _has = (obj, key) => { - return Object.prototype.hasOwnProperty.call(obj, key); - }; - - var assign = function (obj /*from1, from2, from3, ...*/) { - const sources = Array.prototype.slice.call(arguments, 1); - while (sources.length) { - const source = sources.shift(); - if (!source) { continue; } - - if (typeof source !== 'object') { - throw new TypeError(source + 'must be non-object'); - } - - for (const p in source) { - if (_has(source, p)) { - obj[p] = source[p]; - } - } - } - - return obj; - }; - - - // Join array of chunks to single array. - var flattenChunks = (chunks) => { - // calculate data length - let len = 0; - - for (let i = 0, l = chunks.length; i < l; i++) { - len += chunks[i].length; - } - - // join chunks - const result = new Uint8Array(len); - - for (let i = 0, pos = 0, l = chunks.length; i < l; i++) { - let chunk = chunks[i]; - result.set(chunk, pos); - pos += chunk.length; - } - - return result; - }; - - var common = { - assign: assign, - flattenChunks: flattenChunks - }; - - // String encode/decode helpers - - - // Quick check if we can use fast array to bin string conversion - // - // - apply(Array) can fail on Android 2.2 - // - apply(Uint8Array) can fail on iOS 5.1 Safari - // - let STR_APPLY_UIA_OK = true; - - try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; } - - - // Table with utf8 lengths (calculated by first byte of sequence) - // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS, - // because max possible codepoint is 0x10ffff - const _utf8len = new Uint8Array(256); - for (let q = 0; q < 256; q++) { - _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1); - } - _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start - - - // convert string to array (typed, when possible) - var string2buf = (str) => { - if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) { - return new TextEncoder().encode(str); - } - - let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; - - // count binary size - for (m_pos = 0; m_pos < str_len; m_pos++) { - c = str.charCodeAt(m_pos); - if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { - c2 = str.charCodeAt(m_pos + 1); - if ((c2 & 0xfc00) === 0xdc00) { - c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); - m_pos++; - } - } - buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4; - } - - // allocate buffer - buf = new Uint8Array(buf_len); - - // convert - for (i = 0, m_pos = 0; i < buf_len; m_pos++) { - c = str.charCodeAt(m_pos); - if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) { - c2 = str.charCodeAt(m_pos + 1); - if ((c2 & 0xfc00) === 0xdc00) { - c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00); - m_pos++; - } - } - if (c < 0x80) { - /* one byte */ - buf[i++] = c; - } else if (c < 0x800) { - /* two bytes */ - buf[i++] = 0xC0 | (c >>> 6); - buf[i++] = 0x80 | (c & 0x3f); - } else if (c < 0x10000) { - /* three bytes */ - buf[i++] = 0xE0 | (c >>> 12); - buf[i++] = 0x80 | (c >>> 6 & 0x3f); - buf[i++] = 0x80 | (c & 0x3f); - } else { - /* four bytes */ - buf[i++] = 0xf0 | (c >>> 18); - buf[i++] = 0x80 | (c >>> 12 & 0x3f); - buf[i++] = 0x80 | (c >>> 6 & 0x3f); - buf[i++] = 0x80 | (c & 0x3f); - } - } - - return buf; - }; - - // Helper - const buf2binstring = (buf, len) => { - // On Chrome, the arguments in a function call that are allowed is `65534`. - // If the length of the buffer is smaller than that, we can use this optimization, - // otherwise we will take a slower path. - if (len < 65534) { - if (buf.subarray && STR_APPLY_UIA_OK) { - return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len)); - } - } - - let result = ''; - for (let i = 0; i < len; i++) { - result += String.fromCharCode(buf[i]); - } - return result; - }; - - - // convert array to string - var buf2string = (buf, max) => { - const len = max || buf.length; - - if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) { - return new TextDecoder().decode(buf.subarray(0, max)); - } - - let i, out; - - // Reserve max possible length (2 words per char) - // NB: by unknown reasons, Array is significantly faster for - // String.fromCharCode.apply than Uint16Array. - const utf16buf = new Array(len * 2); - - for (out = 0, i = 0; i < len;) { - let c = buf[i++]; - // quick process ascii - if (c < 0x80) { utf16buf[out++] = c; continue; } - - let c_len = _utf8len[c]; - // skip 5 & 6 byte codes - if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; } - - // apply mask on first byte - c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07; - // join the rest - while (c_len > 1 && i < len) { - c = (c << 6) | (buf[i++] & 0x3f); - c_len--; - } - - // terminated by end of string? - if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; } - - if (c < 0x10000) { - utf16buf[out++] = c; - } else { - c -= 0x10000; - utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff); - utf16buf[out++] = 0xdc00 | (c & 0x3ff); - } - } - - return buf2binstring(utf16buf, out); - }; - - - // Calculate max possible position in utf8 buffer, - // that will not break sequence. If that's not possible - // - (very small limits) return max size as is. - // - // buf[] - utf8 bytes array - // max - length limit (mandatory); - var utf8border = (buf, max) => { - - max = max || buf.length; - if (max > buf.length) { max = buf.length; } - - // go back from last position, until start of sequence found - let pos = max - 1; - while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; } - - // Very small and broken sequence, - // return max, because we should return something anyway. - if (pos < 0) { return max; } - - // If we came to start of buffer - that means buffer is too small, - // return max too. - if (pos === 0) { return max; } - - return (pos + _utf8len[buf[pos]] > max) ? pos : max; - }; - - var strings = { - string2buf: string2buf, - buf2string: buf2string, - utf8border: utf8border - }; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - function ZStream() { - /* next input byte */ - this.input = null; // JS specific, because we have no pointers - this.next_in = 0; - /* number of bytes available at input */ - this.avail_in = 0; - /* total number of input bytes read so far */ - this.total_in = 0; - /* next output byte should be put there */ - this.output = null; // JS specific, because we have no pointers - this.next_out = 0; - /* remaining free space at output */ - this.avail_out = 0; - /* total number of bytes output so far */ - this.total_out = 0; - /* last error message, NULL if no error */ - this.msg = ''/*Z_NULL*/; - /* not visible by applications */ - this.state = null; - /* best guess about the data type: binary or text */ - this.data_type = 2/*Z_UNKNOWN*/; - /* adler32 value of the uncompressed data */ - this.adler = 0; - } - - var zstream = ZStream; - - const toString$1 = Object.prototype.toString; - - /* Public constants ==========================================================*/ - /* ===========================================================================*/ - - const { - Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2, - Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2, - Z_DEFAULT_COMPRESSION, - Z_DEFAULT_STRATEGY, - Z_DEFLATED: Z_DEFLATED$1 - } = constants$2; - - /* ===========================================================================*/ - - - /** - * class Deflate - * - * Generic JS-style wrapper for zlib calls. If you don't need - * streaming behaviour - use more simple functions: [[deflate]], - * [[deflateRaw]] and [[gzip]]. - **/ - - /* internal - * Deflate.chunks -> Array - * - * Chunks of output data, if [[Deflate#onData]] not overridden. - **/ - - /** - * Deflate.result -> Uint8Array - * - * Compressed result, generated by default [[Deflate#onData]] - * and [[Deflate#onEnd]] handlers. Filled after you push last chunk - * (call [[Deflate#push]] with `Z_FINISH` / `true` param). - **/ - - /** - * Deflate.err -> Number - * - * Error code after deflate finished. 0 (Z_OK) on success. - * You will not need it in real life, because deflate errors - * are possible only on wrong options or bad `onData` / `onEnd` - * custom handlers. - **/ - - /** - * Deflate.msg -> String - * - * Error message, if [[Deflate.err]] != 0 - **/ - - - /** - * new Deflate(options) - * - options (Object): zlib deflate options. - * - * Creates new deflator instance with specified params. Throws exception - * on bad params. Supported options: - * - * - `level` - * - `windowBits` - * - `memLevel` - * - `strategy` - * - `dictionary` - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information on these. - * - * Additional options, for internal needs: - * - * - `chunkSize` - size of generated data chunks (16K by default) - * - `raw` (Boolean) - do raw deflate - * - `gzip` (Boolean) - create gzip wrapper - * - `header` (Object) - custom header for gzip - * - `text` (Boolean) - true if compressed data believed to be text - * - `time` (Number) - modification time, unix timestamp - * - `os` (Number) - operation system code - * - `extra` (Array) - array of bytes with extra data (max 65536) - * - `name` (String) - file name (binary string) - * - `comment` (String) - comment (binary string) - * - `hcrc` (Boolean) - true if header crc should be added - * - * ##### Example: - * - * ```javascript - * const pako = require('pako') - * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9]) - * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]); - * - * const deflate = new pako.Deflate({ level: 3}); - * - * deflate.push(chunk1, false); - * deflate.push(chunk2, true); // true -> last chunk - * - * if (deflate.err) { throw new Error(deflate.err); } - * - * console.log(deflate.result); - * ``` - **/ - function Deflate$1(options) { - this.options = common.assign({ - level: Z_DEFAULT_COMPRESSION, - method: Z_DEFLATED$1, - chunkSize: 16384, - windowBits: 15, - memLevel: 8, - strategy: Z_DEFAULT_STRATEGY - }, options || {}); - - let opt = this.options; - - if (opt.raw && (opt.windowBits > 0)) { - opt.windowBits = -opt.windowBits; - } - - else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) { - opt.windowBits += 16; - } - - this.err = 0; // error code, if happens (0 = Z_OK) - this.msg = ''; // error message - this.ended = false; // used to avoid multiple onEnd() calls - this.chunks = []; // chunks of compressed data - - this.strm = new zstream(); - this.strm.avail_out = 0; - - let status = deflate_1$2.deflateInit2( - this.strm, - opt.level, - opt.method, - opt.windowBits, - opt.memLevel, - opt.strategy - ); - - if (status !== Z_OK$2) { - throw new Error(messages[status]); - } - - if (opt.header) { - deflate_1$2.deflateSetHeader(this.strm, opt.header); - } - - if (opt.dictionary) { - let dict; - // Convert data if needed - if (typeof opt.dictionary === 'string') { - // If we need to compress text, change encoding to utf8. - dict = strings.string2buf(opt.dictionary); - } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') { - dict = new Uint8Array(opt.dictionary); - } else { - dict = opt.dictionary; - } - - status = deflate_1$2.deflateSetDictionary(this.strm, dict); - - if (status !== Z_OK$2) { - throw new Error(messages[status]); - } - - this._dict_set = true; - } - } - - /** - * Deflate#push(data[, flush_mode]) -> Boolean - * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be - * converted to utf8 byte sequence. - * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes. - * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH. - * - * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with - * new compressed chunks. Returns `true` on success. The last data block must - * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending - * buffers and call [[Deflate#onEnd]]. - * - * On fail call [[Deflate#onEnd]] with error code and return false. - * - * ##### Example - * - * ```javascript - * push(chunk, false); // push one of data chunks - * ... - * push(chunk, true); // push last chunk - * ``` - **/ - Deflate$1.prototype.push = function (data, flush_mode) { - const strm = this.strm; - const chunkSize = this.options.chunkSize; - let status, _flush_mode; - - if (this.ended) { return false; } - - if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; - else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1; - - // Convert data if needed - if (typeof data === 'string') { - // If we need to compress text, change encoding to utf8. - strm.input = strings.string2buf(data); - } else if (toString$1.call(data) === '[object ArrayBuffer]') { - strm.input = new Uint8Array(data); - } else { - strm.input = data; - } - - strm.next_in = 0; - strm.avail_in = strm.input.length; - - for (;;) { - if (strm.avail_out === 0) { - strm.output = new Uint8Array(chunkSize); - strm.next_out = 0; - strm.avail_out = chunkSize; - } - - // Make sure avail_out > 6 to avoid repeating markers - if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) { - this.onData(strm.output.subarray(0, strm.next_out)); - strm.avail_out = 0; - continue; - } - - status = deflate_1$2.deflate(strm, _flush_mode); - - // Ended => flush and finish - if (status === Z_STREAM_END$2) { - if (strm.next_out > 0) { - this.onData(strm.output.subarray(0, strm.next_out)); - } - status = deflate_1$2.deflateEnd(this.strm); - this.onEnd(status); - this.ended = true; - return status === Z_OK$2; - } - - // Flush if out buffer full - if (strm.avail_out === 0) { - this.onData(strm.output); - continue; - } - - // Flush if requested and has data - if (_flush_mode > 0 && strm.next_out > 0) { - this.onData(strm.output.subarray(0, strm.next_out)); - strm.avail_out = 0; - continue; - } - - if (strm.avail_in === 0) break; - } - - return true; - }; - - - /** - * Deflate#onData(chunk) -> Void - * - chunk (Uint8Array): output data. - * - * By default, stores data blocks in `chunks[]` property and glue - * those in `onEnd`. Override this handler, if you need another behaviour. - **/ - Deflate$1.prototype.onData = function (chunk) { - this.chunks.push(chunk); - }; - - - /** - * Deflate#onEnd(status) -> Void - * - status (Number): deflate status. 0 (Z_OK) on success, - * other if not. - * - * Called once after you tell deflate that the input stream is - * complete (Z_FINISH). By default - join collected chunks, - * free memory and fill `results` / `err` properties. - **/ - Deflate$1.prototype.onEnd = function (status) { - // On success - join - if (status === Z_OK$2) { - this.result = common.flattenChunks(this.chunks); - } - this.chunks = []; - this.err = status; - this.msg = this.strm.msg; - }; - - - /** - * deflate(data[, options]) -> Uint8Array - * - data (Uint8Array|String): input data to compress. - * - options (Object): zlib deflate options. - * - * Compress `data` with deflate algorithm and `options`. - * - * Supported options are: - * - * - level - * - windowBits - * - memLevel - * - strategy - * - dictionary - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information on these. - * - * Sugar (options): - * - * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify - * negative windowBits implicitly. - * - * ##### Example: - * - * ```javascript - * const pako = require('pako') - * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]); - * - * console.log(pako.deflate(data)); - * ``` - **/ - function deflate$1(input, options) { - const deflator = new Deflate$1(options); - - deflator.push(input, true); - - // That will never happens, if you don't cheat with options :) - if (deflator.err) { throw deflator.msg || messages[deflator.err]; } - - return deflator.result; - } - - - /** - * deflateRaw(data[, options]) -> Uint8Array - * - data (Uint8Array|String): input data to compress. - * - options (Object): zlib deflate options. - * - * The same as [[deflate]], but creates raw data, without wrapper - * (header and adler32 crc). - **/ - function deflateRaw$1(input, options) { - options = options || {}; - options.raw = true; - return deflate$1(input, options); - } - - - /** - * gzip(data[, options]) -> Uint8Array - * - data (Uint8Array|String): input data to compress. - * - options (Object): zlib deflate options. - * - * The same as [[deflate]], but create gzip wrapper instead of - * deflate one. - **/ - function gzip$1(input, options) { - options = options || {}; - options.gzip = true; - return deflate$1(input, options); - } - - - var Deflate_1$1 = Deflate$1; - var deflate_2 = deflate$1; - var deflateRaw_1$1 = deflateRaw$1; - var gzip_1$1 = gzip$1; - var constants$1 = constants$2; - - var deflate_1$1 = { - Deflate: Deflate_1$1, - deflate: deflate_2, - deflateRaw: deflateRaw_1$1, - gzip: gzip_1$1, - constants: constants$1 - }; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - // See state defs from inflate.js - const BAD$1 = 30; /* got a data error -- remain here until reset */ - const TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */ - - /* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state.mode === LEN - strm.avail_in >= 6 - strm.avail_out >= 258 - start >= strm.avail_out - state.bits < 8 - - On return, state.mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm.avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm.avail_out >= 258 for each loop to avoid checking for - output space. - */ - var inffast = function inflate_fast(strm, start) { - let _in; /* local strm.input */ - let last; /* have enough input while in < last */ - let _out; /* local strm.output */ - let beg; /* inflate()'s initial strm.output */ - let end; /* while out < end, enough space available */ - //#ifdef INFLATE_STRICT - let dmax; /* maximum distance from zlib header */ - //#endif - let wsize; /* window size or zero if not using window */ - let whave; /* valid bytes in the window */ - let wnext; /* window write index */ - // Use `s_window` instead `window`, avoid conflict with instrumentation tools - let s_window; /* allocated sliding window, if wsize != 0 */ - let hold; /* local strm.hold */ - let bits; /* local strm.bits */ - let lcode; /* local strm.lencode */ - let dcode; /* local strm.distcode */ - let lmask; /* mask for first level of length codes */ - let dmask; /* mask for first level of distance codes */ - let here; /* retrieved table entry */ - let op; /* code bits, operation, extra bits, or */ - /* window position, window bytes to copy */ - let len; /* match length, unused bytes */ - let dist; /* match distance */ - let from; /* where to copy match from */ - let from_source; - - - let input, output; // JS specific, because we have no pointers - - /* copy state to local variables */ - const state = strm.state; - //here = state.here; - _in = strm.next_in; - input = strm.input; - last = _in + (strm.avail_in - 5); - _out = strm.next_out; - output = strm.output; - beg = _out - (start - strm.avail_out); - end = _out + (strm.avail_out - 257); - //#ifdef INFLATE_STRICT - dmax = state.dmax; - //#endif - wsize = state.wsize; - whave = state.whave; - wnext = state.wnext; - s_window = state.window; - hold = state.hold; - bits = state.bits; - lcode = state.lencode; - dcode = state.distcode; - lmask = (1 << state.lenbits) - 1; - dmask = (1 << state.distbits) - 1; - - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - - top: - do { - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - - here = lcode[hold & lmask]; - - dolen: - for (;;) { // Goto emulation - op = here >>> 24/*here.bits*/; - hold >>>= op; - bits -= op; - op = (here >>> 16) & 0xff/*here.op*/; - if (op === 0) { /* literal */ - //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - // "inflate: literal '%c'\n" : - // "inflate: literal 0x%02x\n", here.val)); - output[_out++] = here & 0xffff/*here.val*/; - } - else if (op & 16) { /* length base */ - len = here & 0xffff/*here.val*/; - op &= 15; /* number of extra bits */ - if (op) { - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - len += hold & ((1 << op) - 1); - hold >>>= op; - bits -= op; - } - //Tracevv((stderr, "inflate: length %u\n", len)); - if (bits < 15) { - hold += input[_in++] << bits; - bits += 8; - hold += input[_in++] << bits; - bits += 8; - } - here = dcode[hold & dmask]; - - dodist: - for (;;) { // goto emulation - op = here >>> 24/*here.bits*/; - hold >>>= op; - bits -= op; - op = (here >>> 16) & 0xff/*here.op*/; - - if (op & 16) { /* distance base */ - dist = here & 0xffff/*here.val*/; - op &= 15; /* number of extra bits */ - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - if (bits < op) { - hold += input[_in++] << bits; - bits += 8; - } - } - dist += hold & ((1 << op) - 1); - //#ifdef INFLATE_STRICT - if (dist > dmax) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD$1; - break top; - } - //#endif - hold >>>= op; - bits -= op; - //Tracevv((stderr, "inflate: distance %u\n", dist)); - op = _out - beg; /* max distance in output */ - if (dist > op) { /* see if copy from window */ - op = dist - op; /* distance back in window */ - if (op > whave) { - if (state.sane) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD$1; - break top; - } - - // (!) This block is disabled in zlib defaults, - // don't enable it for binary compatibility - //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - // if (len <= op - whave) { - // do { - // output[_out++] = 0; - // } while (--len); - // continue top; - // } - // len -= op - whave; - // do { - // output[_out++] = 0; - // } while (--op > whave); - // if (op === 0) { - // from = _out - dist; - // do { - // output[_out++] = output[from++]; - // } while (--len); - // continue top; - // } - //#endif - } - from = 0; // window index - from_source = s_window; - if (wnext === 0) { /* very common case */ - from += wsize - op; - if (op < len) { /* some from window */ - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; /* rest from output */ - from_source = output; - } - } - else if (wnext < op) { /* wrap around window */ - from += wsize + wnext - op; - op -= wnext; - if (op < len) { /* some from end of window */ - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = 0; - if (wnext < len) { /* some from start of window */ - op = wnext; - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; /* rest from output */ - from_source = output; - } - } - } - else { /* contiguous in window */ - from += wnext - op; - if (op < len) { /* some from window */ - len -= op; - do { - output[_out++] = s_window[from++]; - } while (--op); - from = _out - dist; /* rest from output */ - from_source = output; - } - } - while (len > 2) { - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - output[_out++] = from_source[from++]; - len -= 3; - } - if (len) { - output[_out++] = from_source[from++]; - if (len > 1) { - output[_out++] = from_source[from++]; - } - } - } - else { - from = _out - dist; /* copy direct from output */ - do { /* minimum length is three */ - output[_out++] = output[from++]; - output[_out++] = output[from++]; - output[_out++] = output[from++]; - len -= 3; - } while (len > 2); - if (len) { - output[_out++] = output[from++]; - if (len > 1) { - output[_out++] = output[from++]; - } - } - } - } - else if ((op & 64) === 0) { /* 2nd level distance code */ - here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; - continue dodist; - } - else { - strm.msg = 'invalid distance code'; - state.mode = BAD$1; - break top; - } - - break; // need to emulate goto via "continue" - } - } - else if ((op & 64) === 0) { /* 2nd level length code */ - here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))]; - continue dolen; - } - else if (op & 32) { /* end-of-block */ - //Tracevv((stderr, "inflate: end of block\n")); - state.mode = TYPE$1; - break top; - } - else { - strm.msg = 'invalid literal/length code'; - state.mode = BAD$1; - break top; - } - - break; // need to emulate goto via "continue" - } - } while (_in < last && _out < end); - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - len = bits >> 3; - _in -= len; - bits -= len << 3; - hold &= (1 << bits) - 1; - - /* update state and return */ - strm.next_in = _in; - strm.next_out = _out; - strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last)); - strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end)); - state.hold = hold; - state.bits = bits; - return; - }; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - const MAXBITS = 15; - const ENOUGH_LENS$1 = 852; - const ENOUGH_DISTS$1 = 592; - //const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); - - const CODES$1 = 0; - const LENS$1 = 1; - const DISTS$1 = 2; - - const lbase = new Uint16Array([ /* Length codes 257..285 base */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 - ]); - - const lext = new Uint8Array([ /* Length codes 257..285 extra */ - 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 - ]); - - const dbase = new Uint16Array([ /* Distance codes 0..29 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577, 0, 0 - ]); - - const dext = new Uint8Array([ /* Distance codes 0..29 extra */ - 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, - 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, - 28, 28, 29, 29, 64, 64 - ]); - - const inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) => - { - const bits = opts.bits; - //here = opts.here; /* table entry for duplication */ - - let len = 0; /* a code's length in bits */ - let sym = 0; /* index of code symbols */ - let min = 0, max = 0; /* minimum and maximum code lengths */ - let root = 0; /* number of index bits for root table */ - let curr = 0; /* number of index bits for current table */ - let drop = 0; /* code bits to drop for sub-table */ - let left = 0; /* number of prefix codes available */ - let used = 0; /* code entries in table used */ - let huff = 0; /* Huffman code */ - let incr; /* for incrementing code, index */ - let fill; /* index for replicating entries */ - let low; /* low bits for current root entry */ - let mask; /* mask for low root bits */ - let next; /* next available space in table */ - let base = null; /* base value table to use */ - let base_index = 0; - // let shoextra; /* extra bits table to use */ - let end; /* use base and extra for symbol > end */ - const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */ - const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */ - let extra = null; - let extra_index = 0; - - let here_bits, here_op, here_val; - - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. - - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. - - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. - - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ - - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - for (len = 0; len <= MAXBITS; len++) { - count[len] = 0; - } - for (sym = 0; sym < codes; sym++) { - count[lens[lens_index + sym]]++; - } - - /* bound code lengths, force root to be within code lengths */ - root = bits; - for (max = MAXBITS; max >= 1; max--) { - if (count[max] !== 0) { break; } - } - if (root > max) { - root = max; - } - if (max === 0) { /* no symbols to code at all */ - //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */ - //table.bits[opts.table_index] = 1; //here.bits = (var char)1; - //table.val[opts.table_index++] = 0; //here.val = (var short)0; - table[table_index++] = (1 << 24) | (64 << 16) | 0; - - - //table.op[opts.table_index] = 64; - //table.bits[opts.table_index] = 1; - //table.val[opts.table_index++] = 0; - table[table_index++] = (1 << 24) | (64 << 16) | 0; - - opts.bits = 1; - return 0; /* no symbols, but wait for decoding to report error */ - } - for (min = 1; min < max; min++) { - if (count[min] !== 0) { break; } - } - if (root < min) { - root = min; - } - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) { - return -1; - } /* over-subscribed */ - } - if (left > 0 && (type === CODES$1 || max !== 1)) { - return -1; /* incomplete set */ - } - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) { - offs[len + 1] = offs[len] + count[len]; - } - - /* sort symbols by length, by symbol order within each length */ - for (sym = 0; sym < codes; sym++) { - if (lens[lens_index + sym] !== 0) { - work[offs[lens[lens_index + sym]]++] = sym; - } - } - - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. - - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. - - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. - - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftrees.h - for more information. - - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ - - /* set up for code type */ - // poor man optimization - use if-else instead of switch, - // to avoid deopts in old v8 - if (type === CODES$1) { - base = extra = work; /* dummy value--not used */ - end = 19; - - } else if (type === LENS$1) { - base = lbase; - base_index -= 257; - extra = lext; - extra_index -= 257; - end = 256; - - } else { /* DISTS */ - base = dbase; - extra = dext; - end = -1; - } - - /* initialize opts for loop */ - huff = 0; /* starting code */ - sym = 0; /* starting code symbol */ - len = min; /* starting code length */ - next = table_index; /* current table to fill in */ - curr = root; /* current table index bits */ - drop = 0; /* current bits to drop from code for index */ - low = -1; /* trigger new sub-table when len > root */ - used = 1 << root; /* use root table entries */ - mask = used - 1; /* mask for comparing low */ - - /* check available table space */ - if ((type === LENS$1 && used > ENOUGH_LENS$1) || - (type === DISTS$1 && used > ENOUGH_DISTS$1)) { - return 1; - } - - /* process all codes and make table entries */ - for (;;) { - /* create table entry */ - here_bits = len - drop; - if (work[sym] < end) { - here_op = 0; - here_val = work[sym]; - } - else if (work[sym] > end) { - here_op = extra[extra_index + work[sym]]; - here_val = base[base_index + work[sym]]; - } - else { - here_op = 32 + 64; /* end of block */ - here_val = 0; - } - - /* replicate for those indices with low len bits equal to huff */ - incr = 1 << (len - drop); - fill = 1 << curr; - min = fill; /* save offset to next table */ - do { - fill -= incr; - table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0; - } while (fill !== 0); - - /* backwards increment the len-bit code huff */ - incr = 1 << (len - 1); - while (huff & incr) { - incr >>= 1; - } - if (incr !== 0) { - huff &= incr - 1; - huff += incr; - } else { - huff = 0; - } - - /* go to next symbol, update count, len */ - sym++; - if (--count[len] === 0) { - if (len === max) { break; } - len = lens[lens_index + work[sym]]; - } - - /* create new sub-table if needed */ - if (len > root && (huff & mask) !== low) { - /* if first time, transition to sub-tables */ - if (drop === 0) { - drop = root; - } - - /* increment past last table */ - next += min; /* here min is 1 << curr */ - - /* determine length of next table */ - curr = len - drop; - left = 1 << curr; - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) { break; } - curr++; - left <<= 1; - } - - /* check for enough space */ - used += 1 << curr; - if ((type === LENS$1 && used > ENOUGH_LENS$1) || - (type === DISTS$1 && used > ENOUGH_DISTS$1)) { - return 1; - } - - /* point entry in root table to sub-table */ - low = huff & mask; - /*table.op[low] = curr; - table.bits[low] = root; - table.val[low] = next - opts.table_index;*/ - table[low] = (root << 24) | (curr << 16) | (next - table_index) |0; - } - } - - /* fill in remaining table entry if code is incomplete (guaranteed to have - at most one remaining entry, since if the code is incomplete, the - maximum code length that was allowed to get this far is one bit) */ - if (huff !== 0) { - //table.op[next + huff] = 64; /* invalid code marker */ - //table.bits[next + huff] = len - drop; - //table.val[next + huff] = 0; - table[next + huff] = ((len - drop) << 24) | (64 << 16) |0; - } - - /* set return parameters */ - //opts.table_index += used; - opts.bits = root; - return 0; - }; - - - var inftrees = inflate_table; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - - - - - - const CODES = 0; - const LENS = 1; - const DISTS = 2; - - /* Public constants ==========================================================*/ - /* ===========================================================================*/ - - const { - Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES, - Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR, - Z_DEFLATED - } = constants$2; - - - /* STATES ====================================================================*/ - /* ===========================================================================*/ - - - const HEAD = 1; /* i: waiting for magic header */ - const FLAGS = 2; /* i: waiting for method and flags (gzip) */ - const TIME = 3; /* i: waiting for modification time (gzip) */ - const OS = 4; /* i: waiting for extra flags and operating system (gzip) */ - const EXLEN = 5; /* i: waiting for extra length (gzip) */ - const EXTRA = 6; /* i: waiting for extra bytes (gzip) */ - const NAME = 7; /* i: waiting for end of file name (gzip) */ - const COMMENT = 8; /* i: waiting for end of comment (gzip) */ - const HCRC = 9; /* i: waiting for header crc (gzip) */ - const DICTID = 10; /* i: waiting for dictionary check value */ - const DICT = 11; /* waiting for inflateSetDictionary() call */ - const TYPE = 12; /* i: waiting for type bits, including last-flag bit */ - const TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */ - const STORED = 14; /* i: waiting for stored size (length and complement) */ - const COPY_ = 15; /* i/o: same as COPY below, but only first time in */ - const COPY = 16; /* i/o: waiting for input or output to copy stored block */ - const TABLE = 17; /* i: waiting for dynamic block table lengths */ - const LENLENS = 18; /* i: waiting for code length code lengths */ - const CODELENS = 19; /* i: waiting for length/lit and distance code lengths */ - const LEN_ = 20; /* i: same as LEN below, but only first time in */ - const LEN = 21; /* i: waiting for length/lit/eob code */ - const LENEXT = 22; /* i: waiting for length extra bits */ - const DIST = 23; /* i: waiting for distance code */ - const DISTEXT = 24; /* i: waiting for distance extra bits */ - const MATCH = 25; /* o: waiting for output space to copy string */ - const LIT = 26; /* o: waiting for output space to write literal */ - const CHECK = 27; /* i: waiting for 32-bit check value */ - const LENGTH = 28; /* i: waiting for 32-bit length (gzip) */ - const DONE = 29; /* finished check, done -- remain here until reset */ - const BAD = 30; /* got a data error -- remain here until reset */ - const MEM = 31; /* got an inflate() memory error -- remain here until reset */ - const SYNC = 32; /* looking for synchronization bytes to restart inflate() */ - - /* ===========================================================================*/ - - - - const ENOUGH_LENS = 852; - const ENOUGH_DISTS = 592; - //const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS); - - const MAX_WBITS = 15; - /* 32K LZ77 window */ - const DEF_WBITS = MAX_WBITS; - - - const zswap32 = (q) => { - - return (((q >>> 24) & 0xff) + - ((q >>> 8) & 0xff00) + - ((q & 0xff00) << 8) + - ((q & 0xff) << 24)); - }; - - - function InflateState() { - this.mode = 0; /* current inflate mode */ - this.last = false; /* true if processing last block */ - this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */ - this.havedict = false; /* true if dictionary provided */ - this.flags = 0; /* gzip header method and flags (0 if zlib) */ - this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */ - this.check = 0; /* protected copy of check value */ - this.total = 0; /* protected copy of output count */ - // TODO: may be {} - this.head = null; /* where to save gzip header information */ - - /* sliding window */ - this.wbits = 0; /* log base 2 of requested window size */ - this.wsize = 0; /* window size or zero if not using window */ - this.whave = 0; /* valid bytes in the window */ - this.wnext = 0; /* window write index */ - this.window = null; /* allocated sliding window, if needed */ - - /* bit accumulator */ - this.hold = 0; /* input bit accumulator */ - this.bits = 0; /* number of bits in "in" */ - - /* for string and stored block copying */ - this.length = 0; /* literal or length of data to copy */ - this.offset = 0; /* distance back to copy string from */ - - /* for table and code decoding */ - this.extra = 0; /* extra bits needed */ - - /* fixed and dynamic code tables */ - this.lencode = null; /* starting table for length/literal codes */ - this.distcode = null; /* starting table for distance codes */ - this.lenbits = 0; /* index bits for lencode */ - this.distbits = 0; /* index bits for distcode */ - - /* dynamic table building */ - this.ncode = 0; /* number of code length code lengths */ - this.nlen = 0; /* number of length code lengths */ - this.ndist = 0; /* number of distance code lengths */ - this.have = 0; /* number of code lengths in lens[] */ - this.next = null; /* next available space in codes[] */ - - this.lens = new Uint16Array(320); /* temporary storage for code lengths */ - this.work = new Uint16Array(288); /* work area for code table building */ - - /* - because we don't have pointers in js, we use lencode and distcode directly - as buffers so we don't need codes - */ - //this.codes = new Int32Array(ENOUGH); /* space for code tables */ - this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */ - this.distdyn = null; /* dynamic table for distance codes (JS specific) */ - this.sane = 0; /* if false, allow invalid distance too far */ - this.back = 0; /* bits back of last unprocessed length/lit */ - this.was = 0; /* initial length of match */ - } - - - const inflateResetKeep = (strm) => { - - if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } - const state = strm.state; - strm.total_in = strm.total_out = state.total = 0; - strm.msg = ''; /*Z_NULL*/ - if (state.wrap) { /* to support ill-conceived Java test suite */ - strm.adler = state.wrap & 1; - } - state.mode = HEAD; - state.last = 0; - state.havedict = 0; - state.dmax = 32768; - state.head = null/*Z_NULL*/; - state.hold = 0; - state.bits = 0; - //state.lencode = state.distcode = state.next = state.codes; - state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS); - state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS); - - state.sane = 1; - state.back = -1; - //Tracev((stderr, "inflate: reset\n")); - return Z_OK$1; - }; - - - const inflateReset = (strm) => { - - if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } - const state = strm.state; - state.wsize = 0; - state.whave = 0; - state.wnext = 0; - return inflateResetKeep(strm); - - }; - - - const inflateReset2 = (strm, windowBits) => { - let wrap; - - /* get the state */ - if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } - const state = strm.state; - - /* extract wrap request from windowBits parameter */ - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } - else { - wrap = (windowBits >> 4) + 1; - if (windowBits < 48) { - windowBits &= 15; - } - } - - /* set number of window bits, free window if different */ - if (windowBits && (windowBits < 8 || windowBits > 15)) { - return Z_STREAM_ERROR$1; - } - if (state.window !== null && state.wbits !== windowBits) { - state.window = null; - } - - /* update state and reset the rest of it */ - state.wrap = wrap; - state.wbits = windowBits; - return inflateReset(strm); - }; - - - const inflateInit2 = (strm, windowBits) => { - - if (!strm) { return Z_STREAM_ERROR$1; } - //strm.msg = Z_NULL; /* in case we return an error */ - - const state = new InflateState(); - - //if (state === Z_NULL) return Z_MEM_ERROR; - //Tracev((stderr, "inflate: allocated\n")); - strm.state = state; - state.window = null/*Z_NULL*/; - const ret = inflateReset2(strm, windowBits); - if (ret !== Z_OK$1) { - strm.state = null/*Z_NULL*/; - } - return ret; - }; - - - const inflateInit = (strm) => { - - return inflateInit2(strm, DEF_WBITS); - }; - - - /* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ - let virgin = true; - - let lenfix, distfix; // We have no pointers in JS, so keep tables separate - - - const fixedtables = (state) => { - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - lenfix = new Int32Array(512); - distfix = new Int32Array(32); - - /* literal/length table */ - let sym = 0; - while (sym < 144) { state.lens[sym++] = 8; } - while (sym < 256) { state.lens[sym++] = 9; } - while (sym < 280) { state.lens[sym++] = 7; } - while (sym < 288) { state.lens[sym++] = 8; } - - inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 }); - - /* distance table */ - sym = 0; - while (sym < 32) { state.lens[sym++] = 5; } - - inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 }); - - /* do this just once */ - virgin = false; - } - - state.lencode = lenfix; - state.lenbits = 9; - state.distcode = distfix; - state.distbits = 5; - }; - - - /* - Update the window with the last wsize (normally 32K) bytes written before - returning. If window does not exist yet, create it. This is only called - when a window is already in use, or when output has been written during this - inflate call, but the end of the deflate stream has not been reached yet. - It is also called to create a window for dictionary data when a dictionary - is loaded. - - Providing output buffers larger than 32K to inflate() should provide a speed - advantage, since only the last 32K of output is copied to the sliding window - upon return from inflate(), and since all distances after the first 32K of - output will fall in the output data, making match copies simpler and faster. - The advantage may be dependent on the size of the processor's data caches. - */ - const updatewindow = (strm, src, end, copy) => { - - let dist; - const state = strm.state; - - /* if it hasn't been done already, allocate space for the window */ - if (state.window === null) { - state.wsize = 1 << state.wbits; - state.wnext = 0; - state.whave = 0; - - state.window = new Uint8Array(state.wsize); - } - - /* copy state->wsize or less output bytes into the circular window */ - if (copy >= state.wsize) { - state.window.set(src.subarray(end - state.wsize, end), 0); - state.wnext = 0; - state.whave = state.wsize; - } - else { - dist = state.wsize - state.wnext; - if (dist > copy) { - dist = copy; - } - //zmemcpy(state->window + state->wnext, end - copy, dist); - state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext); - copy -= dist; - if (copy) { - //zmemcpy(state->window, end - copy, copy); - state.window.set(src.subarray(end - copy, end), 0); - state.wnext = copy; - state.whave = state.wsize; - } - else { - state.wnext += dist; - if (state.wnext === state.wsize) { state.wnext = 0; } - if (state.whave < state.wsize) { state.whave += dist; } - } - } - return 0; - }; - - - const inflate$2 = (strm, flush) => { - - let state; - let input, output; // input/output buffers - let next; /* next input INDEX */ - let put; /* next output INDEX */ - let have, left; /* available input and output */ - let hold; /* bit buffer */ - let bits; /* bits in bit buffer */ - let _in, _out; /* save starting available input and output */ - let copy; /* number of stored or match bytes to copy */ - let from; /* where to copy match bytes from */ - let from_source; - let here = 0; /* current decoding table entry */ - let here_bits, here_op, here_val; // paked "here" denormalized (JS specific) - //let last; /* parent table entry */ - let last_bits, last_op, last_val; // paked "last" denormalized (JS specific) - let len; /* length to copy for repeats, bits to drop */ - let ret; /* return code */ - const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */ - let opts; - - let n; // temporary variable for NEED_BITS - - const order = /* permutation of code lengths */ - new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]); - - - if (!strm || !strm.state || !strm.output || - (!strm.input && strm.avail_in !== 0)) { - return Z_STREAM_ERROR$1; - } - - state = strm.state; - if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */ - - - //--- LOAD() --- - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - //--- - - _in = have; - _out = left; - ret = Z_OK$1; - - inf_leave: // goto emulation - for (;;) { - switch (state.mode) { - case HEAD: - if (state.wrap === 0) { - state.mode = TYPEDO; - break; - } - //=== NEEDBITS(16); - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */ - state.check = 0/*crc32(0L, Z_NULL, 0)*/; - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32_1(state.check, hbuf, 2, 0); - //===// - - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = FLAGS; - break; - } - state.flags = 0; /* expect zlib header */ - if (state.head) { - state.head.done = false; - } - if (!(state.wrap & 1) || /* check if zlib header allowed */ - (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) { - strm.msg = 'incorrect header check'; - state.mode = BAD; - break; - } - if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) { - strm.msg = 'unknown compression method'; - state.mode = BAD; - break; - } - //--- DROPBITS(4) ---// - hold >>>= 4; - bits -= 4; - //---// - len = (hold & 0x0f)/*BITS(4)*/ + 8; - if (state.wbits === 0) { - state.wbits = len; - } - else if (len > state.wbits) { - strm.msg = 'invalid window size'; - state.mode = BAD; - break; - } - - // !!! pako patch. Force use `options.windowBits` if passed. - // Required to always use max window size by default. - state.dmax = 1 << state.wbits; - //state.dmax = 1 << len; - - //Tracev((stderr, "inflate: zlib header ok\n")); - strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; - state.mode = hold & 0x200 ? DICTID : TYPE; - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - break; - case FLAGS: - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.flags = hold; - if ((state.flags & 0xff) !== Z_DEFLATED) { - strm.msg = 'unknown compression method'; - state.mode = BAD; - break; - } - if (state.flags & 0xe000) { - strm.msg = 'unknown header flags set'; - state.mode = BAD; - break; - } - if (state.head) { - state.head.text = ((hold >> 8) & 1); - } - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32_1(state.check, hbuf, 2, 0); - //===// - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = TIME; - /* falls through */ - case TIME: - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if (state.head) { - state.head.time = hold; - } - if (state.flags & 0x0200) { - //=== CRC4(state.check, hold) - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - hbuf[2] = (hold >>> 16) & 0xff; - hbuf[3] = (hold >>> 24) & 0xff; - state.check = crc32_1(state.check, hbuf, 4, 0); - //=== - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = OS; - /* falls through */ - case OS: - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if (state.head) { - state.head.xflags = (hold & 0xff); - state.head.os = (hold >> 8); - } - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32_1(state.check, hbuf, 2, 0); - //===// - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = EXLEN; - /* falls through */ - case EXLEN: - if (state.flags & 0x0400) { - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.length = hold; - if (state.head) { - state.head.extra_len = hold; - } - if (state.flags & 0x0200) { - //=== CRC2(state.check, hold); - hbuf[0] = hold & 0xff; - hbuf[1] = (hold >>> 8) & 0xff; - state.check = crc32_1(state.check, hbuf, 2, 0); - //===// - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - } - else if (state.head) { - state.head.extra = null/*Z_NULL*/; - } - state.mode = EXTRA; - /* falls through */ - case EXTRA: - if (state.flags & 0x0400) { - copy = state.length; - if (copy > have) { copy = have; } - if (copy) { - if (state.head) { - len = state.head.extra_len - state.length; - if (!state.head.extra) { - // Use untyped array for more convenient processing later - state.head.extra = new Uint8Array(state.head.extra_len); - } - state.head.extra.set( - input.subarray( - next, - // extra field is limited to 65536 bytes - // - no need for additional size check - next + copy - ), - /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ - len - ); - //zmemcpy(state.head.extra + len, next, - // len + copy > state.head.extra_max ? - // state.head.extra_max - len : copy); - } - if (state.flags & 0x0200) { - state.check = crc32_1(state.check, input, copy, next); - } - have -= copy; - next += copy; - state.length -= copy; - } - if (state.length) { break inf_leave; } - } - state.length = 0; - state.mode = NAME; - /* falls through */ - case NAME: - if (state.flags & 0x0800) { - if (have === 0) { break inf_leave; } - copy = 0; - do { - // TODO: 2 or 1 bytes? - len = input[next + copy++]; - /* use constant limit because in js we should not preallocate memory */ - if (state.head && len && - (state.length < 65536 /*state.head.name_max*/)) { - state.head.name += String.fromCharCode(len); - } - } while (len && copy < have); - - if (state.flags & 0x0200) { - state.check = crc32_1(state.check, input, copy, next); - } - have -= copy; - next += copy; - if (len) { break inf_leave; } - } - else if (state.head) { - state.head.name = null; - } - state.length = 0; - state.mode = COMMENT; - /* falls through */ - case COMMENT: - if (state.flags & 0x1000) { - if (have === 0) { break inf_leave; } - copy = 0; - do { - len = input[next + copy++]; - /* use constant limit because in js we should not preallocate memory */ - if (state.head && len && - (state.length < 65536 /*state.head.comm_max*/)) { - state.head.comment += String.fromCharCode(len); - } - } while (len && copy < have); - if (state.flags & 0x0200) { - state.check = crc32_1(state.check, input, copy, next); - } - have -= copy; - next += copy; - if (len) { break inf_leave; } - } - else if (state.head) { - state.head.comment = null; - } - state.mode = HCRC; - /* falls through */ - case HCRC: - if (state.flags & 0x0200) { - //=== NEEDBITS(16); */ - while (bits < 16) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if (hold !== (state.check & 0xffff)) { - strm.msg = 'header crc mismatch'; - state.mode = BAD; - break; - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - } - if (state.head) { - state.head.hcrc = ((state.flags >> 9) & 1); - state.head.done = true; - } - strm.adler = state.check = 0; - state.mode = TYPE; - break; - case DICTID: - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - strm.adler = state.check = zswap32(hold); - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = DICT; - /* falls through */ - case DICT: - if (state.havedict === 0) { - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - //--- - return Z_NEED_DICT$1; - } - strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/; - state.mode = TYPE; - /* falls through */ - case TYPE: - if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } - /* falls through */ - case TYPEDO: - if (state.last) { - //--- BYTEBITS() ---// - hold >>>= bits & 7; - bits -= bits & 7; - //---// - state.mode = CHECK; - break; - } - //=== NEEDBITS(3); */ - while (bits < 3) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.last = (hold & 0x01)/*BITS(1)*/; - //--- DROPBITS(1) ---// - hold >>>= 1; - bits -= 1; - //---// - - switch ((hold & 0x03)/*BITS(2)*/) { - case 0: /* stored block */ - //Tracev((stderr, "inflate: stored block%s\n", - // state.last ? " (last)" : "")); - state.mode = STORED; - break; - case 1: /* fixed block */ - fixedtables(state); - //Tracev((stderr, "inflate: fixed codes block%s\n", - // state.last ? " (last)" : "")); - state.mode = LEN_; /* decode codes */ - if (flush === Z_TREES) { - //--- DROPBITS(2) ---// - hold >>>= 2; - bits -= 2; - //---// - break inf_leave; - } - break; - case 2: /* dynamic block */ - //Tracev((stderr, "inflate: dynamic codes block%s\n", - // state.last ? " (last)" : "")); - state.mode = TABLE; - break; - case 3: - strm.msg = 'invalid block type'; - state.mode = BAD; - } - //--- DROPBITS(2) ---// - hold >>>= 2; - bits -= 2; - //---// - break; - case STORED: - //--- BYTEBITS() ---// /* go to byte boundary */ - hold >>>= bits & 7; - bits -= bits & 7; - //---// - //=== NEEDBITS(32); */ - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) { - strm.msg = 'invalid stored block lengths'; - state.mode = BAD; - break; - } - state.length = hold & 0xffff; - //Tracev((stderr, "inflate: stored length %u\n", - // state.length)); - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - state.mode = COPY_; - if (flush === Z_TREES) { break inf_leave; } - /* falls through */ - case COPY_: - state.mode = COPY; - /* falls through */ - case COPY: - copy = state.length; - if (copy) { - if (copy > have) { copy = have; } - if (copy > left) { copy = left; } - if (copy === 0) { break inf_leave; } - //--- zmemcpy(put, next, copy); --- - output.set(input.subarray(next, next + copy), put); - //---// - have -= copy; - next += copy; - left -= copy; - put += copy; - state.length -= copy; - break; - } - //Tracev((stderr, "inflate: stored end\n")); - state.mode = TYPE; - break; - case TABLE: - //=== NEEDBITS(14); */ - while (bits < 14) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257; - //--- DROPBITS(5) ---// - hold >>>= 5; - bits -= 5; - //---// - state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1; - //--- DROPBITS(5) ---// - hold >>>= 5; - bits -= 5; - //---// - state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4; - //--- DROPBITS(4) ---// - hold >>>= 4; - bits -= 4; - //---// - //#ifndef PKZIP_BUG_WORKAROUND - if (state.nlen > 286 || state.ndist > 30) { - strm.msg = 'too many length or distance symbols'; - state.mode = BAD; - break; - } - //#endif - //Tracev((stderr, "inflate: table sizes ok\n")); - state.have = 0; - state.mode = LENLENS; - /* falls through */ - case LENLENS: - while (state.have < state.ncode) { - //=== NEEDBITS(3); - while (bits < 3) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.lens[order[state.have++]] = (hold & 0x07);//BITS(3); - //--- DROPBITS(3) ---// - hold >>>= 3; - bits -= 3; - //---// - } - while (state.have < 19) { - state.lens[order[state.have++]] = 0; - } - // We have separate tables & no pointers. 2 commented lines below not needed. - //state.next = state.codes; - //state.lencode = state.next; - // Switch to use dynamic table - state.lencode = state.lendyn; - state.lenbits = 7; - - opts = { bits: state.lenbits }; - ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts); - state.lenbits = opts.bits; - - if (ret) { - strm.msg = 'invalid code lengths set'; - state.mode = BAD; - break; - } - //Tracev((stderr, "inflate: code lengths ok\n")); - state.have = 0; - state.mode = CODELENS; - /* falls through */ - case CODELENS: - while (state.have < state.nlen + state.ndist) { - for (;;) { - here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/ - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; - - if ((here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - if (here_val < 16) { - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - state.lens[state.have++] = here_val; - } - else { - if (here_val === 16) { - //=== NEEDBITS(here.bits + 2); - n = here_bits + 2; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - if (state.have === 0) { - strm.msg = 'invalid bit length repeat'; - state.mode = BAD; - break; - } - len = state.lens[state.have - 1]; - copy = 3 + (hold & 0x03);//BITS(2); - //--- DROPBITS(2) ---// - hold >>>= 2; - bits -= 2; - //---// - } - else if (here_val === 17) { - //=== NEEDBITS(here.bits + 3); - n = here_bits + 3; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - len = 0; - copy = 3 + (hold & 0x07);//BITS(3); - //--- DROPBITS(3) ---// - hold >>>= 3; - bits -= 3; - //---// - } - else { - //=== NEEDBITS(here.bits + 7); - n = here_bits + 7; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - len = 0; - copy = 11 + (hold & 0x7f);//BITS(7); - //--- DROPBITS(7) ---// - hold >>>= 7; - bits -= 7; - //---// - } - if (state.have + copy > state.nlen + state.ndist) { - strm.msg = 'invalid bit length repeat'; - state.mode = BAD; - break; - } - while (copy--) { - state.lens[state.have++] = len; - } - } - } - - /* handle error breaks in while */ - if (state.mode === BAD) { break; } - - /* check for end-of-block code (better have one) */ - if (state.lens[256] === 0) { - strm.msg = 'invalid code -- missing end-of-block'; - state.mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state.lenbits = 9; - - opts = { bits: state.lenbits }; - ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts); - // We have separate tables & no pointers. 2 commented lines below not needed. - // state.next_index = opts.table_index; - state.lenbits = opts.bits; - // state.lencode = state.next; - - if (ret) { - strm.msg = 'invalid literal/lengths set'; - state.mode = BAD; - break; - } - - state.distbits = 6; - //state.distcode.copy(state.codes); - // Switch to use dynamic table - state.distcode = state.distdyn; - opts = { bits: state.distbits }; - ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts); - // We have separate tables & no pointers. 2 commented lines below not needed. - // state.next_index = opts.table_index; - state.distbits = opts.bits; - // state.distcode = state.next; - - if (ret) { - strm.msg = 'invalid distances set'; - state.mode = BAD; - break; - } - //Tracev((stderr, 'inflate: codes ok\n')); - state.mode = LEN_; - if (flush === Z_TREES) { break inf_leave; } - /* falls through */ - case LEN_: - state.mode = LEN; - /* falls through */ - case LEN: - if (have >= 6 && left >= 258) { - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - //--- - inffast(strm, _out); - //--- LOAD() --- - put = strm.next_out; - output = strm.output; - left = strm.avail_out; - next = strm.next_in; - input = strm.input; - have = strm.avail_in; - hold = state.hold; - bits = state.bits; - //--- - - if (state.mode === TYPE) { - state.back = -1; - } - break; - } - state.back = 0; - for (;;) { - here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/ - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; - - if (here_bits <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - if (here_op && (here_op & 0xf0) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (;;) { - here = state.lencode[last_val + - ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; - - if ((last_bits + here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - //--- DROPBITS(last.bits) ---// - hold >>>= last_bits; - bits -= last_bits; - //---// - state.back += last_bits; - } - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - state.back += here_bits; - state.length = here_val; - if (here_op === 0) { - //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - // "inflate: literal '%c'\n" : - // "inflate: literal 0x%02x\n", here.val)); - state.mode = LIT; - break; - } - if (here_op & 32) { - //Tracevv((stderr, "inflate: end of block\n")); - state.back = -1; - state.mode = TYPE; - break; - } - if (here_op & 64) { - strm.msg = 'invalid literal/length code'; - state.mode = BAD; - break; - } - state.extra = here_op & 15; - state.mode = LENEXT; - /* falls through */ - case LENEXT: - if (state.extra) { - //=== NEEDBITS(state.extra); - n = state.extra; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; - //--- DROPBITS(state.extra) ---// - hold >>>= state.extra; - bits -= state.extra; - //---// - state.back += state.extra; - } - //Tracevv((stderr, "inflate: length %u\n", state.length)); - state.was = state.length; - state.mode = DIST; - /* falls through */ - case DIST: - for (;;) { - here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/ - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; - - if ((here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - if ((here_op & 0xf0) === 0) { - last_bits = here_bits; - last_op = here_op; - last_val = here_val; - for (;;) { - here = state.distcode[last_val + - ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)]; - here_bits = here >>> 24; - here_op = (here >>> 16) & 0xff; - here_val = here & 0xffff; - - if ((last_bits + here_bits) <= bits) { break; } - //--- PULLBYTE() ---// - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - //---// - } - //--- DROPBITS(last.bits) ---// - hold >>>= last_bits; - bits -= last_bits; - //---// - state.back += last_bits; - } - //--- DROPBITS(here.bits) ---// - hold >>>= here_bits; - bits -= here_bits; - //---// - state.back += here_bits; - if (here_op & 64) { - strm.msg = 'invalid distance code'; - state.mode = BAD; - break; - } - state.offset = here_val; - state.extra = (here_op) & 15; - state.mode = DISTEXT; - /* falls through */ - case DISTEXT: - if (state.extra) { - //=== NEEDBITS(state.extra); - n = state.extra; - while (bits < n) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/; - //--- DROPBITS(state.extra) ---// - hold >>>= state.extra; - bits -= state.extra; - //---// - state.back += state.extra; - } - //#ifdef INFLATE_STRICT - if (state.offset > state.dmax) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break; - } - //#endif - //Tracevv((stderr, "inflate: distance %u\n", state.offset)); - state.mode = MATCH; - /* falls through */ - case MATCH: - if (left === 0) { break inf_leave; } - copy = _out - left; - if (state.offset > copy) { /* copy from window */ - copy = state.offset - copy; - if (copy > state.whave) { - if (state.sane) { - strm.msg = 'invalid distance too far back'; - state.mode = BAD; - break; - } - // (!) This block is disabled in zlib defaults, - // don't enable it for binary compatibility - //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - // Trace((stderr, "inflate.c too far\n")); - // copy -= state.whave; - // if (copy > state.length) { copy = state.length; } - // if (copy > left) { copy = left; } - // left -= copy; - // state.length -= copy; - // do { - // output[put++] = 0; - // } while (--copy); - // if (state.length === 0) { state.mode = LEN; } - // break; - //#endif - } - if (copy > state.wnext) { - copy -= state.wnext; - from = state.wsize - copy; - } - else { - from = state.wnext - copy; - } - if (copy > state.length) { copy = state.length; } - from_source = state.window; - } - else { /* copy from output */ - from_source = output; - from = put - state.offset; - copy = state.length; - } - if (copy > left) { copy = left; } - left -= copy; - state.length -= copy; - do { - output[put++] = from_source[from++]; - } while (--copy); - if (state.length === 0) { state.mode = LEN; } - break; - case LIT: - if (left === 0) { break inf_leave; } - output[put++] = state.length; - left--; - state.mode = LEN; - break; - case CHECK: - if (state.wrap) { - //=== NEEDBITS(32); - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - // Use '|' instead of '+' to make sure that result is signed - hold |= input[next++] << bits; - bits += 8; - } - //===// - _out -= left; - strm.total_out += _out; - state.total += _out; - if (_out) { - strm.adler = state.check = - /*UPDATE(state.check, put - _out, _out);*/ - (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out)); - - } - _out = left; - // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too - if ((state.flags ? hold : zswap32(hold)) !== state.check) { - strm.msg = 'incorrect data check'; - state.mode = BAD; - break; - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - //Tracev((stderr, "inflate: check matches trailer\n")); - } - state.mode = LENGTH; - /* falls through */ - case LENGTH: - if (state.wrap && state.flags) { - //=== NEEDBITS(32); - while (bits < 32) { - if (have === 0) { break inf_leave; } - have--; - hold += input[next++] << bits; - bits += 8; - } - //===// - if (hold !== (state.total & 0xffffffff)) { - strm.msg = 'incorrect length check'; - state.mode = BAD; - break; - } - //=== INITBITS(); - hold = 0; - bits = 0; - //===// - //Tracev((stderr, "inflate: length matches trailer\n")); - } - state.mode = DONE; - /* falls through */ - case DONE: - ret = Z_STREAM_END$1; - break inf_leave; - case BAD: - ret = Z_DATA_ERROR$1; - break inf_leave; - case MEM: - return Z_MEM_ERROR$1; - case SYNC: - /* falls through */ - default: - return Z_STREAM_ERROR$1; - } - } - - // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave" - - /* - Return from inflate(), updating the total counts and the check value. - If there was no progress during the inflate() call, return a buffer - error. Call updatewindow() to create and/or update the window state. - Note: a memory error from inflate() is non-recoverable. - */ - - //--- RESTORE() --- - strm.next_out = put; - strm.avail_out = left; - strm.next_in = next; - strm.avail_in = have; - state.hold = hold; - state.bits = bits; - //--- - - if (state.wsize || (_out !== strm.avail_out && state.mode < BAD && - (state.mode < CHECK || flush !== Z_FINISH$1))) { - if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ; - } - _in -= strm.avail_in; - _out -= strm.avail_out; - strm.total_in += _in; - strm.total_out += _out; - state.total += _out; - if (state.wrap && _out) { - strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ - (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out)); - } - strm.data_type = state.bits + (state.last ? 64 : 0) + - (state.mode === TYPE ? 128 : 0) + - (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); - if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) { - ret = Z_BUF_ERROR; - } - return ret; - }; - - - const inflateEnd = (strm) => { - - if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) { - return Z_STREAM_ERROR$1; - } - - let state = strm.state; - if (state.window) { - state.window = null; - } - strm.state = null; - return Z_OK$1; - }; - - - const inflateGetHeader = (strm, head) => { - - /* check state */ - if (!strm || !strm.state) { return Z_STREAM_ERROR$1; } - const state = strm.state; - if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; } - - /* save header structure */ - state.head = head; - head.done = false; - return Z_OK$1; - }; - - - const inflateSetDictionary = (strm, dictionary) => { - const dictLength = dictionary.length; - - let state; - let dictid; - let ret; - - /* check state */ - if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; } - state = strm.state; - - if (state.wrap !== 0 && state.mode !== DICT) { - return Z_STREAM_ERROR$1; - } - - /* check for correct dictionary identifier */ - if (state.mode === DICT) { - dictid = 1; /* adler32(0, null, 0)*/ - /* dictid = adler32(dictid, dictionary, dictLength); */ - dictid = adler32_1(dictid, dictionary, dictLength, 0); - if (dictid !== state.check) { - return Z_DATA_ERROR$1; - } - } - /* copy dictionary to window using updatewindow(), which will amend the - existing dictionary if appropriate */ - ret = updatewindow(strm, dictionary, dictLength, dictLength); - if (ret) { - state.mode = MEM; - return Z_MEM_ERROR$1; - } - state.havedict = 1; - // Tracev((stderr, "inflate: dictionary set\n")); - return Z_OK$1; - }; - - - var inflateReset_1 = inflateReset; - var inflateReset2_1 = inflateReset2; - var inflateResetKeep_1 = inflateResetKeep; - var inflateInit_1 = inflateInit; - var inflateInit2_1 = inflateInit2; - var inflate_2$1 = inflate$2; - var inflateEnd_1 = inflateEnd; - var inflateGetHeader_1 = inflateGetHeader; - var inflateSetDictionary_1 = inflateSetDictionary; - var inflateInfo = 'pako inflate (from Nodeca project)'; - - /* Not implemented - module.exports.inflateCopy = inflateCopy; - module.exports.inflateGetDictionary = inflateGetDictionary; - module.exports.inflateMark = inflateMark; - module.exports.inflatePrime = inflatePrime; - module.exports.inflateSync = inflateSync; - module.exports.inflateSyncPoint = inflateSyncPoint; - module.exports.inflateUndermine = inflateUndermine; - */ - - var inflate_1$2 = { - inflateReset: inflateReset_1, - inflateReset2: inflateReset2_1, - inflateResetKeep: inflateResetKeep_1, - inflateInit: inflateInit_1, - inflateInit2: inflateInit2_1, - inflate: inflate_2$1, - inflateEnd: inflateEnd_1, - inflateGetHeader: inflateGetHeader_1, - inflateSetDictionary: inflateSetDictionary_1, - inflateInfo: inflateInfo - }; - - // (C) 1995-2013 Jean-loup Gailly and Mark Adler - // (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin - // - // This software is provided 'as-is', without any express or implied - // warranty. In no event will the authors be held liable for any damages - // arising from the use of this software. - // - // Permission is granted to anyone to use this software for any purpose, - // including commercial applications, and to alter it and redistribute it - // freely, subject to the following restrictions: - // - // 1. The origin of this software must not be misrepresented; you must not - // claim that you wrote the original software. If you use this software - // in a product, an acknowledgment in the product documentation would be - // appreciated but is not required. - // 2. Altered source versions must be plainly marked as such, and must not be - // misrepresented as being the original software. - // 3. This notice may not be removed or altered from any source distribution. - - function GZheader() { - /* true if compressed data believed to be text */ - this.text = 0; - /* modification time */ - this.time = 0; - /* extra flags (not used when writing a gzip file) */ - this.xflags = 0; - /* operating system */ - this.os = 0; - /* pointer to extra field or Z_NULL if none */ - this.extra = null; - /* extra field length (valid if extra != Z_NULL) */ - this.extra_len = 0; // Actually, we don't need it in JS, - // but leave for few code modifications - - // - // Setup limits is not necessary because in js we should not preallocate memory - // for inflate use constant limit in 65536 bytes - // - - /* space at extra (only when reading header) */ - // this.extra_max = 0; - /* pointer to zero-terminated file name or Z_NULL */ - this.name = ''; - /* space at name (only when reading header) */ - // this.name_max = 0; - /* pointer to zero-terminated comment or Z_NULL */ - this.comment = ''; - /* space at comment (only when reading header) */ - // this.comm_max = 0; - /* true if there was or will be a header crc */ - this.hcrc = 0; - /* true when done reading gzip header (not used when writing a gzip file) */ - this.done = false; - } - - var gzheader = GZheader; - - const toString = Object.prototype.toString; - - /* Public constants ==========================================================*/ - /* ===========================================================================*/ - - const { - Z_NO_FLUSH, Z_FINISH, - Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR - } = constants$2; - - /* ===========================================================================*/ - - - /** - * class Inflate - * - * Generic JS-style wrapper for zlib calls. If you don't need - * streaming behaviour - use more simple functions: [[inflate]] - * and [[inflateRaw]]. - **/ - - /* internal - * inflate.chunks -> Array - * - * Chunks of output data, if [[Inflate#onData]] not overridden. - **/ - - /** - * Inflate.result -> Uint8Array|String - * - * Uncompressed result, generated by default [[Inflate#onData]] - * and [[Inflate#onEnd]] handlers. Filled after you push last chunk - * (call [[Inflate#push]] with `Z_FINISH` / `true` param). - **/ - - /** - * Inflate.err -> Number - * - * Error code after inflate finished. 0 (Z_OK) on success. - * Should be checked if broken data possible. - **/ - - /** - * Inflate.msg -> String - * - * Error message, if [[Inflate.err]] != 0 - **/ - - - /** - * new Inflate(options) - * - options (Object): zlib inflate options. - * - * Creates new inflator instance with specified params. Throws exception - * on bad params. Supported options: - * - * - `windowBits` - * - `dictionary` - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information on these. - * - * Additional options, for internal needs: - * - * - `chunkSize` - size of generated data chunks (16K by default) - * - `raw` (Boolean) - do raw inflate - * - `to` (String) - if equal to 'string', then result will be converted - * from utf8 to utf16 (javascript) string. When string output requested, - * chunk length can differ from `chunkSize`, depending on content. - * - * By default, when no options set, autodetect deflate/gzip data format via - * wrapper header. - * - * ##### Example: - * - * ```javascript - * const pako = require('pako') - * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9]) - * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]); - * - * const inflate = new pako.Inflate({ level: 3}); - * - * inflate.push(chunk1, false); - * inflate.push(chunk2, true); // true -> last chunk - * - * if (inflate.err) { throw new Error(inflate.err); } - * - * console.log(inflate.result); - * ``` - **/ - function Inflate$1(options) { - this.options = common.assign({ - chunkSize: 1024 * 64, - windowBits: 15, - to: '' - }, options || {}); - - const opt = this.options; - - // Force window size for `raw` data, if not set directly, - // because we have no header for autodetect. - if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) { - opt.windowBits = -opt.windowBits; - if (opt.windowBits === 0) { opt.windowBits = -15; } - } - - // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate - if ((opt.windowBits >= 0) && (opt.windowBits < 16) && - !(options && options.windowBits)) { - opt.windowBits += 32; - } - - // Gzip header has no info about windows size, we can do autodetect only - // for deflate. So, if window size not set, force it to max when gzip possible - if ((opt.windowBits > 15) && (opt.windowBits < 48)) { - // bit 3 (16) -> gzipped data - // bit 4 (32) -> autodetect gzip/deflate - if ((opt.windowBits & 15) === 0) { - opt.windowBits |= 15; - } - } - - this.err = 0; // error code, if happens (0 = Z_OK) - this.msg = ''; // error message - this.ended = false; // used to avoid multiple onEnd() calls - this.chunks = []; // chunks of compressed data - - this.strm = new zstream(); - this.strm.avail_out = 0; - - let status = inflate_1$2.inflateInit2( - this.strm, - opt.windowBits - ); - - if (status !== Z_OK) { - throw new Error(messages[status]); - } - - this.header = new gzheader(); - - inflate_1$2.inflateGetHeader(this.strm, this.header); - - // Setup dictionary - if (opt.dictionary) { - // Convert data if needed - if (typeof opt.dictionary === 'string') { - opt.dictionary = strings.string2buf(opt.dictionary); - } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') { - opt.dictionary = new Uint8Array(opt.dictionary); - } - if (opt.raw) { //In raw mode we need to set the dictionary early - status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary); - if (status !== Z_OK) { - throw new Error(messages[status]); - } - } - } - } - - /** - * Inflate#push(data[, flush_mode]) -> Boolean - * - data (Uint8Array|ArrayBuffer): input data - * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE - * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH, - * `true` means Z_FINISH. - * - * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with - * new output chunks. Returns `true` on success. If end of stream detected, - * [[Inflate#onEnd]] will be called. - * - * `flush_mode` is not needed for normal operation, because end of stream - * detected automatically. You may try to use it for advanced things, but - * this functionality was not tested. - * - * On fail call [[Inflate#onEnd]] with error code and return false. - * - * ##### Example - * - * ```javascript - * push(chunk, false); // push one of data chunks - * ... - * push(chunk, true); // push last chunk - * ``` - **/ - Inflate$1.prototype.push = function (data, flush_mode) { - const strm = this.strm; - const chunkSize = this.options.chunkSize; - const dictionary = this.options.dictionary; - let status, _flush_mode, last_avail_out; - - if (this.ended) return false; - - if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; - else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH; - - // Convert data if needed - if (toString.call(data) === '[object ArrayBuffer]') { - strm.input = new Uint8Array(data); - } else { - strm.input = data; - } - - strm.next_in = 0; - strm.avail_in = strm.input.length; - - for (;;) { - if (strm.avail_out === 0) { - strm.output = new Uint8Array(chunkSize); - strm.next_out = 0; - strm.avail_out = chunkSize; - } - - status = inflate_1$2.inflate(strm, _flush_mode); - - if (status === Z_NEED_DICT && dictionary) { - status = inflate_1$2.inflateSetDictionary(strm, dictionary); - - if (status === Z_OK) { - status = inflate_1$2.inflate(strm, _flush_mode); - } else if (status === Z_DATA_ERROR) { - // Replace code with more verbose - status = Z_NEED_DICT; - } - } - - // Skip snyc markers if more data follows and not raw mode - while (strm.avail_in > 0 && - status === Z_STREAM_END && - strm.state.wrap > 0 && - data[strm.next_in] !== 0) - { - inflate_1$2.inflateReset(strm); - status = inflate_1$2.inflate(strm, _flush_mode); - } - - switch (status) { - case Z_STREAM_ERROR: - case Z_DATA_ERROR: - case Z_NEED_DICT: - case Z_MEM_ERROR: - this.onEnd(status); - this.ended = true; - return false; - } - - // Remember real `avail_out` value, because we may patch out buffer content - // to align utf8 strings boundaries. - last_avail_out = strm.avail_out; - - if (strm.next_out) { - if (strm.avail_out === 0 || status === Z_STREAM_END) { - - if (this.options.to === 'string') { - - let next_out_utf8 = strings.utf8border(strm.output, strm.next_out); - - let tail = strm.next_out - next_out_utf8; - let utf8str = strings.buf2string(strm.output, next_out_utf8); - - // move tail & realign counters - strm.next_out = tail; - strm.avail_out = chunkSize - tail; - if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0); - - this.onData(utf8str); - - } else { - this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out)); - } - } - } - - // Must repeat iteration if out buffer is full - if (status === Z_OK && last_avail_out === 0) continue; - - // Finalize if end of stream reached. - if (status === Z_STREAM_END) { - status = inflate_1$2.inflateEnd(this.strm); - this.onEnd(status); - this.ended = true; - return true; - } - - if (strm.avail_in === 0) break; - } - - return true; - }; - - - /** - * Inflate#onData(chunk) -> Void - * - chunk (Uint8Array|String): output data. When string output requested, - * each chunk will be string. - * - * By default, stores data blocks in `chunks[]` property and glue - * those in `onEnd`. Override this handler, if you need another behaviour. - **/ - Inflate$1.prototype.onData = function (chunk) { - this.chunks.push(chunk); - }; - - - /** - * Inflate#onEnd(status) -> Void - * - status (Number): inflate status. 0 (Z_OK) on success, - * other if not. - * - * Called either after you tell inflate that the input stream is - * complete (Z_FINISH). By default - join collected chunks, - * free memory and fill `results` / `err` properties. - **/ - Inflate$1.prototype.onEnd = function (status) { - // On success - join - if (status === Z_OK) { - if (this.options.to === 'string') { - this.result = this.chunks.join(''); - } else { - this.result = common.flattenChunks(this.chunks); - } - } - this.chunks = []; - this.err = status; - this.msg = this.strm.msg; - }; - - - /** - * inflate(data[, options]) -> Uint8Array|String - * - data (Uint8Array): input data to decompress. - * - options (Object): zlib inflate options. - * - * Decompress `data` with inflate/ungzip and `options`. Autodetect - * format via wrapper header by default. That's why we don't provide - * separate `ungzip` method. - * - * Supported options are: - * - * - windowBits - * - * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) - * for more information. - * - * Sugar (options): - * - * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify - * negative windowBits implicitly. - * - `to` (String) - if equal to 'string', then result will be converted - * from utf8 to utf16 (javascript) string. When string output requested, - * chunk length can differ from `chunkSize`, depending on content. - * - * - * ##### Example: - * - * ```javascript - * const pako = require('pako'); - * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9])); - * let output; - * - * try { - * output = pako.inflate(input); - * } catch (err) { - * console.log(err); - * } - * ``` - **/ - function inflate$1(input, options) { - const inflator = new Inflate$1(options); - - inflator.push(input); - - // That will never happens, if you don't cheat with options :) - if (inflator.err) throw inflator.msg || messages[inflator.err]; - - return inflator.result; - } - - - /** - * inflateRaw(data[, options]) -> Uint8Array|String - * - data (Uint8Array): input data to decompress. - * - options (Object): zlib inflate options. - * - * The same as [[inflate]], but creates raw data, without wrapper - * (header and adler32 crc). - **/ - function inflateRaw$1(input, options) { - options = options || {}; - options.raw = true; - return inflate$1(input, options); - } - - - /** - * ungzip(data[, options]) -> Uint8Array|String - * - data (Uint8Array): input data to decompress. - * - options (Object): zlib inflate options. - * - * Just shortcut to [[inflate]], because it autodetects format - * by header.content. Done for convenience. - **/ - - - var Inflate_1$1 = Inflate$1; - var inflate_2 = inflate$1; - var inflateRaw_1$1 = inflateRaw$1; - var ungzip$1 = inflate$1; - var constants = constants$2; - - var inflate_1$1 = { - Inflate: Inflate_1$1, - inflate: inflate_2, - inflateRaw: inflateRaw_1$1, - ungzip: ungzip$1, - constants: constants - }; - - const { Deflate, deflate, deflateRaw, gzip } = deflate_1$1; - - const { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1; - - - - var Deflate_1 = Deflate; - var deflate_1 = deflate; - var deflateRaw_1 = deflateRaw; - var gzip_1 = gzip; - var Inflate_1 = Inflate; - var inflate_1 = inflate; - var inflateRaw_1 = inflateRaw; - var ungzip_1 = ungzip; - var constants_1 = constants$2; - - var pako = { - Deflate: Deflate_1, - deflate: deflate_1, - deflateRaw: deflateRaw_1, - gzip: gzip_1, - Inflate: Inflate_1, - inflate: inflate_1, - inflateRaw: inflateRaw_1, - ungzip: ungzip_1, - constants: constants_1 - }; - - exports.Deflate = Deflate_1; - exports.Inflate = Inflate_1; - exports.constants = constants_1; - exports['default'] = pako; - exports.deflate = deflate_1; - exports.deflateRaw = deflateRaw_1; - exports.gzip = gzip_1; - exports.inflate = inflate_1; - exports.inflateRaw = inflateRaw_1; - exports.ungzip = ungzip_1; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),l=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function m(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let b,g,p;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,o=0;for(n=1;n<=s;n++)o=o+a[n-1]<<1,i[n]=o;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,l,h,d=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+d++],n+=(255&t.pending_buf[t.sym_buf+d++])<<8,s=t.pending_buf[t.sym_buf+d++],0===n?z(t,s,e):(l=c[s],z(t,l+a+1,e),h=r[l],0!==h&&(s-=u[l],x(t,s,h)),n--,l=v(n),z(t,l,i),h=o[l],0!==h&&(n-=w[l],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let o,l,h,d=-1;for(t.heap_len=0,t.heap_max=573,o=0;o>1;o>=1;o--)S(t,a,o);h=r;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),l=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=l,a[2*h]=a[2*o]+a[2*l],t.depth[h]=(t.depth[o]>=t.depth[l]?t.depth[o]:t.depth[l])+1,a[2*o+1]=a[2*l+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,m=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,m++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=l&&(u=o[_-l]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==m){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,m-=2}while(m>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o{x(t,0+(i?1:0),3),Z(t),y(t,a),y(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var N=(t,e,i,n)=>{let s,r,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var C=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const M=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var H=(t,e,a,i)=>{const n=M,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},j={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:P,_tr_stored_block:Y,_tr_flush_block:G,_tr_tally:X,_tr_align:W}=B,{Z_NO_FLUSH:q,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:Q,Z_FINISH:V,Z_BLOCK:$,Z_OK:tt,Z_STREAM_END:et,Z_STREAM_ERROR:at,Z_DATA_ERROR:it,Z_BUF_ERROR:nt,Z_DEFAULT_COMPRESSION:st,Z_FILTERED:rt,Z_HUFFMAN_ONLY:ot,Z_RLE:lt,Z_FIXED:ht,Z_DEFAULT_STRATEGY:dt,Z_UNKNOWN:_t,Z_DEFLATED:ft}=K,ct=258,ut=262,wt=42,mt=113,bt=666,gt=(t,e)=>(t.msg=j[e],e),pt=t=>2*t-(t>4?9:0),kt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},vt=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let yt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=(t,e)=>{G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,xt(t.strm)},At=(t,e)=>{t.pending_buf[t.pending++]=e},Et=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Rt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=C(t.adler,e,n,a):2===t.state.wrap&&(t.adler=H(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Zt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ct;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},Ut=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),vt(t),i+=e),0===t.strm.avail_in)break;if(a=Rt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=yt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_outi+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,xt(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(Rt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_watern&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(Rt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===V)&&e!==q&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===V&&0===t.strm.avail_in&&a===i?1:0,Y(t,t.block_start,a,r),t.block_start+=a,xt(t.strm)),r?3:1)},Dt=(t,e)=>{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ut&&(t.match_length=Zt(t,a)),t.match_length>=3)if(i=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else i=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2},Tt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=X(t,0,t.window[t.strstart-1]),i&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Ot(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const It=[new Ot(0,0,0,0,St),new Ot(4,4,8,4,Dt),new Ot(4,5,16,8,Dt),new Ot(4,6,32,32,Dt),new Ot(4,4,16,16,Tt),new Ot(8,16,32,32,Tt),new Ot(8,16,128,128,Tt),new Ot(8,32,128,256,Tt),new Ot(32,128,258,1024,Tt),new Ot(32,258,258,4096,Tt)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ft,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),kt(this.dyn_ltree),kt(this.dyn_dtree),kt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),kt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),kt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Lt=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==wt&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==mt&&e.status!==bt?1:0},Nt=t=>{if(Lt(t))return gt(t,at);t.total_in=t.total_out=0,t.data_type=_t;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?wt:mt,t.adler=2===e.wrap?0:1,e.last_flush=-2,P(e),tt},Bt=t=>{const e=Nt(t);var a;return e===tt&&((a=t.state).window_size=2*a.w_size,kt(a.head),a.max_lazy_match=It[a.level].max_lazy,a.good_match=It[a.level].good_length,a.nice_match=It[a.level].nice_length,a.max_chain_length=It[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ct=(t,e,a,i,n,s)=>{if(!t)return at;let r=1;if(e===st&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ft||i<8||i>15||e<0||e>9||s<0||s>ht||8===i&&1!==r)return gt(t,at);8===i&&(i=9);const o=new Ft;return t.state=o,o.strm=t,o.status=wt,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<Ct(t,e,ft,15,8,dt),deflateInit2:Ct,deflateReset:Bt,deflateResetKeep:Nt,deflateSetHeader:(t,e)=>Lt(t)||2!==t.state.wrap?at:(t.state.gzhead=e,tt),deflate:(t,e)=>{if(Lt(t)||e>$||e<0)return t?gt(t,at):at;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||a.status===bt&&e!==V)return gt(t,0===t.avail_out?nt:at);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(xt(t),0===t.avail_out)return a.last_flush=-1,tt}else if(0===t.avail_in&&pt(e)<=pt(i)&&e!==V)return gt(t,nt);if(a.status===bt&&0!==t.avail_in)return gt(t,nt);if(a.status===wt&&0===a.wrap&&(a.status=mt),a.status===wt){let e=ft+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=ot||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,Et(a,e),0!==a.strstart&&(Et(a,t.adler>>>16),Et(a,65535&t.adler)),t.adler=1,a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(57===a.status)if(t.adler=0,At(a,31),At(a,139),At(a,8),a.gzhead)At(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),At(a,255&a.gzhead.time),At(a,a.gzhead.time>>8&255),At(a,a.gzhead.time>>16&255),At(a,a.gzhead.time>>24&255),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(At(a,255&a.gzhead.extra.length),At(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=H(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(At(a,0),At(a,0),At(a,0),At(a,0),At(a,0),At(a,9===a.level?2:a.strategy>=ot||a.level<2?4:0),At(a,3),a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,xt(t),0!==a.pending)return a.last_flush=-1,tt;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=H(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i)),xt(t),0!==a.pending)return a.last_flush=-1,tt;i=0}e=a.gzindexi&&(t.adler=H(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(xt(t),0!==a.pending))return a.last_flush=-1,tt;At(a,255&t.adler),At(a,t.adler>>8&255),t.adler=0}if(a.status=mt,xt(t),0!==a.pending)return a.last_flush=-1,tt}if(0!==t.avail_in||0!==a.lookahead||e!==q&&a.status!==bt){let i=0===a.level?St(a,e):a.strategy===ot?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Ut(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ct){if(Ut(t),t.lookahead<=ct&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ct;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(zt(t,!1),0===t.strm.avail_out)?1:2})(a,e):It[a.level].func(a,e);if(3!==i&&4!==i||(a.status=bt),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),tt;if(2===i&&(e===J?W(a):e!==$&&(Y(a,0,0,!1),e===Q&&(kt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),xt(t),0===t.avail_out))return a.last_flush=-1,tt}return e!==V?tt:a.wrap<=0?et:(2===a.wrap?(At(a,255&t.adler),At(a,t.adler>>8&255),At(a,t.adler>>16&255),At(a,t.adler>>24&255),At(a,255&t.total_in),At(a,t.total_in>>8&255),At(a,t.total_in>>16&255),At(a,t.total_in>>24&255)):(Et(a,t.adler>>>16),Et(a,65535&t.adler)),xt(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?tt:et)},deflateEnd:t=>{if(Lt(t))return at;const e=t.state.status;return t.state=null,e===mt?gt(t,it):tt},deflateSetDictionary:(t,e)=>{let a=e.length;if(Lt(t))return at;const i=t.state,n=i.wrap;if(2===n||1===n&&i.status!==wt||i.lookahead)return at;if(1===n&&(t.adler=C(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(kt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Ut(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=yt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Ut(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,tt},deflateInfo:"pako deflate (from Nodeca project)"};const Ht=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var jt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Ht(a,e)&&(t[e]=a[e])}}return t},Kt=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Yt[254]=Yt[254]=1;var Gt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Xt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Yt[t[a]]>e?a:e};var qt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Jt=Object.prototype.toString,{Z_NO_FLUSH:Qt,Z_SYNC_FLUSH:Vt,Z_FULL_FLUSH:$t,Z_FINISH:te,Z_OK:ee,Z_STREAM_END:ae,Z_DEFAULT_COMPRESSION:ie,Z_DEFAULT_STRATEGY:ne,Z_DEFLATED:se}=K;function re(t){this.options=jt({level:ie,method:se,chunkSize:16384,windowBits:15,memLevel:8,strategy:ne},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=Mt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==ee)throw new Error(j[a]);if(e.header&&Mt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gt(e.dictionary):"[object ArrayBuffer]"===Jt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Mt.deflateSetDictionary(this.strm,t),a!==ee)throw new Error(j[a]);this._dict_set=!0}}function oe(t,e){const a=new re(e);if(a.push(t,!0),a.err)throw a.msg||j[a.err];return a.result}re.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?te:Qt,"string"==typeof t?a.input=Gt(t):"[object ArrayBuffer]"===Jt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Vt||s===$t)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Mt.deflate(a,s),n===ae)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Mt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===ee;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},re.prototype.onData=function(t){this.chunks.push(t)},re.prototype.onEnd=function(t){t===ee&&(this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var le={Deflate:re,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:K};const he=16209;var de=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<>>=p,c-=p),c<15&&(f+=z[a++]<>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<o){t.msg="invalid distance too far back",E.mode=he;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=he;break t}if(y=0,x=_,0===d){if(y+=l-p,p2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,U,S,D=null;for(w=0;w<=_e;w++)E[w]=0;for(m=0;m=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<_e;w++)R[w+1]=R[w]+E[w];for(m=0;m852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1=u?(U=D[r[m]-u],S=A[r[m]-u]):(U=96,S=0),h=1<>v)+d]=Z<<24|U<<16|S|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:be,Z_BLOCK:ge,Z_TREES:pe,Z_OK:ke,Z_STREAM_END:ve,Z_NEED_DICT:ye,Z_STREAM_ERROR:xe,Z_DATA_ERROR:ze,Z_MEM_ERROR:Ae,Z_BUF_ERROR:Ee,Z_DEFLATED:Re}=K,Ze=16180,Ue=16190,Se=16191,De=16192,Te=16194,Oe=16199,Ie=16200,Fe=16206,Le=16209,Ne=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Be(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ce=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Me=t=>{if(Ce(t))return xe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Ze,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ke},He=t=>{if(Ce(t))return xe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Me(t)},je=(t,e)=>{let a;if(Ce(t))return xe;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?xe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,He(t))},Ke=(t,e)=>{if(!t)return xe;const a=new Be;t.state=a,a.strm=t,a.window=null,a.mode=Ze;const i=je(t,e);return i!==ke&&(t.state=null),i};let Pe,Ye,Ge=!0;const Xe=t=>{if(Ge){Pe=new Int32Array(512),Ye=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(me(1,t.lens,0,288,Pe,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;me(2,t.lens,0,32,Ye,0,t.work,{bits:5}),Ge=!1}t.lencode=Pe,t.lenbits=9,t.distcode=Ye,t.distbits=5},We=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveKe(t,15),inflateInit2:Ke,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ce(t)||!t.output||!t.input&&0!==t.avail_in)return xe;a=t.state,a.mode===Se&&(a.mode=De),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=ke;t:for(;;)switch(a.mode){case Ze:if(0===a.wrap){a.mode=De;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=Le;break}if((15&h)!==Re){t.msg="unknown compression method",a.mode=Le;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=Le;break}a.dmax=1<>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=H(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<>>8&255,a.check=H(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=H(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=Se;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=Fe;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Xe(a),a.mode=Oe,e===pe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=Le}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=Le;break}if(a.length=65535&h,h=0,d=0,a.mode=Te,e===pe)break t;case Te:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=Se;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=Le;break}a.have=0,a.mode=16197;case 16197:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=me(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=Le;break}a.have=0,a.mode=16198;case 16198:for(;a.have>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=Le;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=Le;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===Le)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=Le;break}if(a.lenbits=9,E={bits:a.lenbits},x=me(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=Le;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=me(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=Le;break}if(a.mode=Oe,e===pe)break t;case Oe:a.mode=Ie;case Ie:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,a.mode===Se&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=Se;break}if(64&b){t.msg="invalid literal/length code",a.mode=Le;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=Le;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=Le;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=Le;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=Ie);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=Ie;break;case Fe:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<{if(Ce(t))return xe;let e=t.state;return e.window&&(e.window=null),t.state=null,ke},inflateGetHeader:(t,e)=>{if(Ce(t))return xe;const a=t.state;return 0==(2&a.wrap)?xe:(a.head=e,e.done=!1,ke)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return Ce(t)?xe:(i=t.state,0!==i.wrap&&i.mode!==Ue?xe:i.mode===Ue&&(n=1,n=C(n,e,a,0),n!==i.check)?ze:(s=We(t,e,a,a),s?(i.mode=16210,Ae):(i.havedict=1,ke)))},inflateInfo:"pako inflate (from Nodeca project)"};var Je=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Ve,Z_FINISH:$e,Z_OK:ta,Z_STREAM_END:ea,Z_NEED_DICT:aa,Z_STREAM_ERROR:ia,Z_DATA_ERROR:na,Z_MEM_ERROR:sa}=K;function ra(t){this.options=jt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new qt,this.strm.avail_out=0;let a=qe.inflateInit2(this.strm,e.windowBits);if(a!==ta)throw new Error(j[a]);if(this.header=new Je,qe.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gt(e.dictionary):"[object ArrayBuffer]"===Qe.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=qe.inflateSetDictionary(this.strm,e.dictionary),a!==ta)))throw new Error(j[a])}function oa(t,e){const a=new ra(e);if(a.push(t),a.err)throw a.msg||j[a.err];return a.result}ra.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?$e:Ve,"[object ArrayBuffer]"===Qe.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=qe.inflate(a,r),s===aa&&n&&(s=qe.inflateSetDictionary(a,n),s===ta?s=qe.inflate(a,r):s===na&&(s=aa));a.avail_in>0&&s===ea&&a.state.wrap>0&&0!==t[a.next_in];)qe.inflateReset(a),s=qe.inflate(a,r);switch(s){case ia:case na:case aa:case sa:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===ea))if("string"===this.options.to){let t=Wt(a.output,a.next_out),e=a.next_out-t,n=Xt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==ta||0!==o){if(s===ea)return s=qe.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},ra.prototype.onData=function(t){this.chunks.push(t)},ra.prototype.onEnd=function(t){t===ta&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var la={Inflate:ra,inflate:oa,inflateRaw:function(t,e){return(e=e||{}).raw=!0,oa(t,e)},ungzip:oa,constants:K};const{Deflate:ha,deflate:da,deflateRaw:_a,gzip:fa}=le,{Inflate:ca,inflate:ua,inflateRaw:wa,ungzip:ma}=la;var ba=ha,ga=da,pa=_a,ka=fa,va=ca,ya=ua,xa=wa,za=ma,Aa=K,Ea={Deflate:ba,deflate:ga,deflateRaw:pa,gzip:ka,Inflate:va,inflate:ya,inflateRaw:xa,ungzip:za,constants:Aa};t.Deflate=ba,t.Inflate=va,t.constants=Aa,t.default=Ea,t.deflate=ga,t.deflateRaw=pa,t.gzip=ka,t.inflate=ya,t.inflateRaw=xa,t.ungzip=za,Object.defineProperty(t,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js b/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js index 8c8787bb1..387fd76c3 100644 --- a/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +++ b/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js @@ -892,7 +892,7 @@ "x-tcl" : [ "tcl", "tk" ], "x-tex" : [ "tex", "ltx", "sty", "cls" ], "x-vcalendar" : "vcs", - "x-vcard" : "vcf", + "x-vcard" : "vfc", "n3" : "n3", "prs.lines.tag" : "dsc", "sgml" : [ "sgml", "sgm" ], diff --git a/src/plugins/index.js b/src/plugins/index.js index c38610446..89d4b8ba8 100644 --- a/src/plugins/index.js +++ b/src/plugins/index.js @@ -3,15 +3,14 @@ export * from "./AnnotationsPlugin/index.js"; export * from "./AxisGizmoPlugin/index.js"; export * from "./BCFViewpointsPlugin/index.js"; export * from "./DistanceMeasurementsPlugin/index.js"; -export * from "./FaceAlignedSectionPlanesPlugin/index.js"; export * from "./FastNavPlugin/index.js"; export * from "./GLTFLoaderPlugin/index.js"; export * from "./NavCubePlugin/index.js"; export * from "./OBJLoaderPlugin/index.js"; export * from "./SectionPlanesPlugin/index.js"; +export * from "./FaceAlignedSectionPlanesPlugin/index.js"; export * from "./SkyboxesPlugin/index.js"; export * from "./STLLoaderPlugin/index.js"; -export * from "./StoreyViewsPlugin/index.js"; export * from "./TreeViewPlugin/index.js"; export * from "./ViewCullPlugin/index.js"; export * from "./XKTLoaderPlugin/index.js"; diff --git a/src/viewer/Configs.js b/src/viewer/Configs.js index 6d230e8d7..1c5b2baa3 100644 --- a/src/viewer/Configs.js +++ b/src/viewer/Configs.js @@ -10,7 +10,7 @@ import {math} from "./scene/math/math.js"; * * That's OK if we know that we're not going to view models that are geographically vast, or offset far from the World coordinate origin. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#Configs_disableDoublePrecisionAndRAF)] + * [[Run this example](/examples/#Configs_disableDoublePrecisionAndRAF)] * * ````javascript * import {Configs, Viewer, XKTLoaderPlugin} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; diff --git a/src/viewer/Viewer.js b/src/viewer/Viewer.js index 3589994b3..c0af40da3 100644 --- a/src/viewer/Viewer.js +++ b/src/viewer/Viewer.js @@ -52,6 +52,9 @@ class Viewer { * that it does not clip huge models. * @param {Boolean} [cfg.colorTextureEnabled=true] Whether to enable base color texture rendering. * @param {Boolean} [cfg.pbrEnabled=false] Whether to enable physically-based rendering. + * @param {Boolean} [cfg.lodEnabled=false] Whether to enable Level-of-Detail (LOD) culling. See {@link LOD} for more info. + * @param {Boolean} [cfg.vfcEnabled=false] Whether to enable View Frustum Culling (VFC) culling. See {@link VFC} for more info. + * @param {Boolean} [cfg.dtxEnabled=false] Sets whether data texture scene representation and rendering (DTX) is enabled for all subsequently created {@link @SceneModel}s. * @param {LocaleService} [cfg.localeService=null] Optional locale-based translation service. */ constructor(cfg) { @@ -106,10 +109,12 @@ class Viewer { saoEnabled: cfg.saoEnabled, alphaDepthMask: (cfg.alphaDepthMask !== false), entityOffsetsEnabled: (!!cfg.entityOffsetsEnabled), - pickSurfacePrecisionEnabled: (!!cfg.pickSurfacePrecisionEnabled), logarithmicDepthBufferEnabled: (!!cfg.logarithmicDepthBufferEnabled), pbrEnabled: (!!cfg.pbrEnabled), - colorTextureEnabled: (cfg.colorTextureEnabled !== false) + lodEnabled: (!!cfg.lodEnabled), + vfcCulling: (!!cfg.vfcEnabled), + colorTextureEnabled: (cfg.colorTextureEnabled !== false), + dtxEnabled: (!!cfg.dtxEnabled) }); /** @@ -422,80 +427,94 @@ class Viewer { // canvas ourselves, in order to allow the Viewer to render the // right amount of pixels, for a sharper image. + return new Promise((resolve, reject) => { - const needFinishSnapshot = (!this._snapshotBegun); - const resize = (params.width !== undefined && params.height !== undefined); - const canvas = this.scene.canvas.canvas; - const saveWidth = canvas.clientWidth; - const saveHeight = canvas.clientHeight; - const snapshotWidth = params.width ? Math.floor(params.width) : canvas.width; - const snapshotHeight = params.height ? Math.floor(params.height) : canvas.height; + const needFinishSnapshot = (!this._snapshotBegun); + const resize = (params.width !== undefined && params.height !== undefined); + const canvas = this.scene.canvas.canvas; + const saveWidth = canvas.clientWidth; + const saveHeight = canvas.clientHeight; + const snapshotWidth = params.width ? Math.floor(params.width) : canvas.width; + const snapshotHeight = params.height ? Math.floor(params.height) : canvas.height; - if (resize) { - canvas.width = snapshotWidth; - canvas.height = snapshotHeight; - } + if (resize) { + canvas.width = snapshotWidth; + canvas.height = snapshotHeight; + } - if (!this._snapshotBegun) { - this.beginSnapshot(); - } + if (!this._snapshotBegun) { + this.beginSnapshot(); + } - if (!params.includeGizmos) { - this.sendToPlugins("snapshotStarting"); // Tells plugins to hide things that shouldn't be in snapshot - } + if (!params.includeGizmos) { + this.sendToPlugins("snapshotStarting"); // Tells plugins to hide things that shouldn't be in snapshot + } - this.scene._renderer.renderSnapshot(); + this.scene._renderer.renderSnapshot(); - const snapshotCanvas = this.scene._renderer.readSnapshotAsCanvas(); + const snapshotCanvas = this.scene._renderer.readSnapshotAsCanvas(); - if (resize) { - canvas.width = saveWidth; - canvas.height = saveHeight; - this.scene.glRedraw(); - } + if (resize) { + canvas.width = saveWidth; + canvas.height = saveHeight; + this.scene.glRedraw(); + } - const pluginToCapture = {}; - const pluginContainerElements = []; + const pluginToCapture = {}; + const pluginContainerElements = []; - for (let i = 0, len = this._plugins.length; i < len; i++) { // Find plugin container elements - const plugin = this._plugins[i]; - if (plugin.getContainerElement) { - const containerElement = plugin.getContainerElement(); - if (containerElement !== document.body) { - if (!pluginToCapture[containerElement.id]) { - pluginToCapture[containerElement.id] = true; - pluginContainerElements.push(containerElement); + const finishSnapshot = () => { + if (!params.includeGizmos) { + this.sendToPlugins("snapshotFinished"); + } + if (needFinishSnapshot) { + this.endSnapshot(); + } + let format = params.format || "png"; + if (format !== "jpeg" && format !== "png" && format !== "bmp") { + console.error("Unsupported image format: '" + format + "' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'"); + format = "png"; + } + if (!params.includeGizmos) { + this.sendToPlugins("snapshotFinished"); + } + if (needFinishSnapshot) { + this.endSnapshot(); + } + resolve(snapshotCanvas.toDataURL(`image/${format}`)); + } + + for (let i = 0, len = this._plugins.length; i < len; i++) { // Find plugin container elements + const plugin = this._plugins[i]; + if (plugin.getContainerElement) { + const containerElement = plugin.getContainerElement(); + if (containerElement !== document.body) { + if (!pluginToCapture[containerElement.id]) { + pluginToCapture[containerElement.id] = true; + pluginContainerElements.push(containerElement); + } } } } - } - for (let i = 0, len = pluginContainerElements.length; i < len; i++) { - const containerElement = pluginContainerElements[i]; - await html2canvas(containerElement, { - canvas: snapshotCanvas, - backgroundColor: null, - scale: snapshotCanvas.width / containerElement.clientWidth - }); - } - if (!params.includeGizmos) { - this.sendToPlugins("snapshotFinished"); - } - if (needFinishSnapshot) { - this.endSnapshot(); - } - let format = params.format || "png"; - if (format !== "jpeg" && format !== "png" && format !== "bmp") { - console.error("Unsupported image format: '" + format + "' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'"); - format = "png"; - } - if (!params.includeGizmos) { - this.sendToPlugins("snapshotFinished"); - } - if (needFinishSnapshot) { - this.endSnapshot(); - } - return snapshotCanvas.toDataURL(`image/${format}`); + if (pluginContainerElements.length > 0) { // Render plugin container elements to the snapshot canvas + for (let i = 0, len = pluginContainerElements.length; i < len; i++) { + const containerElement = pluginContainerElements[i]; + html2canvas(containerElement, { + canvas: snapshotCanvas, + backgroundColor: null, + scale: snapshotCanvas.width / containerElement.clientWidth + }).then(() => { + pluginContainerElements.pop(); + if (pluginContainerElements.length === 0) { + finishSnapshot(); + } + }); + } + } else { + finishSnapshot(); + } + }); } /** @@ -525,4 +544,4 @@ class Viewer { } } -export {Viewer} +export {Viewer} \ No newline at end of file diff --git a/src/viewer/metadata/MetaScene.js b/src/viewer/metadata/MetaScene.js index 57847643e..e2ad4f0cb 100644 --- a/src/viewer/metadata/MetaScene.js +++ b/src/viewer/metadata/MetaScene.js @@ -481,4 +481,4 @@ function arrayToMap(array) { return map; } -export {MetaScene}; +export {MetaScene}; \ No newline at end of file diff --git a/src/viewer/scene/Bitmap/Bitmap.js b/src/viewer/scene/Bitmap/Bitmap.js index 59ab8e8f6..cc11d27e4 100644 --- a/src/viewer/scene/Bitmap/Bitmap.js +++ b/src/viewer/scene/Bitmap/Bitmap.js @@ -17,9 +17,9 @@ import {math} from "../math/math.js"; * In the example below, we'll load the Schependomlaan model, then use * an ````Bitmap```` to show a storey plan next to the model. * - * [](http://xeokit.github.io/xeokit-sdk/examples/#Bitmap_storeyPlan) + * [](/examples/#Bitmap_storeyPlan) * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#Bitmap_grid)] + * [[Run this example](/examples/#Bitmap_grid)] * * ````javascript * import {Viewer, Bitmap, XKTLoaderPlugin} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/CameraControl/CameraControl.js b/src/viewer/scene/CameraControl/CameraControl.js index 5e742a5a2..926a14739 100644 --- a/src/viewer/scene/CameraControl/CameraControl.js +++ b/src/viewer/scene/CameraControl/CameraControl.js @@ -15,6 +15,8 @@ import {utils} from "../utils.js"; import {math} from "../math/math.js"; import {TouchPickHandler} from "./lib/handlers/TouchPickHandler.js"; +const DEFAULT_SNAP_PICK_RADIUS = 30; + /** * @desc Controls the {@link Camera} with user input, and fires events when the user interacts with pickable {@link Entity}s. * @@ -640,6 +642,9 @@ class CameraControl extends Component { constrainVertical: false, smartPivot: false, doubleClickTimeFrame: 250, + + snapMode: "vertex", + snapRadius: DEFAULT_SNAP_PICK_RADIUS, // Rotation @@ -891,6 +896,57 @@ class CameraControl extends Component { return this._configs.active; } + /** + * Sets the current snap mode for "hoverSnapOrSurface" events, to specify whether the pointer + * snaps to the nearest vertex or the nearest edge. + * + * Accepted values are: + * + * * "vertex" - (default) snap to the nearest vertex, or + * * "edge" - snap to the nearest edge. + * + * @param {String} snapMode The snap mode: "vertex" or "edge". + */ + set snapMode(snapMode) { + snapMode = snapMode || "vertex"; + if (snapMode !== "vertex" && snapMode !== "edge") { + this.error("Unsupported value for snapMode: " + snapMode + " - supported values are 'vertex' and 'edge' - defaulting to 'vertex'"); + snapMode = "vertex"; + } + this._configs.snapMode = snapMode; + } + + /** + * Gets the current snap mode. + * + * @returns {String} The snap mode: "vertex" or "edge". + */ + get snapMode() { + return this._configs.snapMode; + } + + /** + * Sets the current snap radius for "hoverSnapOrSurface" events, to specify whether the radius + * within which the pointer snaps to the nearest vertex or the nearest edge. + * + * Default value is 30 pixels. + * + * @param {Number} snapRadius The snap radius. + */ + set snapRadius(snapRadius) { + snapRadius = snapRadius || DEFAULT_SNAP_PICK_RADIUS; + this._configs.snapRadius = snapRadius; + } + + /** + * Gets the current snap radius. + * + * @returns {Number} The snap radius. + */ + get snapRadius() { + return this._configs.snapRadius; + } + /** * Sets the current navigation mode. * diff --git a/src/viewer/scene/CameraControl/lib/controllers/PickController.js b/src/viewer/scene/CameraControl/lib/controllers/PickController.js index 688c1c5c9..ac354018f 100644 --- a/src/viewer/scene/CameraControl/lib/controllers/PickController.js +++ b/src/viewer/scene/CameraControl/lib/controllers/PickController.js @@ -1,9 +1,9 @@ import {math} from "../../../math/math.js"; -import { Scene } from "../../../scene/Scene.js"; -import { PickResult } from "../../../webgl/PickResult.js"; +import {Scene} from "../../../scene/Scene.js"; +import {PickResult} from "../../../webgl/PickResult.js"; const DEFAULT_SNAP_PICK_RADIUS = 45; -const DEFAULT_SNAP_TYPE = "vertex"; +const DEFAULT_SNAP_MODE = "vertex"; /** * @@ -37,6 +37,12 @@ class PickController { */ this.schedulePickSurface = false; + /** + * Set true to schedule snap-picking with surface picking as a fallback - used for measurement. + * @type {boolean} + */ + this.scheduleSnapOrPick = false; + /** * The canvas position at which to do the next scheduled pick. * @type {Number[]} @@ -81,10 +87,29 @@ class PickController { this.picked = false; this.pickedSurface = false; + this.snappedOrPicked = false; + this.hoveredSnappedOrSurfaceOff = false; + this._needFireEvents = false; const hasHoverSurfaceSubs = this._cameraControl.hasSubs("hoverSurface"); + if (this.scheduleSnapOrPick) { + const snapPickResult = this._scene.snapPick({ + canvasPos: this.pickCursorPos, + snapRadius: this._configs.snapRadius, + snapMode: this._configs.snapMode, + }); + if (snapPickResult && snapPickResult.snappedWorldPos) { + this.snapPickResult = snapPickResult; + this.snappedOrPicked = true; + this._needFireEvents = true; + }else { + this.schedulePickSurface = true; // Fallback + this.snapPickResult = null; + } + } + if (this.schedulePickSurface) { if (this.pickResult && this.pickResult.worldPos) { const pickResultCanvasPos = this.pickResult.canvasPos; @@ -94,6 +119,12 @@ class PickController { this._needFireEvents = hasHoverSurfaceSubs; this.schedulePickEntity = false; this.schedulePickSurface = false; + if (this.scheduleSnapOrPick) { + this.snappedOrPicked = true; + } else { + this.hoveredSnappedOrSurfaceOff = true; + } + this.scheduleSnapOrPick = false; return; } } @@ -113,41 +144,22 @@ class PickController { } } - if (this.schedulePickSurface) { - + if (this.schedulePickSurface || (this.scheduleSnapOrPick && !this.snapPickResult)) { this.pickResult = this._scene.pick({ pickSurface: true, pickSurfaceNormal: false, canvasPos: this.pickCursorPos }); - - const snapPickResult = this._scene.snapPick({ - canvasPos: this.pickCursorPos, - snapRadius: DEFAULT_SNAP_PICK_RADIUS, - snapType: DEFAULT_SNAP_TYPE, - }); - - if (null !== snapPickResult) { - if (null == this.pickResult) { - this.pickResult = new PickResult(); - } - - if (snapPickResult && null !== snapPickResult.snappedWorldPos) { - this.pickResult.snappedWorldPos = snapPickResult.snappedWorldPos; - } else { - this.pickResult.snappedWorldPos = null; - } - - if (snapPickResult && null !== snapPickResult.snappedCanvasPos) { - this.pickResult.snappedCanvasPos = snapPickResult.snappedCanvasPos; - } else { - this.pickResult.snappedCanvasPos = null; - } - } - if (this.pickResult) { this.picked = true; - this.pickedSurface = true; + if (this.scheduleSnapOrPick) { + this.snappedOrPicked = true; + } else { + this.pickedSurface = true; + } + this._needFireEvents = true; + }else if (this.scheduleSnapOrPick) { + this.hoveredSnappedOrSurfaceOff = true; this._needFireEvents = true; } @@ -164,6 +176,7 @@ class PickController { } } + this.scheduleSnapOrPick = false; this.schedulePickEntity = false; this.schedulePickSurface = false; } @@ -174,10 +187,30 @@ class PickController { return; } - if (this.picked && this.pickResult && (this.pickResult.entity || this.pickResult.snappedWorldPos)) { + if (this.hoveredSnappedOrSurfaceOff) { + this._cameraControl.fire("hoverSnapOrSurfaceOff", { + canvasPos: this.pickCursorPos + }, true); + } + + if (this.snappedOrPicked) { + if (this.snapPickResult) { + const pickResult = new PickResult(); + pickResult.worldPos = this.snapPickResult.snappedWorldPos; + pickResult.canvasPos = this.snapPickResult.snappedCanvasPos; + this._cameraControl.fire("hoverSnapOrSurface", pickResult, true); + this.snapPickResult = null; + } else { + this._cameraControl.fire("hoverSnapOrSurface", this.pickResult, true); + } + } else { + + } + + if (this.picked && this.pickResult && (this.pickResult.entity || this.pickResult.worldPos)) { + + if (this.pickResult.entity) { - if (this.pickResult.entity) - { const pickedEntityId = this.pickResult.entity.id; if (this._lastPickedEntityId !== pickedEntityId) { @@ -195,7 +228,7 @@ class PickController { this._cameraControl.fire("hover", this.pickResult, true); - if (this.pickResult.worldPos || this.pickResult.snappedWorldPos) { + if (this.pickResult.worldPos) { this.pickedSurface = true; this._cameraControl.fire("hoverSurface", this.pickResult, true); } diff --git a/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js b/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js index 8930b1372..02a4b1602 100644 --- a/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +++ b/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js @@ -59,12 +59,14 @@ class MousePickHandler { const hoverOutSubs = cameraControl.hasSubs("hoverOut"); const hoverOffSubs = cameraControl.hasSubs("hoverOff"); const hoverSurfaceSubs = cameraControl.hasSubs("hoverSurface"); + const hoverSnapOrSurfaceSubs = cameraControl.hasSubs("hoverSnapOrSurface"); - if (hoverSubs || hoverOutSubs || hoverOffSubs || hoverSurfaceSubs) { + if (hoverSubs || hoverOutSubs || hoverOffSubs || hoverSurfaceSubs || hoverSnapOrSurfaceSubs) { pickController.pickCursorPos = states.pointerCanvasPos; pickController.schedulePickEntity = true; pickController.schedulePickSurface = hoverSurfaceSubs; + pickController.scheduleSnapOrPick = hoverSnapOrSurfaceSubs pickController.update(); diff --git a/src/viewer/scene/ImagePlane/ImagePlane.js b/src/viewer/scene/ImagePlane/ImagePlane.js index 8750c4fe5..0ac86420d 100644 --- a/src/viewer/scene/ImagePlane/ImagePlane.js +++ b/src/viewer/scene/ImagePlane/ImagePlane.js @@ -31,9 +31,9 @@ const tempQuat = math.vec4([0, 0, 0, 1]); * * * - * [](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_groundPlane) + * [](/examples/#ImagePlane_groundPlane) * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_groundPlane)] + * [[Run this example](/examples/#ImagePlane_groundPlane)] * * ````javascript * import {Viewer, ImagePlane, XKTLoaderPlugin} from "xeokit-sdk.es.js"; @@ -81,9 +81,9 @@ const tempQuat = math.vec4([0, 0, 0, 1]); * * * - * [](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_imageInSectionPlane) + * [](/examples/#ImagePlane_imageInSectionPlane) * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_imageInSectionPlane)] + * [[Run this example](/examples/#ImagePlane_imageInSectionPlane)] * * ````javascript * import {Viewer, XKTLoaderPlugin, SectionPlanesPlugin, ImagePlane} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/LineSet/LineSet.js b/src/viewer/scene/LineSet/LineSet.js index b387e886f..2be8b04ce 100644 --- a/src/viewer/scene/LineSet/LineSet.js +++ b/src/viewer/scene/LineSet/LineSet.js @@ -17,9 +17,9 @@ import {VBOGeometry} from "../geometry/VBOGeometry.js"; * In the example below, we'll load the Schependomlaan model, then use * a ````LineSet```` to show a grid underneath the model. * - * [](http://xeokit.github.io/xeokit-sdk/examples/#LineSet_grid) + * [](/examples/#LineSet_grid) * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#LineSet_grid)] + * [[Run this example](/examples/#LineSet_grid)] * * ````javascript * import {Viewer, XKTLoaderPlugin, LineSet, buildGridGeometry} from "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; diff --git a/src/viewer/scene/camera/CameraFlightAnimation.js b/src/viewer/scene/camera/CameraFlightAnimation.js index bb5c3cc68..06c618849 100644 --- a/src/viewer/scene/camera/CameraFlightAnimation.js +++ b/src/viewer/scene/camera/CameraFlightAnimation.js @@ -72,7 +72,7 @@ const newLookEyeVec = math.vec3(); * * Let's transition the Camera to orthographic projection: * - * [[Run example](http://xeokit.github.io/xeokit-sdk/examples/#camera_CameraFlightAnimation_projection)] + * [[Run example](/examples/#camera_CameraFlightAnimation_projection)] * * ````Javascript * viewer.cameraFlight.flyTo({ projection: "ortho", () => { diff --git a/src/viewer/scene/camera/CameraPathAnimation.js b/src/viewer/scene/camera/CameraPathAnimation.js index 55e79ee83..f38262acd 100644 --- a/src/viewer/scene/camera/CameraPathAnimation.js +++ b/src/viewer/scene/camera/CameraPathAnimation.js @@ -10,7 +10,7 @@ import {CameraFlightAnimation} from "./CameraFlightAnimation.js" * In the example below, we'll load a model using a {@link GLTFLoaderPlugin}, then animate a {@link Camera} * through the frames in a {@link CameraPath}. * - * * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#camera_CameraPathAnimation)] + * * [[Run this example](/examples/#camera_CameraPathAnimation)] * * ````Javascript * import {Viewer, GLTFLoaderPlugin, CameraPath, CameraPathAnimation} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/canvas/Canvas.js b/src/viewer/scene/canvas/Canvas.js index ca2e251e9..557020f70 100644 --- a/src/viewer/scene/canvas/Canvas.js +++ b/src/viewer/scene/canvas/Canvas.js @@ -162,7 +162,7 @@ class Canvas extends Component { } } }); - + resizeObserver.observe(this.canvas); // Publish canvas size and position changes on each scene tick @@ -378,7 +378,7 @@ class Canvas extends Component { this.fire("webglContextFailed", true, true); } - // data-textures: avoid to re-bind same texture + // data-textures: avoid to re-bind same texture { const gl = this.gl; @@ -422,15 +422,15 @@ class Canvas extends Component { // 1000 // ); } - + if (this.gl) { // Setup extension (if necessary) and hints for fragment shader derivative functions if (this.webgl2) { this.gl.hint(this.gl.FRAGMENT_SHADER_DERIVATIVE_HINT, this.gl.FASTEST); - // data-textures: not using standard-derivatives - if (!(this.gl instanceof WebGL2RenderingContext)) { - } + // data-textures: not using standard-derivatives + if (!(this.gl instanceof WebGL2RenderingContext)) { + } } } } @@ -489,4 +489,4 @@ class Canvas extends Component { } } -export {Canvas}; +export {Canvas}; \ No newline at end of file diff --git a/src/viewer/scene/geometry/ReadableGeometry.js b/src/viewer/scene/geometry/ReadableGeometry.js index 691562a83..ab11d4222 100644 --- a/src/viewer/scene/geometry/ReadableGeometry.js +++ b/src/viewer/scene/geometry/ReadableGeometry.js @@ -18,7 +18,7 @@ const tempAABB = math.AABB3(); * * Creating a {@link Mesh} with a ReadableGeometry that defines a single triangle, plus a {@link PhongMaterial} with diffuse {@link Texture}: * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_ReadableGeometry)] + * [[Run this example](/examples/#geometry_ReadableGeometry)] * * ````javascript * import {Viewer, Mesh, ReadableGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/VBOGeometry.js b/src/viewer/scene/geometry/VBOGeometry.js index a59911408..3eb9efc92 100644 --- a/src/viewer/scene/geometry/VBOGeometry.js +++ b/src/viewer/scene/geometry/VBOGeometry.js @@ -18,7 +18,7 @@ const tempAABB = math.AABB3(); * * Creating a {@link Mesh} with a VBOGeometry that defines a single triangle, plus a {@link PhongMaterial} with diffuse {@link Texture}: * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_VBOGeometry)] + * [[Run this example](/examples/#geometry_VBOGeometry)] * * ````javascript * import {Viewer, Mesh, VBOGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/builders/buildBoxGeometry.js b/src/viewer/scene/geometry/builders/buildBoxGeometry.js index 5bcd4675a..ef184e395 100644 --- a/src/viewer/scene/geometry/builders/buildBoxGeometry.js +++ b/src/viewer/scene/geometry/builders/buildBoxGeometry.js @@ -7,7 +7,7 @@ import {utils} from '../../utils.js'; * * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry}. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxGeometry)] + * [[Run this example](/examples/#geometry_builders_buildBoxGeometry)] * * ````javascript * import {Viewer, Mesh, buildBoxGeometry, ReadableGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js b/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js index 57bd915ca..0cc4dd29f 100644 --- a/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +++ b/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js @@ -7,7 +7,7 @@ import {utils} from '../../utils.js'; * * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry} that has lines primitives. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxLinesGeometry)] + * [[Run this example](/examples/#geometry_builders_buildBoxLinesGeometry)] * * ````javascript * import {Viewer, Mesh, buildBoxLinesGeometry, ReadableGeometry, PhongMaterial} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/builders/buildCylinderGeometry.js b/src/viewer/scene/geometry/builders/buildCylinderGeometry.js index 7643dfe4c..5fa864e3e 100644 --- a/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +++ b/src/viewer/scene/geometry/builders/buildCylinderGeometry.js @@ -7,7 +7,7 @@ import {utils} from '../../utils.js'; * * Creating a {@link Mesh} with a cylinder-shaped {@link ReadableGeometry} : * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildCylinderGeometry)] + * [[Run this example](/examples/#geometry_builders_buildCylinderGeometry)] * * ````javascript * diff --git a/src/viewer/scene/geometry/builders/buildGridGeometry.js b/src/viewer/scene/geometry/builders/buildGridGeometry.js index d398db5bc..7021828e0 100644 --- a/src/viewer/scene/geometry/builders/buildGridGeometry.js +++ b/src/viewer/scene/geometry/builders/buildGridGeometry.js @@ -7,7 +7,7 @@ import {utils} from '../../utils.js'; * * Creating a {@link Mesh} with a GridGeometry and a {@link PhongMaterial}: * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildGridGeometry)] + * [[Run this example](/examples/#geometry_builders_buildGridGeometry)] * * ````javascript * import {Viewer, Mesh, buildGridGeometry, VBOGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/builders/buildPlaneGeometry.js b/src/viewer/scene/geometry/builders/buildPlaneGeometry.js index 26be080af..64fb5e4c7 100644 --- a/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +++ b/src/viewer/scene/geometry/builders/buildPlaneGeometry.js @@ -7,7 +7,7 @@ import {utils} from '../../utils.js'; * * Creating a {@link Mesh} with a PlaneGeometry and a {@link PhongMaterial} with diffuse {@link Texture}: * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildPlaneGeometry)] + * [[Run this example](/examples/#geometry_builders_buildPlaneGeometry)] * * ````javascript * import {Viewer, Mesh, buildPlaneGeometry, ReadableGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/builders/buildSphereGeometry.js b/src/viewer/scene/geometry/builders/buildSphereGeometry.js index 4b288e09d..7d2ffea9b 100644 --- a/src/viewer/scene/geometry/builders/buildSphereGeometry.js +++ b/src/viewer/scene/geometry/builders/buildSphereGeometry.js @@ -7,7 +7,7 @@ import {utils} from '../../utils.js'; * * Creating a {@link Mesh} with a sphere-shaped {@link ReadableGeometry} : * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildSphereGeometry)] + * [[Run this example](/examples/#geometry_builders_buildSphereGeometry)] * * ````javascript * import {Viewer, Mesh, buildSphereGeometry, ReadableGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/builders/buildTorusGeometry.js b/src/viewer/scene/geometry/builders/buildTorusGeometry.js index 644653c0d..26eac62d1 100644 --- a/src/viewer/scene/geometry/builders/buildTorusGeometry.js +++ b/src/viewer/scene/geometry/builders/buildTorusGeometry.js @@ -7,7 +7,7 @@ import {math} from '../../math/math.js'; * ## Usage * Creating a {@link Mesh} with a torus-shaped {@link ReadableGeometry} : * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildTorusGeometry)] + * [[Run this example](/examples/#geometry_builders_buildTorusGeometry)] * * ````javascript * import {Viewer, Mesh, buildTorusGeometry, ReadableGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js b/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js index cb523a5b0..0996c93b0 100644 --- a/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +++ b/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js @@ -1581,7 +1581,7 @@ const letters = { * * Creating a {@link Mesh} with vector text {@link ReadableGeometry} : * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildVectorTextGeometry)] + * [[Run this example](/examples/#geometry_builders_buildVectorTextGeometry)] * * ````javascript * diff --git a/src/viewer/scene/geometry/loaders/load3DSGeometry.js b/src/viewer/scene/geometry/loaders/load3DSGeometry.js index 2aa6075e0..6631a623e 100644 --- a/src/viewer/scene/geometry/loaders/load3DSGeometry.js +++ b/src/viewer/scene/geometry/loaders/load3DSGeometry.js @@ -8,7 +8,7 @@ import {K3D} from '../../libs/k3d.js'; * * In the example below we'll create a {@link Mesh} with {@link PhongMaterial}, {@link Texture} and a {@link ReadableGeometry} loaded from 3DS. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_loaders_3DS)] + * [[Run this example](/examples/#geometry_loaders_3DS)] * * ````javascript * import {Viewer, Mesh, load3DSGeometry, ReadableGeometry, PhongMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/geometry/loaders/loadOBJGeometry.js b/src/viewer/scene/geometry/loaders/loadOBJGeometry.js index 1f9d801d3..7c257f8d8 100644 --- a/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +++ b/src/viewer/scene/geometry/loaders/loadOBJGeometry.js @@ -8,7 +8,7 @@ import {K3D} from '../../libs/k3d.js'; * * In the example below we'll create a {@link Mesh} with {@link MetallicMaterial} and {@link ReadableGeometry} loaded from OBJ. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_loaders_OBJ)] + * [[Run this example](/examples/#geometry_loaders_OBJ)] * * ````javascript * import {Viewer, Mesh, loadOBJGeometry, ReadableGeometry, diff --git a/src/viewer/scene/index.js b/src/viewer/scene/index.js index b28b418bd..6ed99703d 100644 --- a/src/viewer/scene/index.js +++ b/src/viewer/scene/index.js @@ -11,11 +11,13 @@ export * from "./mementos/index.js"; export * from "./mesh/index.js"; export * from "./nodes/index.js"; export * from "./paths/index.js"; -export * from "./models/index.js"; +export * from "./model/index.js"; export * from "./sectionPlane/index.js"; export * from "./skybox/index.js"; export * from "./utils/index.js"; export * from "./Component.js"; export * from "./utils.js"; export * from "./stats.js"; -export * from "./constants/constants.js"; \ No newline at end of file +export * from "./constants/constants.js"; +export * from "./lod"; +export * from "./vfc"; \ No newline at end of file diff --git a/src/viewer/scene/lights/AmbientLight.js b/src/viewer/scene/lights/AmbientLight.js index 32cd013bd..4d8dfc96e 100644 --- a/src/viewer/scene/lights/AmbientLight.js +++ b/src/viewer/scene/lights/AmbientLight.js @@ -12,7 +12,7 @@ import {Light} from './Light.js'; * * 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: * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#lights_AmbientLight)] + * [[Run this example](/examples/#lights_AmbientLight)] * * ````javascript * import {Viewer, Mesh, buildTorusGeometry, diff --git a/src/viewer/scene/lights/DirLight.js b/src/viewer/scene/lights/DirLight.js index 20c5ea641..4046ed238 100644 --- a/src/viewer/scene/lights/DirLight.js +++ b/src/viewer/scene/lights/DirLight.js @@ -16,7 +16,7 @@ import {math} from '../math/math.js'; * * In the example below we'll replace the {@link Scene}'s default light sources with three View-space DirLights. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#lights_DirLight_view)] + * [[Run this example](/examples/#lights_DirLight_view)] * * ````javascript * import {Viewer, Mesh, buildSphereGeometry, diff --git a/src/viewer/scene/lights/PointLight.js b/src/viewer/scene/lights/PointLight.js index ea228579a..6a42adb4a 100644 --- a/src/viewer/scene/lights/PointLight.js +++ b/src/viewer/scene/lights/PointLight.js @@ -18,7 +18,7 @@ import {math} from '../math/math.js'; * * In the example below we'll replace the {@link Scene}'s default light sources with three World-space PointLights. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#lights_PointLight_world)] + * [[Run this example](/examples/#lights_PointLight_world)] * * ````javascript * import {Viewer, Mesh, buildSphereGeometry, buildPlaneGeometry, diff --git a/src/viewer/scene/lod/LOD.js b/src/viewer/scene/lod/LOD.js new file mode 100644 index 000000000..b7d8de76e --- /dev/null +++ b/src/viewer/scene/lod/LOD.js @@ -0,0 +1,162 @@ +import {Component} from "../Component"; +import {LODCullingManager} from "./LODCullingManager"; + +/** + * Manages LOD culling for {@link SceneModel} implementations. + */ +export class LOD extends Component { + + /** @private */ + constructor(scene, cfg = {}) { + + super(scene, cfg); + + this._scene = scene; + this._lodLevels = [2000, 600, 150, 80, 20]; + this._lodManagers = {}; + this._lodManagerList = []; + + this.enabled = cfg.enabled; + this.targetFPS = cfg.targetFPS; + + this._init(); + } + + _init() { + + const MAX_NUM_TICKS = 4; + const tickTimeArray = new Array(MAX_NUM_TICKS); + + let numTick = 0; + let currentFPS = -1; + let preRenderTime = Date.now(); + let deltaTime = 0; + let sceneTick = 0; + let lastTickCameraMoved = sceneTick; + + this._scene.on("rendering", () => { // Apply LOD-culling before rendering the scene + if (currentFPS === -1) { + return; + } + for (let i = 0, len = this._lodManagerList.length; i < len; i++) { + this._lodManagerList[i].applyLodCulling(currentFPS); + } + }); + + this._scene.on("rendered", () => { + preRenderTime = Date.now(); + window.requestAnimationFrame(() => { + numTick++; + const newTime = Date.now(); + deltaTime = newTime - preRenderTime; + preRenderTime = newTime; + tickTimeArray[numTick % MAX_NUM_TICKS] = deltaTime; + let sumTickTimes = 0; + if (numTick > MAX_NUM_TICKS) { + for (let i = 0; i < MAX_NUM_TICKS; i++) { + sumTickTimes += tickTimeArray[i]; + } + currentFPS = MAX_NUM_TICKS / sumTickTimes * 1000; + } + }); + }); + + this._scene.camera.on("matrix", () => { + lastTickCameraMoved = sceneTick; + }); + + this._scene.on("tick", () => { + if ((sceneTick - lastTickCameraMoved) > 3) { + for (let i = 0, len = this._lodManagerList.length; i < len; i++) { // Call LOD-culling tasks + this._lodManagerList[i].resetLodCulling(); + } + } + sceneTick++; + }); + } + + /** + * Sets whether LOD is enabled for the {@link Scene}. + * + * Default value is ````false````. + * + * @type {Boolean} + */ + set enabled(value) { + value = !!value; + if (this._enabled === value) { + return; + } + this._enabled = value; + this.glRedraw(); + } + + /** + * Gets whether LOD is enabled for the {@link Scene}. + * + * Default value is ````false````. + * + * @type {Boolean} + */ + get enabled() { + return this._enabled; + } + + /** + * Sets the maximum area that LOD takes into account when checking for possible occlusion for each fragment. + * + * Default value is ````30.0````. + * + * @type {Number} + */ + set targetFPS(value) { + if (value === undefined || value === null) { + value = 30.0; + } + if (this._targetFPS === value) { + return; + } + this._targetFPS = value; + this.glRedraw(); + } + + /** + * Gets the maximum area that LOD takes into account when checking for possible occlusion for each fragment. + * + * Default value is ````30.0````. + * + * @type {Number} + */ + get targetFPS() { + return this._targetFPS; + } + + /** + * Called within SceneModel constructors + * @private + */ + getLODManager(sceneModel) { + const lodManager = new LODCullingManager(this.scene, sceneModel, this._lodLevels, this._targetFPS); + this._lodManagers[lodManager.id] = lodManager; + this._lodManagerList = Object.values(this._lodManagers); + return lodManager; + } + + /** + * Called within SceneModel destructors + * @private + */ + putLODManager(lodManager) { + delete this._lodManagers[lodManager.id]; + this._lodManagerList = Object.values(this._lodManagers); + } + + /** + * Destroys this component. + * + * @private + */ + destroy() { + super.destroy(); + } +} diff --git a/src/viewer/scene/lod/LODCullingManager.js b/src/viewer/scene/lod/LODCullingManager.js new file mode 100644 index 000000000..9bcde1202 --- /dev/null +++ b/src/viewer/scene/lod/LODCullingManager.js @@ -0,0 +1,83 @@ +import {LODState} from "./LODState"; + +/** + * @private + */ +export class LODCullingManager { + + constructor(scene, sceneModel, lodLevels, targetFps) { + this.id = sceneModel.id; + this.scene = scene; + this.sceneModel = sceneModel; + this.lodState = new LODState(lodLevels, targetFps); + this.lodState.initializeLodState(sceneModel); + } + + /** + * Cull any objects belonging to the current `LOD` level, and increase the `LOD` level. + */ + _increaseLODLevelIndex() { + const lodState = this.lodState; + if (lodState.lodLevelIndex === lodState.primLODLevels.length) { + return false; + } + const entitiesInLOD = lodState.entitiesInLOD [lodState.primLODLevels[lodState.lodLevelIndex]] || []; + for (let i = 0, len = entitiesInLOD.length; i < len; i++) { + + entitiesInLOD[i].culledLOD = true; + } + lodState.lodLevelIndex++; + return true; + } + + /** + * Un-cull any objects belonging to the current `LOD` level, and decrease the `LOD` level. + */ + _decreaseLODLevelIndex() { + const lodState = this.lodState; + if (lodState.lodLevelIndex === 0) { + return false; + } + const entitiesInLOD = lodState.entitiesInLOD [lodState.primLODLevels[lodState.lodLevelIndex - 1]] || []; + for (let i = 0, len = entitiesInLOD.length; i < len; i++) { + entitiesInLOD[i].culledLOD = false; + } + lodState.lodLevelIndex--; + return true; + } + + /** + * Apply LOD culling. + * + * Will update LOD level, if needed, based on current FPS and target FPS, + * and then will cull/uncull the needed objects according to the LOD level. + * + * @param {number} currentFPS The current FPS (frames per second) + * @returns {boolean} Whether the LOD level was changed. This is, if some object was culled/unculled. + */ + applyLodCulling(currentFPS) { + let lodState = this.lodState; + let retVal = false; + if (currentFPS < lodState.targetFps) { + if (++lodState.consecutiveFramesWithoutTargetFps > 0) { + lodState.consecutiveFramesWithoutTargetFps = 0; + retVal = this._increaseLODLevelIndex(); + } + } else if (currentFPS > (lodState.targetFps + 4)) { + if (++lodState.consecutiveFramesWithTargetFps > 1) { + lodState.consecutiveFramesWithTargetFps = 0; + retVal = this._decreaseLODLevelIndex(); + } + } + return retVal; + } + + resetLodCulling() { + let retVal = false; + let decreasedLevel = false; + do { + retVal |= (decreasedLevel = this._decreaseLODLevelIndex()); + } while (decreasedLevel); + return retVal; + } +} diff --git a/src/viewer/scene/lod/LODState.js b/src/viewer/scene/lod/LODState.js new file mode 100644 index 000000000..f2be4c50e --- /dev/null +++ b/src/viewer/scene/lod/LODState.js @@ -0,0 +1,125 @@ +/** + * Data structure containing pre-initialized `LOD` data. + * + * Will be used by the rest of `LOD` related code. + * + * @private + */ +import {math} from "../math"; + +export class LODState { + + /** + * @param {Array} primLODLevels The primtive counts for the LOD levels, for example ```[ 2000, 600, 150, 80, 20 ]``` + * @param {number} targetFps The target FPS (_Frames Per Second_) for the dynamic culling of objects in the different LOD levels. + */ + constructor(primLODLevels, targetFps) { + + /** + * An array ordered DESC with the number of primtives allowed in each LOD bucket. + * + * @type {Array} + */ + this.primLODLevels = primLODLevels; + + /** + * A computed dictionary for `primtive-number-buckets` where: + * - key: the number of primtives allowed for the objects in the bucket. + * - value: all PerformanceNodes that have the number of primtives or more. + * + * @type {Map>} + */ + this.entitiesInLOD = {}; + + /** + * A computed dictionary for `primtive-number-buckets` where: + * - key: the number of primtives allowed for the objects in the bucket. + * - value: the sum of primtives counts for all PeformanceNodes in the bucket. + * + * @type {Map} + */ + this.primCountInLOD = {}; + + /** + * The target FPS for the `LOD` mechanism: + * - if real FPS are below this number, the next `LOD` level will be applied. + * + * - if real FPS are... + * - above this number plus a margin + * - and for some consecutive frames + * ... then the previous `LOD` level will be applied. + * + * @type {number} + */ + this.targetFps = targetFps; + + // /** + // * Not used at the moment. + // */ + // this.restoreTime = LOD_RESTORE_TIME; + + /** + * Current `LOD` level. Starts at 0. + * + * @type {number} + */ + this.lodLevelIndex = 0; + + /** + * Number of consecutive frames in current `LOD` level where FPS was above `targetFps` + * + * @type {number} + */ + this.consecutiveFramesWithTargetFps = 0; + + /** + * Number of consecutive frames in current `LOD` level where FPS was below `targetFps` + * + * @type {number} + */ + this.consecutiveFramesWithoutTargetFps = 0; + } + + /** + * @param {SceneModel} sceneModel + */ + initializeLodState(sceneModel) { + const entityList = Object.values(sceneModel.objects); + if (entityList.length === 0) { + return; + } + const entitiesInLOD = {}; + const primCountInLOD = {}; + const maxSize = 15; + const minComplexity = 10; + + for (let i = 0, len = entityList.length; i < len; i++) { + const entity = entityList[i]; + const entityComplexity = entity.numPrimitives; + const entitySize = math.getAABB3Diag(entity.aabb); +// // const isCullable = ((minComplexity <= entityComplexity) && (entitySize <= maxSize)); +// const isCullable = ( (entitySize <= maxSize)); +// +// if (!isCullable) { +// continue; +// } + let lodLevel = 0, len; + for (lodLevel = 0, len = this.primLODLevels.length; lodLevel < len; lodLevel++) { + if (entity.numPrimitives >= this.primLODLevels [lodLevel]) { + break; + } + } + const lodPrims = this.primLODLevels [lodLevel] || 0; + if (!(lodPrims in entitiesInLOD)) { + entitiesInLOD [lodPrims] = []; + } + entitiesInLOD [lodPrims].push(entity); + if (!(lodPrims in primCountInLOD)) { + primCountInLOD [lodPrims] = 0; + } + primCountInLOD [lodPrims] += entity.numPrimitives; + } + this.entitiesInLOD = entitiesInLOD; + this.primCountInLOD = primCountInLOD; + } +} \ No newline at end of file diff --git a/src/viewer/scene/lod/index.js b/src/viewer/scene/lod/index.js new file mode 100644 index 000000000..7cfcb12b7 --- /dev/null +++ b/src/viewer/scene/lod/index.js @@ -0,0 +1 @@ +export * from "./LOD.js"; \ No newline at end of file diff --git a/src/viewer/scene/marker/Marker.js b/src/viewer/scene/marker/Marker.js index f4fbbd1de..5a57b4715 100644 --- a/src/viewer/scene/marker/Marker.js +++ b/src/viewer/scene/marker/Marker.js @@ -1,8 +1,7 @@ import {math} from '../math/math.js'; import {Component} from '../Component.js'; -import {VBOSceneModelNode} from "../models/VBOSceneModel/lib/VBOSceneModelNode.js"; import {worldToRTCPos} from "../math/rtcCoords.js"; -import { DataTextureSceneModelNode } from '../models/DataTextureSceneModel/lib/DataTextureSceneModelNode.js'; +import {SceneModelEntity} from "../model/SceneModelEntity"; const tempVec4a = math.vec4(); const tempVec4b = math.vec4(); @@ -39,7 +38,7 @@ const tempVec4b = math.vec4(); * We'll also demonstrate how to query the Marker's visibility status and position (in the World, View and * Canvas coordinate systems), and how to subscribe to change events on those properties. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#Markers_SimpleExample)] + * [[Run this example](/examples/#Markers_SimpleExample)] * * ````javascript * import {Viewer, GLTFLoaderPlugin, Marker} from "xeokit-sdk.es.js"; @@ -209,9 +208,8 @@ class Marker extends Component { } this._entity = entity; if (this._entity) { - if (this._entity instanceof VBOSceneModelNode || - this._entity instanceof DataTextureSceneModelNode) { - this._onEntityModelDestroyed = this._entity.model.on("destroyed", () => { // VBOSceneModelNode does not fire events, and cannot exist beyond its VBOSceneModel + if (this._entity instanceof SceneModelEntity) { + this._onEntityModelDestroyed = this._entity.model.on("destroyed", () => { // SceneModelEntity does not fire events, and cannot exist beyond its VBOSceneModel this._entity = null; // Marker now may become visible, if it was synched to invisible Entity this._onEntityModelDestroyed = null; }); diff --git a/src/viewer/scene/marker/SpriteMarker.js b/src/viewer/scene/marker/SpriteMarker.js index dcb77eb34..57e7f6630 100644 --- a/src/viewer/scene/marker/SpriteMarker.js +++ b/src/viewer/scene/marker/SpriteMarker.js @@ -15,7 +15,7 @@ import {Marker} from "./Marker.js"; * * ## Usage * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#markers_SpriteMarker)] + * [[Run this example](/examples/#markers_SpriteMarker)] * * ```` javascript * import {Viewer, SpriteMarker } from "./https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.min.js"; diff --git a/src/viewer/scene/materials/EdgeMaterial.js b/src/viewer/scene/materials/EdgeMaterial.js index ce97bd8bb..6d66fd391 100644 --- a/src/viewer/scene/materials/EdgeMaterial.js +++ b/src/viewer/scene/materials/EdgeMaterial.js @@ -39,7 +39,7 @@ const PRESETS = { * * Recall that {@link Mesh} is a concrete subtype of the abstract {@link Entity} base class. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_EdgeMaterial)] + * [[Run this example](/examples/#materials_EdgeMaterial)] * * ````javascript * import {Viewer, Mesh, buildSphereGeometry, diff --git a/src/viewer/scene/materials/Fresnel.js b/src/viewer/scene/materials/Fresnel.js index 15d5d1e34..49aa50460 100644 --- a/src/viewer/scene/materials/Fresnel.js +++ b/src/viewer/scene/materials/Fresnel.js @@ -11,7 +11,7 @@ import {math} from '../math/math.js'; * * In the example below we'll create a {@link Mesh} with a {@link PhongMaterial} that applies a Fresnel to its alpha channel to give a glasss-like effect. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_Fresnel)] + * [[Run this example](/examples/#materials_Fresnel)] * * ````javascript * import {Viewer, Mesh, buildTorusGeometry, diff --git a/src/viewer/scene/materials/LambertMaterial.js b/src/viewer/scene/materials/LambertMaterial.js index 927ff2f6f..359370855 100644 --- a/src/viewer/scene/materials/LambertMaterial.js +++ b/src/viewer/scene/materials/LambertMaterial.js @@ -13,7 +13,7 @@ import {math} from '../math/math.js'; * * ## Usage * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_LambertMaterial)] + * [[Run this example](/examples/#materials_LambertMaterial)] * * In the example below we'll create a {@link Mesh} with a shape defined by a {@link buildTorusGeometry} and normal rendering appearance configured with a LambertMaterial. * diff --git a/src/viewer/scene/materials/LinesMaterial.js b/src/viewer/scene/materials/LinesMaterial.js index a3a3ccb2d..20782a818 100644 --- a/src/viewer/scene/materials/LinesMaterial.js +++ b/src/viewer/scene/materials/LinesMaterial.js @@ -24,7 +24,7 @@ const PRESETS = { * In the example below, we'll customize the {@link Scene}'s global ````LinesMaterial````, then use * an {@link XKTLoaderPlugin} to load a model containing line segments. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_LinesMaterial)] + * [[Run this example](/examples/#materials_LinesMaterial)] * * ````javascript * import {Viewer, XKTLoaderPlugin} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/materials/MetallicMaterial.js b/src/viewer/scene/materials/MetallicMaterial.js index 5e54fd51b..7ecea59fc 100644 --- a/src/viewer/scene/materials/MetallicMaterial.js +++ b/src/viewer/scene/materials/MetallicMaterial.js @@ -21,7 +21,7 @@ const modeNames = ["opaque", "mask", "blend"]; * channels, which allows us a little creative flexibility. Then, in the next example further down, we'll combine those channels * within the same {@link Texture} for efficiency. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_MetallicMaterial)] + * [[Run this example](/examples/#materials_MetallicMaterial)] * * ````javascript * import {Viewer, Mesh, loadOBJGeometry, ReadableGeometry, MetallicMaterial, Texture} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/materials/PhongMaterial.js b/src/viewer/scene/materials/PhongMaterial.js index 4d9cad8e6..54b26b981 100644 --- a/src/viewer/scene/materials/PhongMaterial.js +++ b/src/viewer/scene/materials/PhongMaterial.js @@ -17,7 +17,7 @@ const alphaModeNames = ["opaque", "mask", "blend"]; * * In the example below, we'll create a {@link Mesh} with a PhongMaterial with a diffuse {@link Texture} and a specular {@link Fresnel}, using a {@link buildTorusGeometry} to create the {@link Geometry}. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_PhongMaterial)] + * [[Run this example](/examples/#materials_PhongMaterial)] * * ```` javascript * import {Viewer, Mesh, buildTorusGeometry, diff --git a/src/viewer/scene/materials/PointsMaterial.js b/src/viewer/scene/materials/PointsMaterial.js index 5d9739697..3deea3eab 100644 --- a/src/viewer/scene/materials/PointsMaterial.js +++ b/src/viewer/scene/materials/PointsMaterial.js @@ -32,7 +32,7 @@ const PRESETS = { * In the example below, we'll customize the {@link Scene}'s global ````PointsMaterial````, then use * an {@link XKTLoaderPlugin} to load a model containing a point cloud. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_PointsMaterial)] + * [[Run this example](/examples/#materials_PointsMaterial)] * * ````javascript * import {Viewer, XKTLoaderPlugin} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/materials/Texture.js b/src/viewer/scene/materials/Texture.js index 4475ddcbc..344a4ad17 100644 --- a/src/viewer/scene/materials/Texture.js +++ b/src/viewer/scene/materials/Texture.js @@ -52,7 +52,7 @@ function nextHighestPowerOfTwo(x) { * with {@link PhongMaterial#diffuseMap} and {@link PhongMaterial#specularMap}. The {@link Texture} pixel colors directly * provide the diffuse and specular components for each fragment across the {@link ReadableGeometry} surface. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_Texture)] + * [[Run this example](/examples/#materials_Texture)] * * ```` javascript * import {Viewer, Mesh, buildTorusGeometry, diff --git a/src/viewer/scene/math/math.js b/src/viewer/scene/math/math.js index bb70a1814..00b369b56 100644 --- a/src/viewer/scene/math/math.js +++ b/src/viewer/scene/math/math.js @@ -25,6 +25,8 @@ const math = { MIN_DOUBLE: -Number.MAX_SAFE_INTEGER, MAX_DOUBLE: Number.MAX_SAFE_INTEGER, + MAX_INT: 10000000, + /** * The number of radiians in a degree (0.0174532925). * @property DEGTORAD @@ -48,6 +50,21 @@ const math = { return (modelId + "#" + objectId) }, + /** + * Returns: + * - x != 0 => 1/x, + * - x == 1 => 1 + * + * @param {number} x + */ + safeInv(x) { + const retVal = 1 / x; + if (isNaN(retVal) || !isFinite(retVal)) { + return 1; + } + return retVal; + }, + /** * Returns a new, uninitialized two-element vector. * @method vec2 diff --git a/src/viewer/scene/mesh/Mesh.js b/src/viewer/scene/mesh/Mesh.js index aebf63cf2..bb1d8410f 100644 --- a/src/viewer/scene/mesh/Mesh.js +++ b/src/viewer/scene/mesh/Mesh.js @@ -51,7 +51,7 @@ const identityMat = math.identityMat4(); * * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph)] + * [[Run this example](/examples/#sceneRepresentation_SceneGraph)] * * ````javascript * import {Viewer, Mesh, Node, PhongMaterial, buildBoxGeometry, ReadableGeometry} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/ENTITY_FLAGS.js b/src/viewer/scene/model/ENTITY_FLAGS.js similarity index 100% rename from src/viewer/scene/models/DataTextureSceneModel/lib/ENTITY_FLAGS.js rename to src/viewer/scene/model/ENTITY_FLAGS.js diff --git a/src/viewer/scene/model/PerformanceModel.js b/src/viewer/scene/model/PerformanceModel.js new file mode 100644 index 000000000..f253bee07 --- /dev/null +++ b/src/viewer/scene/model/PerformanceModel.js @@ -0,0 +1,28 @@ +import {SceneModel} from "./../index.js"; + +/** + * @desc A high-performance model representation for efficient rendering and low memory usage. + * + * * PerformanceModel was replaced with {@link SceneModel} in ````xeokit-sdk v2.4````. + * * PerformanceModel currently extends {@link SceneModel}, in order to maintain backward-compatibility until we remove PerformanceModel. + * * See {@link SceneModel} for API details. + * + * @deprecated + * @implements {Drawable} + * @implements {Entity} + * @extends {SceneModel} + */ +class PerformanceModel extends SceneModel { + + /** + * See {@link VBOSceneModel} for details. + * + * @param owner + * @param cfg + */ + constructor(owner, cfg = {}) { + super(owner, cfg); + } +} + +export {PerformanceModel}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/RENDER_PASSES.js b/src/viewer/scene/model/RENDER_PASSES.js similarity index 100% rename from src/viewer/scene/models/DataTextureSceneModel/lib/RENDER_PASSES.js rename to src/viewer/scene/model/RENDER_PASSES.js diff --git a/src/viewer/scene/models/VBOSceneModel/VBOSceneModel.js b/src/viewer/scene/model/SceneModel.js similarity index 58% rename from src/viewer/scene/models/VBOSceneModel/VBOSceneModel.js rename to src/viewer/scene/model/SceneModel.js index d89a0a27a..bf7e9a53e 100644 --- a/src/viewer/scene/models/VBOSceneModel/VBOSceneModel.js +++ b/src/viewer/scene/model/SceneModel.js @@ -1,25 +1,22 @@ -import {Component} from "../../Component.js"; -import {math} from "../../math/math.js"; -import {buildEdgeIndices} from '../../math/buildEdgeIndices.js'; -import {VBOSceneModelMesh} from './lib/VBOSceneModelMesh.js'; -import {VBOSceneModelNode} from './lib/VBOSceneModelNode.js'; -import {getScratchMemory, putScratchMemory} from "./lib/ScratchMemory.js"; -import {TrianglesBatchingLayer} from './lib/layers/trianglesBatching/TrianglesBatchingLayer.js'; -import {TrianglesInstancingLayer} from './lib/layers/trianglesInstancing/TrianglesInstancingLayer.js'; -import {LinesBatchingLayer} from './lib/layers/linesBatching/LinesBatchingLayer.js'; -import {LinesInstancingLayer} from './lib/layers/linesInstancing/LinesInstancingLayer.js'; -import {PointsBatchingLayer} from './lib/layers/pointsBatching/PointsBatchingLayer.js'; -import {PointsInstancingLayer} from './lib/layers/pointsInstancing/PointsInstancingLayer.js'; -import {ENTITY_FLAGS} from './lib/ENTITY_FLAGS.js'; -import {RenderFlags} from "../../webgl/RenderFlags.js"; -import {worldToRTCPositions} from "../../math/rtcCoords.js"; -import {VBOSceneModelTextureSet} from "./lib/VBOSceneModelTextureSet.js"; -import {VBOSceneModelGeometry} from "./lib/VBOSceneModelGeometry.js"; -import {VBOSceneModelTexture} from "./lib/VBOSceneModelTexture.js"; -import {SceneModel} from "../SceneModel.js"; -import {Texture2D} from "../../webgl/Texture2D.js"; -import {utils} from "../../utils.js"; -import {getKTX2TextureTranscoder} from "../../utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js"; +import {Component} from "../Component.js"; +import {math} from "../math/math.js"; +import {buildEdgeIndices} from '../math/buildEdgeIndices.js'; +import {SceneModelMesh} from './SceneModelMesh.js'; +import {getScratchMemory, putScratchMemory} from "./vbo/ScratchMemory.js"; +import {TrianglesBatchingLayer} from './vbo/trianglesBatching/TrianglesBatchingLayer.js'; +import {TrianglesInstancingLayer} from './vbo/trianglesInstancing/TrianglesInstancingLayer.js'; +import {LinesBatchingLayer} from './vbo/linesBatching/LinesBatchingLayer.js'; +import {LinesInstancingLayer} from './vbo/linesInstancing/LinesInstancingLayer.js'; +import {PointsBatchingLayer} from './vbo/pointsBatching/PointsBatchingLayer.js'; +import {PointsInstancingLayer} from './vbo/pointsInstancing/PointsInstancingLayer.js'; +import {ENTITY_FLAGS} from './ENTITY_FLAGS.js'; +import {RenderFlags} from "../webgl/RenderFlags.js"; +import {worldToRTCPositions} from "../math/rtcCoords.js"; +import {SceneModelTextureSet} from "./SceneModelTextureSet.js"; +import {SceneModelTexture} from "./SceneModelTexture.js"; +import {Texture2D} from "../webgl/Texture2D.js"; +import {utils} from "../utils.js"; +import {getKTX2TextureTranscoder} from "../utils/textureTranscoders/KTX2TextureTranscoder/KTX2TextureTranscoder.js"; import { ClampToEdgeWrapping, LinearEncoding, @@ -32,50 +29,68 @@ import { NearestMipMapNearestFilter, RepeatWrapping, sRGBEncoding -} from "../../constants/constants.js"; +} from "../constants/constants.js"; +import {createPositionsDecodeMatrix, quantizePositions} from "./compression.js"; +import {uniquifyPositions} from "./dtx/triangles/calculateUniquePositions"; +import {rebucketPositions} from "./dtx/triangles/rebucketPositions"; +import {TrianglesDataTextureLayer} from "./dtx/triangles/TrianglesDataTextureLayer"; +import {SceneModelEntity} from "./SceneModelEntity"; +import {geometryCompressionUtils} from "../math/geometryCompressionUtils"; const tempVec3a = math.vec3(); const tempMat4 = math.mat4(); -const defaultScale = math.vec3([1, 1, 1]); -const defaultPosition = math.vec3([0, 0, 0]); -const defaultRotation = math.vec3([0, 0, 0]); -const defaultQuaternion = math.identityQuaternion(); +const DEFAULT_SCALE = math.vec3([1, 1, 1]); +const DEFAULT_POSITION = math.vec3([0, 0, 0]); +const DEFAULT_ROTATION = math.vec3([0, 0, 0]); +const DEFAULT_QUATERNION = math.identityQuaternion(); -const defaultColorTextureId = "defaultColorTexture"; -const defaultMetalRoughTextureId = "defaultMetalRoughTexture"; -const defaultNormalsTextureId = "defaultNormalsTexture"; -const defaultEmissiveTextureId = "defaultEmissiveTexture"; -const defaultOcclusionTextureId = "defaultOcclusionTexture"; -const defaultTextureSetId = "defaultTextureSet"; +const DEFAULT_COLOR_TEXTURE_ID = "defaultColorTexture"; +const DEFAULT_METAL_ROUGH_TEXTURE_ID = "defaultMetalRoughTexture"; +const DEFAULT_NORMALS_TEXTURE_ID = "defaultNormalsTexture"; +const DEFAULT_EMISSIVE_TEXTURE_ID = "defaultEmissiveTexture"; +const DEFAULT_OCCLUSION_TEXTURE_ID = "defaultOcclusionTexture"; +const DEFAULT_TEXTURE_SET_ID = "defaultTextureSet"; + +const defaultCompressedColor = new Uint8Array([255, 255, 255]); + +const VBO_INSTANCED = 0; +const VBO_BATCHED = 1; +const DTX = 2; /** * @desc A high-performance model representation for efficient rendering and low memory usage. * * # Examples * - * * [VBOSceneModel using geometry batching](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_batching) - * * [VBOSceneModel using geometry batching and RTC coordinates](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_batching_origin) - * * [VBOSceneModel using geometry instancing](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_instancing) - * * [VBOSceneModel using geometry instancing and RTC coordinates](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_instancing_origin) + * Internally, SceneModel uses a combination of several different techniques to render and represent + * the different parts of a typical model. Each of the live examples at these links is designed to "unit test" one of these + * techniques, in isolation. If some bug occurs in SceneModel, we use these tests to debug, but they also + * serve to demonstrate how to use the capabilities of SceneModel programmatically. + * + * * [Loading building models into SceneModels](/examples/buildings) + * * [Loading city models into SceneModels](/examples/cities) + * * [Loading LiDAR scans into SceneModels](/examples/lidar) + * * [Loading CAD models into SceneModels](/examples/cad) + * * [SceneModel feature tests](/examples/scenemodel) * * # Overview * * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency. * - * For huge models, we have the ````VBOSceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL. + * For huge models, we have the ````SceneModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL. * - * ````VBOSceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}. + * ````SceneModel```` is the default model representation loaded by (at least) {@link GLTFLoaderPlugin}, {@link XKTLoaderPlugin} and {@link WebIFCLoaderPlugin}. * - * In this tutorial you'll learn how to use ````VBOSceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````VBOSceneModel```` if you were writing your own model loader plugins. + * In this tutorial you'll learn how to use ````SceneModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````SceneModel```` if you were writing your own model loader plugins. * * # Contents * - * - [VBOSceneModel](#performancemodel) + * - [SceneModel](#DataTextureSceneModel) * - [GPU-Resident Geometry](#gpu-resident-geometry) * - [Picking](#picking) * - [Example 1: Geometry Instancing](#example-1--geometry-instancing) - * - [Finalizing a VBOSceneModel](#finalizing-a-performancemodel) + * - [Finalizing a SceneModel](#finalizing-a-DataTextureSceneModel) * - [Finding Entities](#finding-entities) * - [Example 2: Geometry Batching](#example-2--geometry-batching) * - [Classifying with Metadata](#classifying-with-metadata) @@ -85,9 +100,9 @@ const defaultTextureSetId = "defaultTextureSet"; * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing) * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching) * - * ## VBOSceneModel + * ## SceneModel * - * ````VBOSceneModel```` uses two rendering techniques internally: + * ````SceneModel```` uses two rendering techniques internally: * * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call. @@ -95,46 +110,44 @@ const defaultTextureSetId = "defaultTextureSet"; *
            * These techniques come with certain limitations: * - * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````VBOSceneModel```` uses simple Lambertian shading without textures. - * * Static transforms - transforms within a ````VBOSceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can. + * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````SceneModel```` uses simple Lambertian shading without textures. + * * Static transforms - transforms within a ````SceneModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can. * * Immutable model representation - while scene graph {@link Node}s and - * {@link Mesh}es can be dynamically plugged together, ````VBOSceneModel```` is immutable, + * {@link Mesh}es can be dynamically plugged together, ````SceneModel```` is immutable, * since it packs its geometries into buffers and instanced arrays. * - * ````VBOSceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as + * ````SceneModel````'s API allows us to exploit batching and instancing, while exposing its elements as * abstract {@link Entity} types. * * {@link Entity} is the abstract base class for * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary. * - * * A ````VBOSceneModel```` is an {@link Entity} that represents a model. - * * A ````VBOSceneModel```` represents each of its objects with an {@link Entity}. + * * A ````SceneModel```` is an {@link Entity} that represents a model. + * * A ````SceneModel```` represents each of its objects with an {@link Entity}. * * Each {@link Entity} has one or more meshes that define its shape. * * Each mesh has either its own unique geometry, or shares a geometry with other meshes. * * ## GPU-Resident Geometry * - * For a low memory footprint, ````VBOSceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is + * For a low memory footprint, ````SceneModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is * not readable by JavaScript. * * * ## Example 1: Geometry Instancing * - * In the example below, we'll use a ````VBOSceneModel```` + * In the example below, we'll use a ````SceneModel```` * to build a simple table model using geometry instancing. * - * We'll start by adding a reusable box-shaped geometry to our ````VBOSceneModel````. + * We'll start by adding a reusable box-shaped geometry to our ````SceneModel````. * * Then, for each object in our model we'll add an {@link Entity} * that has a mesh that instances our box geometry, transforming and coloring the instance. * - * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_instancing) - * - * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_instancing)] + * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneModel_instancing) * * ````javascript - * import {Viewer, VBOSceneModel} from "xeokit-sdk.es.js"; + * import {Viewer, SceneModel} from "xeokit-sdk.es.js"; * * const viewer = new Viewer({ * canvasId: "myCanvas", @@ -145,21 +158,21 @@ const defaultTextureSetId = "defaultTextureSet"; * viewer.scene.camera.look = [0, -5.75, 0]; * viewer.scene.camera.up = [0.37, 0.91, -0.11]; * - * // Build a VBOSceneModel representing a table + * // Build a SceneModel representing a table * // with four legs, using geometry instancing * - * const vboSceneModel = new VBOSceneModel(viewer.scene, { + * const sceneModel = new SceneModel(viewer.scene, { * id: "table", - * isModel: true, // <--- Registers VBOSceneModel in viewer.scene.models + * isModel: true, // <--- Registers SceneModel in viewer.scene.models * position: [0, 0, 0], * scale: [1, 1, 1], * rotation: [0, 0, 0] * }); * - * // Create a reusable geometry within the VBOSceneModel + * // Create a reusable geometry within the SceneModel * // We'll instance this geometry by five meshes * - * vboSceneModel.createGeometry({ + * sceneModel.createGeometry({ * * id: "myBoxGeometry", * @@ -207,7 +220,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Red table leg * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "redLegMesh", * geometryId: "myBoxGeometry", * position: [-4, -6, -4], @@ -216,7 +229,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1, 0.3, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "redLeg", * meshIds: ["redLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -224,7 +237,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Green table leg * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "greenLegMesh", * geometryId: "myBoxGeometry", * position: [4, -6, -4], @@ -233,7 +246,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 1.0, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "greenLeg", * meshIds: ["greenLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -241,7 +254,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Blue table leg * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "blueLegMesh", * geometryId: "myBoxGeometry", * position: [4, -6, 4], @@ -250,7 +263,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "blueLeg", * meshIds: ["blueLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -258,7 +271,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Yellow table leg * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "yellowLegMesh", * geometryId: "myBoxGeometry", * position: [-4, -6, 4], @@ -267,7 +280,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 1.0, 0.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "yellowLeg", * meshIds: ["yellowLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -275,7 +288,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Purple table top * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "purpleTableTopMesh", * geometryId: "myBoxGeometry", * position: [0, -3, 0], @@ -284,24 +297,24 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "purpleTableTop", * meshIds: ["purpleTableTopMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects * }); * ```` * - * ## Finalizing a VBOSceneModel + * ## Finalizing a SceneModel * - * Before we can view and interact with our ````VBOSceneModel````, we need to **finalize** it. Internally, this causes the ````VBOSceneModel```` to build the + * Before we can view and interact with our ````SceneModel````, we need to **finalize** it. Internally, this causes the ````SceneModel```` to build the * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example), - * this causes ````VBOSceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and - * batching within the same ````VBOSceneModel````. + * this causes ````SceneModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and + * batching within the same ````SceneModel````. * - * Once finalized, we can't add anything more to our ````VBOSceneModel````. + * Once finalized, we can't add anything more to our ````SceneModel````. * * ```` javascript - * vboSceneModel.finalize(); + * SceneModel.finalize(); * ```` * * ## Finding Entities @@ -310,7 +323,7 @@ const defaultTextureSetId = "defaultTextureSet"; * the abstract base class for components that represent models, objects, or just * anonymous visible elements. * - * Since we created configured our ````VBOSceneModel```` with ````isModel: true````, + * Since we created configured our ````SceneModel```` with ````isModel: true````, * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since * we configured each of its Entities with ````isObject: true````, we're able to * find them in ````viewer.scene.objects````. @@ -328,15 +341,13 @@ const defaultTextureSetId = "defaultTextureSet"; * * ## Example 2: Geometry Batching * - * Let's once more use a ````VBOSceneModel```` + * Let's once more use a ````SceneModel```` * to build the simple table model, this time exploiting geometry batching. * - * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_batching) - * - * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_batching)] + * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneModel_batching) * * ````javascript - * import {Viewer, VBOSceneModel} from "xeokit-sdk.es.js"; + * import {Viewer, SceneModel} from "xeokit-sdk.es.js"; * * const viewer = new Viewer({ * canvasId: "myCanvas", @@ -347,10 +358,10 @@ const defaultTextureSetId = "defaultTextureSet"; * viewer.scene.camera.look = [0, -5.75, 0]; * viewer.scene.camera.up = [0.37, 0.91, -0.11]; * - * // Create a VBOSceneModel representing a table with four legs, using geometry batching - * const vboSceneModel = new VBOSceneModel(viewer.scene, { + * // Create a SceneModel representing a table with four legs, using geometry batching + * const sceneModel = new SceneModel(viewer.scene, { * id: "table", - * isModel: true, // <--- Registers VBOSceneModel in viewer.scene.models + * isModel: true, // <--- Registers SceneModel in viewer.scene.models * position: [0, 0, 0], * scale: [1, 1, 1], * rotation: [0, 0, 0] @@ -358,7 +369,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Red table leg * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "redLegMesh", * * // Geometry arrays are same as for the earlier batching example @@ -372,7 +383,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1, 0.3, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "redLeg", * meshIds: ["redLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -380,7 +391,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Green table leg * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "greenLegMesh", * primitive: "triangles", * primitive: "triangles", @@ -393,7 +404,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 1.0, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "greenLeg", * meshIds: ["greenLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -401,7 +412,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Blue table leg * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "blueLegMesh", * primitive: "triangles", * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ], @@ -413,7 +424,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "blueLeg", * meshIds: ["blueLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -421,7 +432,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Yellow table leg object * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "yellowLegMesh", * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ], * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ], @@ -432,7 +443,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 1.0, 0.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "yellowLeg", * meshIds: ["yellowLegMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects @@ -440,7 +451,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * // Purple table top * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "purpleTableTopMesh", * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ], * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ], @@ -451,15 +462,15 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "purpleTableTop", * meshIds: ["purpleTableTopMesh"], * isObject: true // <---- Registers Entity by ID on viewer.scene.objects * }); * - * // Finalize the VBOSceneModel. + * // Finalize the SceneModel. * - * vboSceneModel.finalize(); + * SceneModel.finalize(); * * // Find BigModelNodes by their model and object IDs * @@ -474,7 +485,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * ## Classifying with Metadata * - * In the previous examples, we used ````VBOSceneModel```` to build + * In the previous examples, we used ````SceneModel```` to build * two versions of the same table model, to demonstrate geometry batching and geometry instancing. * * We'll now classify our {@link Entity}s with metadata. This metadata @@ -604,7 +615,7 @@ const defaultTextureSetId = "defaultTextureSet"; * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter). * * This hierarchy allows us to express the hierarchical structure of a model while representing it in - * various ways in the 3D scene (such as with ````VBOSceneModel````, which + * various ways in the 3D scene (such as with ````SceneModel````, which * has a non-hierarchical scene representation). * * Note also that a {@link MetaObject} does not need to have a corresponding @@ -612,7 +623,7 @@ const defaultTextureSetId = "defaultTextureSet"; * * # RTC Coordinates for Double Precision * - * ````VBOSceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates. + * ````SceneModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates. * * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering. * @@ -628,94 +639,96 @@ const defaultTextureSetId = "defaultTextureSet"; * * ## RTC Coordinates with Geometry Instancing * - * To use RTC with ````VBOSceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````VBOSceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````. + * To use RTC with ````SceneModel```` geometry instancing, we specify an RTC center for the geometry via its ````origin```` parameter. Then ````SceneModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````origin````. * * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center. * * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````. * - * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_batching) - * - * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_instancing_origin)] + * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneModel_batching) * * ````javascript * const origin = [100000000, 0, 100000000]; * - * vboSceneModel.createGeometry({ + * sceneModel.createGeometry({ * id: "box", - * origin: origin, // This geometry's positions, and the transforms of all meshes that instance the geometry, are relative to the RTC center * primitive: "triangles", * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ], * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ], * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ], * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg1", * geometryId: "box", * position: [-4, -6, -4], * scale: [1, 3, 1], * rotation: [0, 0, 0], - * color: [1, 0.3, 0.3] + * color: [1, 0.3, 0.3], + * origin: origin * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg1"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg2", * geometryId: "box", * position: [4, -6, -4], * scale: [1, 3, 1], * rotation: [0, 0, 0], - * color: [0.3, 1.0, 0.3] + * color: [0.3, 1.0, 0.3], + * origin: origin * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg2"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg3", * geometryId: "box", * position: [4, -6, 4], * scale: [1, 3, 1], * rotation: [0, 0, 0], - * color: [0.3, 0.3, 1.0] + * color: [0.3, 0.3, 1.0], + * origin: origin * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg3"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg4", * geometryId: "box", * position: [-4, -6, 4], * scale: [1, 3, 1], * rotation: [0, 0, 0], - * color: [1.0, 1.0, 0.0] + * color: [1.0, 1.0, 0.0], + * origin: origin * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg4"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "top", * geometryId: "box", * position: [0, -3, 0], * scale: [6, 0.5, 6], * rotation: [0, 0, 0], - * color: [1.0, 0.3, 1.0] + * color: [1.0, 0.3, 1.0], + * origin: origin * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["top"], * isObject: true * }); @@ -723,20 +736,18 @@ const defaultTextureSetId = "defaultTextureSet"; * * ## RTC Coordinates with Geometry Batching * - * To use RTC with ````VBOSceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````. + * To use RTC with ````SceneModel```` geometry batching, we specify an RTC center (````origin````) for each mesh. For performance, we try to have as many meshes share the same value for ````origin```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````origin````. * * For simplicity, the meshes in our example all share the same RTC center. * * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````. * - * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_batching) - * - * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_VBOSceneModel_batching_origin)] + * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneModel_batching) * * ````javascript * const origin = [100000000, 0, 100000000]; * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg1", * origin: origin, // This mesh's positions and transforms are relative to the RTC center * primitive: "triangles", @@ -749,12 +760,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1, 0.3, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg1"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg2", * origin: origin, // This mesh's positions and transforms are relative to the RTC center * primitive: "triangles", @@ -767,12 +778,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 1.0, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg2"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg3", * origin: origin, // This mesh's positions and transforms are relative to the RTC center * primitive: "triangles", @@ -785,12 +796,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg3"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg4", * origin: origin, // This mesh's positions and transforms are relative to the RTC center * primitive: "triangles", @@ -803,12 +814,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 1.0, 0.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg4"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "top", * origin: origin, // This mesh's positions and transforms are relative to the RTC center * primitive: "triangles", @@ -821,7 +832,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["top"], * isObject: true * }); @@ -829,25 +840,25 @@ const defaultTextureSetId = "defaultTextureSet"; * * ## Positioning at World-space coordinates * - * To position a VBOSceneModel at given double-precision World coordinates, we can - * configure the ````origin```` of the VBOSceneModel itself. The ````origin```` is a double-precision - * 3D World-space position at which the VBOSceneModel will be located. + * To position a SceneModel at given double-precision World coordinates, we can + * configure the ````origin```` of the SceneModel itself. The ````origin```` is a double-precision + * 3D World-space position at which the SceneModel will be located. * * Note that ````position```` is a single-precision offset relative to ````origin````. * * ````javascript * const origin = [100000000, 0, 100000000]; * - * const vboSceneModel = new VBOSceneModel(viewer.scene, { + * const sceneModel = new SceneModel(viewer.scene, { * id: "table", * isModel: true, - * origin: origin, // Everything in this VBOSceneModel is relative to this RTC center + * origin: origin, // Everything in this SceneModel is relative to this RTC center * position: [0, 0, 0], * scale: [1, 1, 1], * rotation: [0, 0, 0] * }); * - * vboSceneModel.createGeometry({ + * sceneModel.createGeometry({ * id: "box", * primitive: "triangles", * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ], @@ -855,7 +866,7 @@ const defaultTextureSetId = "defaultTextureSet"; * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ], * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg1", * geometryId: "box", * position: [-4, -6, -4], @@ -864,12 +875,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1, 0.3, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg1"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg2", * geometryId: "box", * position: [4, -6, -4], @@ -878,12 +889,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 1.0, 0.3] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg2"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg3", * geometryId: "box", * position: [4, -6, 4], @@ -892,12 +903,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [0.3, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg3"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "leg4", * geometryId: "box", * position: [-4, -6, 4], @@ -906,12 +917,12 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 1.0, 0.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["leg4"], * isObject: true * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "top", * geometryId: "box", * position: [0, -3, 0], @@ -920,7 +931,7 @@ const defaultTextureSetId = "defaultTextureSet"; * color: [1.0, 0.3, 1.0] * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * meshIds: ["top"], * isObject: true * }); @@ -928,14 +939,14 @@ const defaultTextureSetId = "defaultTextureSet"; * * # Textures * - * ## Loading KTX2 Texture Files into a VBOSceneModel + * ## Loading KTX2 Texture Files into a SceneModel * - * A {@link VBOSceneModel} that is configured with a {@link KTX2TextureTranscoder} will + * A {@link SceneModel} that is configured with a {@link KTX2TextureTranscoder} will * allow us to load textures into it from KTX2 buffers or files. * - * In the example below, we'll create a {@link Viewer}, containing a {@link VBOSceneModel} configured with a - * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the VBOSceneModel, consisting of - * a single mesh with a texture loaded from a KTX2 file, which our VBOSceneModel internally transcodes, using + * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a + * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of + * a single mesh with a texture loaded from a KTX2 file, which our SceneModel internally transcodes, using * its {@link KTX2TextureTranscoder}. Note how we configure our {@link KTX2TextureTranscoder} with a path to the Basis Universal * transcoder WASM module. * @@ -954,28 +965,28 @@ const defaultTextureSetId = "defaultTextureSet"; * transcoderPath: "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/" // <------ Path to BasisU transcoder module * }); * - * const vboSceneModel = new VBOSceneModel(viewer.scene, { + * const sceneModel = new SceneModel(viewer.scene, { * id: "myModel", * textureTranscoder // <<-------------------- Configure model with our transcoder * }); * - * vboSceneModel.createTexture({ + * sceneModel.createTexture({ * id: "myColorTexture", * src: "../assets/textures/compressed/sample_uastc_zstd.ktx2" // <<----- KTX2 texture asset * }); * - * vboSceneModel.createTexture({ + * sceneModel.createTexture({ * id: "myMetallicRoughnessTexture", * src: "../assets/textures/alpha/crosshatchAlphaMap.jpg" // <<----- JPEG texture asset * }); * - * vboSceneModel.createTextureSet({ + * sceneModel.createTextureSet({ * id: "myTextureSet", * colorTextureId: "myColorTexture", * metallicRoughnessTextureId: "myMetallicRoughnessTexture" * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "myMesh", * textureSetId: "myTextureSet", * primitive: "triangles", @@ -985,22 +996,22 @@ const defaultTextureSetId = "defaultTextureSet"; * indices: [0, 1, 2, ...], * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "myEntity", * meshIds: ["myMesh"] * }); * - * vboSceneModel.finalize(); + * sceneModel.finalize(); * ```` * - * ## Loading KTX2 Textures from ArrayBuffers into a VBOSceneModel + * ## Loading KTX2 Textures from ArrayBuffers into a SceneModel * - * A VBOSceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into + * A SceneModel that is configured with a {@link KTX2TextureTranscoder} will allow us to load textures into * it from KTX2 ArrayBuffers. * - * In the example below, we'll create a {@link Viewer}, containing a {@link VBOSceneModel} configured with a - * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the VBOSceneModel, consisting of - * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our VBOSceneModel internally transcodes, using + * In the example below, we'll create a {@link Viewer}, containing a {@link SceneModel} configured with a + * {@link KTX2TextureTranscoder}. We'll then programmatically create a simple object within the SceneModel, consisting of + * a single mesh with a texture loaded from a KTX2 ArrayBuffer, which our SceneModel internally transcodes, using * its {@link KTX2TextureTranscoder}. * * ````javascript @@ -1018,30 +1029,30 @@ const defaultTextureSetId = "defaultTextureSet"; * transcoderPath: "https://cdn.jsdelivr.net/npm/@xeokit/xeokit-sdk/dist/basis/" // <------ Path to BasisU transcoder module * }); * - * const vboSceneModel = new VBOSceneModel(viewer.scene, { + * const sceneModel = new SceneModel(viewer.scene, { * id: "myModel", * textureTranscoder // <<-------------------- Configure model with our transcoder * }); * * utils.loadArraybuffer("../assets/textures/compressed/sample_uastc_zstd.ktx2",(arrayBuffer) => { * - * vboSceneModel.createTexture({ + * sceneModel.createTexture({ * id: "myColorTexture", * buffers: [arrayBuffer] // <<----- KTX2 texture asset * }); * - * vboSceneModel.createTexture({ + * sceneModel.createTexture({ * id: "myMetallicRoughnessTexture", * src: "../assets/textures/alpha/crosshatchAlphaMap.jpg" // <<----- JPEG texture asset * }); * - * vboSceneModel.createTextureSet({ + * sceneModel.createTextureSet({ * id: "myTextureSet", * colorTextureId: "myColorTexture", * metallicRoughnessTextureId: "myMetallicRoughnessTexture" * }); * - * vboSceneModel.createMesh({ + * sceneModel.createMesh({ * id: "myMesh", * textureSetId: "myTextureSet", * primitive: "triangles", @@ -1051,97 +1062,102 @@ const defaultTextureSetId = "defaultTextureSet"; * indices: [0, 1, 2, ...], * }); * - * vboSceneModel.createEntity({ + * sceneModel.createEntity({ * id: "myEntity", * meshIds: ["myMesh"] * }); * - * vboSceneModel.finalize(); + * sceneModel.finalize(); * }); * ```` * - * @implements {Drawable} * @implements {Entity} - * @implements {SceneModel} */ -class VBOSceneModel extends Component { +export class SceneModel extends Component { /** * @constructor * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well. * @param {*} [cfg] Configs * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted. - * @param {Boolean} [cfg.isModel] Specify ````true```` if this VBOSceneModel represents a model, in which case the VBOSceneModel will be registered by {@link VBOSceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}. + * @param {Boolean} [cfg.isModel] Specify ````true```` if this SceneModel represents a model, in which case the SceneModel will be registered by {@link SceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}. * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin. * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter. * @param {Number[]} [cfg.scale=[1,1,1]] Local scale. * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis. * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters. - * @param {Boolean} [cfg.visible=true] Indicates if the VBOSceneModel is initially visible. - * @param {Boolean} [cfg.culled=false] Indicates if the VBOSceneModel is initially culled from view. - * @param {Boolean} [cfg.pickable=true] Indicates if the VBOSceneModel is initially pickable. - * @param {Boolean} [cfg.clippable=true] Indicates if the VBOSceneModel is initially clippable. - * @param {Boolean} [cfg.collidable=true] Indicates if the VBOSceneModel is initially included in boundary calculations. - * @param {Boolean} [cfg.xrayed=false] Indicates if the VBOSceneModel is initially xrayed. - * @param {Boolean} [cfg.highlighted=false] Indicates if the VBOSceneModel is initially highlighted. - * @param {Boolean} [cfg.selected=false] Indicates if the VBOSceneModel is initially selected. - * @param {Boolean} [cfg.edges=false] Indicates if the VBOSceneModel's edges are initially emphasized. - * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] VBOSceneModel's initial RGB colorize color, multiplies by the rendered fragment colors. - * @param {Number} [cfg.opacity=1.0] VBOSceneModel's initial opacity factor, multiplies by the rendered fragment alpha. - * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this VBOSceneModel. When + * @param {Boolean} [cfg.visible=true] Indicates if the SceneModel is initially visible. + * @param {Boolean} [cfg.culled=false] Indicates if the SceneModel is initially culled from view. + * @param {Boolean} [cfg.pickable=true] Indicates if the SceneModel is initially pickable. + * @param {Boolean} [cfg.clippable=true] Indicates if the SceneModel is initially clippable. + * @param {Boolean} [cfg.collidable=true] Indicates if the SceneModel is initially included in boundary calculations. + * @param {Boolean} [cfg.xrayed=false] Indicates if the SceneModel is initially xrayed. + * @param {Boolean} [cfg.highlighted=false] Indicates if the SceneModel is initially highlighted. + * @param {Boolean} [cfg.selected=false] Indicates if the SceneModel is initially selected. + * @param {Boolean} [cfg.edges=false] Indicates if the SceneModel's edges are initially emphasized. + * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] SceneModel's initial RGB colorize color, multiplies by the rendered fragment colors. + * @param {Number} [cfg.opacity=1.0] SceneModel's initial opacity factor, multiplies by the rendered fragment alpha. + * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this SceneModel. When * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s. - * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this VBOSceneModel. SAO is configured by the Scene's {@link SAO} component. - * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the VBOSceneModel when {@link Scene#pbrEnabled} is ````true````. - * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the VBOSceneModel when {@link Scene#colorTextureEnabled} is ````true````. + * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. SAO is configured by the Scene's {@link SAO} component. + * @param {Boolean} [cfg.pbrEnabled=true] Indicates if physically-based rendering (PBR) will apply to the SceneModel when {@link Scene#pbrEnabled} is ````true````. + * @param {Boolean} [cfg.colorTextureEnabled=true] Indicates if base color textures will be rendered for the SceneModel when {@link Scene#colorTextureEnabled} is ````true````. * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn. * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied - * to limit the size of the batched geometry arrays that VBOSceneModel internally creates for batched geometries. + * to limit the size of the batched geometry arrays that SceneModel internally creates for batched geometries. * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```. - * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link VBOSceneModel#createTexture} + * @param {TextureTranscoder} [cfg.textureTranscoder] Transcoder that will be used internally by {@link SceneModel#createTexture} * to convert transcoded texture data. Only required when we'll be providing transcoded data - * to {@link VBOSceneModel#createTexture}. We assume that all transcoded texture data added to a ````VBOSceneModel```` + * to {@link SceneModel#createTexture}. We assume that all transcoded texture data added to a ````SceneModel```` * will then in a format supported by this transcoder. + * @param {Boolean} [params.dtxEnabled=true] When ````true```` (default) use data textures (DTX), where appropriate, to + * represent the returned model. Set false to always use vertex buffer objects (VBOs). Note that DTX is only applicable + * to non-textured triangle meshes, and that VBOs are always used for meshes that have textures, line segments, or point + * primitives. Only works while {@link DTX#enabled} is also ````true````. */ constructor(owner, cfg = {}) { super(owner, cfg); + console.log("Creating SceneModel"); + + this._dtxEnabled = this.scene.dtxEnabled && (cfg.dtxEnabled !== false); + + this._enableVertexWelding = false; // Not needed for most objects, and very expensive, so disabled + this._enableIndexBucketing = true; + + this._vboBatchingLayerScratchMemory = getScratchMemory(); this._textureTranscoder = cfg.textureTranscoder || getKTX2TextureTranscoder(this.scene.viewer); this._maxGeometryBatchSize = cfg.maxGeometryBatchSize; this._aabb = math.collapseAABB3(); this._aabbDirty = false; - this._layerList = []; // For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second - this._nodeList = []; - this._lastOrigin = null; - this._lastPositionsDecodeMatrix = null; - this._lastNormals = null; + this._quantizationRanges = {}; - this._instancingLayers = {}; - this._currentBatchingLayers = {}; + this._vboInstancingLayers = {}; + this._vboBatchingLayers = {}; + this._dtxLayers = {}; - this._scratchMemory = getScratchMemory(); + this._layerList = []; // For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second + this._entityList = []; this._geometries = {}; + this._dtxBuckets = {}; // Geometries with optimizations used for data texture representation this._textures = {}; this._textureSets = {}; this._meshes = {}; - this._nodes = {}; + this._entities = {}; + + this._scheduledMeshes = {} /** @private **/ this.renderFlags = new RenderFlags(); - /** - * True when this model has been finalized after a successful call to finalize(). - * @type {boolean} - */ - this.finalized = false; - /** * @private */ @@ -1200,16 +1216,9 @@ class VBOSceneModel extends Component { */ this.numCulledLayerPortions = 0; - /** @private */ this.numEntities = 0; - - /** @private */ this._numTriangles = 0; - - /** @private */ this._numLines = 0; - - /** @private */ this._numPoints = 0; this._edgeThreshold = cfg.edgeThreshold || 10; @@ -1224,17 +1233,17 @@ class VBOSceneModel extends Component { math.eulerToQuaternion(this._rotation, "XYZ", this._quaternion); } this._scale = math.vec3(cfg.scale || [1, 1, 1]); - this._worldMatrix = math.mat4(); - math.composeMat4(this._position, this._quaternion, this._scale, this._worldMatrix); + this._sceneModelMatrix = math.mat4(); + math.composeMat4(this._position, this._quaternion, this._scale, this._sceneModelMatrix); this._worldNormalMatrix = math.mat4(); - math.inverseMat4(this._worldMatrix, this._worldNormalMatrix); + math.inverseMat4(this._sceneModelMatrix, this._worldNormalMatrix); math.transposeMat4(this._worldNormalMatrix); if (cfg.matrix || cfg.position || cfg.rotation || cfg.scale || cfg.quaternion) { this._viewMatrix = math.mat4(); this._viewNormalMatrix = math.mat4(); this._viewMatrixDirty = true; - this._worldMatrixNonIdentity = true; + this._sceneModelMatrixNonIdentity = true; } this._opacity = 1.0; @@ -1253,6 +1262,10 @@ class VBOSceneModel extends Component { this._viewMatrixDirty = true; }); + if (this.scene.vfc.enabled) { + this._vfcManager = this.scene.vfc.getVFCManager(this); + } + this._createDefaultTextureSet(); this.visible = cfg.visible; @@ -1272,50 +1285,50 @@ class VBOSceneModel extends Component { } _createDefaultTextureSet() { - // Every VBOSceneModelMesh gets at least the default TextureSet, + // Every SceneModelMesh gets at least the default TextureSet, // which contains empty default textures filled with color - const defaultColorTexture = new VBOSceneModelTexture({ - id: defaultColorTextureId, + const defaultColorTexture = new SceneModelTexture({ + id: DEFAULT_COLOR_TEXTURE_ID, texture: new Texture2D({ gl: this.scene.canvas.gl, preloadColor: [1, 1, 1, 1] // [r, g, b, a]}) }) }); - const defaultMetalRoughTexture = new VBOSceneModelTexture({ - id: defaultMetalRoughTextureId, + const defaultMetalRoughTexture = new SceneModelTexture({ + id: DEFAULT_METAL_ROUGH_TEXTURE_ID, texture: new Texture2D({ gl: this.scene.canvas.gl, preloadColor: [0, 1, 1, 1] // [unused, roughness, metalness, unused] }) }); - const defaultNormalsTexture = new VBOSceneModelTexture({ - id: defaultNormalsTextureId, + const defaultNormalsTexture = new SceneModelTexture({ + id: DEFAULT_NORMALS_TEXTURE_ID, texture: new Texture2D({ gl: this.scene.canvas.gl, preloadColor: [0, 0, 0, 0] // [x, y, z, unused] - these must be zeros }) }); - const defaultEmissiveTexture = new VBOSceneModelTexture({ - id: defaultEmissiveTextureId, + const defaultEmissiveTexture = new SceneModelTexture({ + id: DEFAULT_EMISSIVE_TEXTURE_ID, texture: new Texture2D({ gl: this.scene.canvas.gl, preloadColor: [0, 0, 0, 1] // [x, y, z, unused] }) }); - const defaultOcclusionTexture = new VBOSceneModelTexture({ - id: defaultOcclusionTextureId, + const defaultOcclusionTexture = new SceneModelTexture({ + id: DEFAULT_OCCLUSION_TEXTURE_ID, texture: new Texture2D({ gl: this.scene.canvas.gl, preloadColor: [1, 1, 1, 1] // [x, y, z, unused] }) }); - this._textures[defaultColorTextureId] = defaultColorTexture; - this._textures[defaultMetalRoughTextureId] = defaultMetalRoughTexture; - this._textures[defaultNormalsTextureId] = defaultNormalsTexture; - this._textures[defaultEmissiveTextureId] = defaultEmissiveTexture; - this._textures[defaultOcclusionTextureId] = defaultOcclusionTexture; - this._textureSets[defaultTextureSetId] = new VBOSceneModelTextureSet({ - id: defaultTextureSetId, + this._textures[DEFAULT_COLOR_TEXTURE_ID] = defaultColorTexture; + this._textures[DEFAULT_METAL_ROUGH_TEXTURE_ID] = defaultMetalRoughTexture; + this._textures[DEFAULT_NORMALS_TEXTURE_ID] = defaultNormalsTexture; + this._textures[DEFAULT_EMISSIVE_TEXTURE_ID] = defaultEmissiveTexture; + this._textures[DEFAULT_OCCLUSION_TEXTURE_ID] = defaultOcclusionTexture; + this._textureSets[DEFAULT_TEXTURE_SET_ID] = new SceneModelTextureSet({ + id: DEFAULT_TEXTURE_SET_ID, model: this, colorTexture: defaultColorTexture, metallicRoughnessTexture: defaultMetalRoughTexture, @@ -1326,11 +1339,11 @@ class VBOSceneModel extends Component { } //------------------------------------------------------------------------------------------------------------------ - // VBOSceneModel members + // SceneModel members //------------------------------------------------------------------------------------------------------------------ /** - * Returns true to indicate that this Component is a VBOSceneModel. + * Returns true to indicate that this Component is a SceneModel. * @type {Boolean} */ get isPerformanceModel() { @@ -1338,29 +1351,28 @@ class VBOSceneModel extends Component { } /** - * Returns the {@link Entity}s in this VBOSceneModel. + * Returns the {@link Entity}s in this SceneModel. * @returns {*|{}} */ get objects() { - return this._nodes; + return this._entities; } /** - * Gets the 3D World-space origin for this VBOSceneModel. + * Gets the 3D World-space origin for this SceneModel. * - * Each geometry or mesh origin, if supplied, is relative to this origin. + * Each mesh origin, if supplied, is relative to this origin. * * Default value is ````[0,0,0]````. * * @type {Float64Array} - * @abstract */ get origin() { return this._origin; } /** - * Gets the VBOSceneModel's local translation. + * Gets the SceneModel's local translation. * * Default value is ````[0,0,0]````. * @@ -1371,7 +1383,7 @@ class VBOSceneModel extends Component { } /** - * Gets the VBOSceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis. + * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis. * * Default value is ````[0,0,0]````. * @@ -1393,7 +1405,7 @@ class VBOSceneModel extends Component { } /** - * Gets the VBOSceneModel's local scale. + * Gets the SceneModel's local scale. * * Default value is ````[1,1,1]````. * @@ -1404,28 +1416,28 @@ class VBOSceneModel extends Component { } /** - * Gets the VBOSceneModel's local modeling transform matrix. + * Gets the SceneModel's local modeling transform matrix. * * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````. * * @type {Number[]} */ get matrix() { - return this._worldMatrix; + return this._sceneModelMatrix; } /** - * Gets the VBOSceneModel's World matrix. + * Gets the SceneModel's World matrix. * * @property worldMatrix * @type {Number[]} */ get worldMatrix() { - return this._worldMatrix; + return this._sceneModelMatrix; } /** - * Gets the VBOSceneModel's World normal matrix. + * Gets the SceneModel's World normal matrix. * * @type {Number[]} */ @@ -1435,7 +1447,7 @@ class VBOSceneModel extends Component { /** * Called by private renderers in ./lib, returns the view matrix with which to - * render this VBOSceneModel. The view matrix is the concatenation of the + * render this SceneModel. The view matrix is the concatenation of the * Camera view matrix with the Performance model's world (modeling) matrix. * * @private @@ -1445,7 +1457,7 @@ class VBOSceneModel extends Component { return this.scene.camera.viewMatrix; } if (this._viewMatrixDirty) { - math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, this._viewMatrix); + math.mulMat4(this.scene.camera.viewMatrix, this._sceneModelMatrix, this._viewMatrix); math.inverseMat4(this._viewMatrix, this._viewNormalMatrix); math.transposeMat4(this._viewNormalMatrix); this._viewMatrixDirty = false; @@ -1454,7 +1466,7 @@ class VBOSceneModel extends Component { } /** - * Called by private renderers in ./lib, returns the view normal matrix with which to render this VBOSceneModel. + * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel. * * @private */ @@ -1463,7 +1475,7 @@ class VBOSceneModel extends Component { return this.scene.camera.viewNormalMatrix; } if (this._viewMatrixDirty) { - math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, this._viewMatrix); + math.mulMat4(this.scene.camera.viewMatrix, this._sceneModelMatrix, this._viewMatrix); math.inverseMat4(this._viewMatrix, this._viewNormalMatrix); math.transposeMat4(this._viewNormalMatrix); this._viewMatrixDirty = false; @@ -1472,7 +1484,7 @@ class VBOSceneModel extends Component { } /** - * Sets if backfaces are rendered for this VBOSceneModel. + * Sets if backfaces are rendered for this SceneModel. * * Default is ````false````. * @@ -1483,11 +1495,11 @@ class VBOSceneModel extends Component { } /** - * Sets if backfaces are rendered for this VBOSceneModel. + * Sets if backfaces are rendered for this SceneModel. * * Default is ````false````. * - * When we set this ````true````, then backfaces are always rendered for this VBOSceneModel. + * When we set this ````true````, then backfaces are always rendered for this SceneModel. * * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case, * the Viewer will: @@ -1505,16 +1517,16 @@ class VBOSceneModel extends Component { } /** - * Gets the list of {@link Entity}s within this VBOSceneModel. + * Gets the list of {@link Entity}s within this SceneModel. * * @returns {Entity[]} */ get entityList() { - return this._nodeList; + return this._entityList; } /** - * Returns true to indicate that VBOSceneModel is an {@link Entity}. + * Returns true to indicate that SceneModel is an {@link Entity}. * @type {Boolean} */ get isEntity() { @@ -1522,9 +1534,9 @@ class VBOSceneModel extends Component { } /** - * Returns ````true```` if this VBOSceneModel represents a model. + * Returns ````true```` if this SceneModel represents a model. * - * When ````true```` the VBOSceneModel will be registered by {@link VBOSceneModel#id} in + * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}. * * @type {Boolean} @@ -1534,11 +1546,11 @@ class VBOSceneModel extends Component { } //------------------------------------------------------------------------------------------------------------------ - // VBOSceneModel members + // SceneModel members //------------------------------------------------------------------------------------------------------------------ /** - * Returns ````false```` to indicate that VBOSceneModel never represents an object. + * Returns ````false```` to indicate that SceneModel never represents an object. * * @type {Boolean} */ @@ -1547,7 +1559,7 @@ class VBOSceneModel extends Component { } /** - * Gets the VBOSceneModel's World-space 3D axis-aligned bounding box. + * Gets the SceneModel's World-space 3D axis-aligned bounding box. * * Represented by a six-element Float64Array containing the min/max extents of the * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````. @@ -1562,7 +1574,7 @@ class VBOSceneModel extends Component { } /** - * The approximate number of triangle primitives in this VBOSceneModel. + * The approximate number of triangle primitives in this SceneModel. * * @type {Number} */ @@ -1575,7 +1587,7 @@ class VBOSceneModel extends Component { //------------------------------------------------------------------------------------------------------------------ /** - * The approximate number of line primitives in this VBOSceneModel. + * The approximate number of line primitives in this SceneModel. * * @type {Number} */ @@ -1584,7 +1596,7 @@ class VBOSceneModel extends Component { } /** - * The approximate number of point primitives in this VBOSceneModel. + * The approximate number of point primitives in this SceneModel. * * @type {Number} */ @@ -1593,9 +1605,9 @@ class VBOSceneModel extends Component { } /** - * Gets if any {@link Entity}s in this VBOSceneModel are visible. + * Gets if any {@link Entity}s in this SceneModel are visible. * - * The VBOSceneModel is only rendered when {@link VBOSceneModel#visible} is ````true```` and {@link VBOSceneModel#culled} is ````false````. + * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````. * * @type {Boolean} */ @@ -1604,23 +1616,23 @@ class VBOSceneModel extends Component { } /** - * Sets if this VBOSceneModel is visible. + * Sets if this SceneModel is visible. * - * The VBOSceneModel is only rendered when {@link VBOSceneModel#visible} is ````true```` and {@link VBOSceneModel#culled} is ````false````. + * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````. ** * @type {Boolean} */ set visible(visible) { visible = visible !== false; this._visible = visible; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].visible = visible; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].visible = visible; } this.glRedraw(); } /** - * Gets if any {@link Entity}s in this VBOSceneModel are xrayed. + * Gets if any {@link Entity}s in this SceneModel are xrayed. * * @type {Boolean} */ @@ -1629,21 +1641,21 @@ class VBOSceneModel extends Component { } /** - * Sets if all {@link Entity}s in this VBOSceneModel are xrayed. + * Sets if all {@link Entity}s in this SceneModel are xrayed. * * @type {Boolean} */ set xrayed(xrayed) { xrayed = !!xrayed; this._xrayed = xrayed; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].xrayed = xrayed; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].xrayed = xrayed; } this.glRedraw(); } /** - * Gets if any {@link Entity}s in this VBOSceneModel are highlighted. + * Gets if any {@link Entity}s in this SceneModel are highlighted. * * @type {Boolean} */ @@ -1652,21 +1664,21 @@ class VBOSceneModel extends Component { } /** - * Sets if all {@link Entity}s in this VBOSceneModel are highlighted. + * Sets if all {@link Entity}s in this SceneModel are highlighted. * * @type {Boolean} */ set highlighted(highlighted) { highlighted = !!highlighted; this._highlighted = highlighted; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].highlighted = highlighted; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].highlighted = highlighted; } this.glRedraw(); } /** - * Gets if any {@link Entity}s in this VBOSceneModel are selected. + * Gets if any {@link Entity}s in this SceneModel are selected. * * @type {Boolean} */ @@ -1675,21 +1687,21 @@ class VBOSceneModel extends Component { } /** - * Sets if all {@link Entity}s in this VBOSceneModel are selected. + * Sets if all {@link Entity}s in this SceneModel are selected. * * @type {Boolean} */ set selected(selected) { selected = !!selected; this._selected = selected; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].selected = selected; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].selected = selected; } this.glRedraw(); } /** - * Gets if any {@link Entity}s in this VBOSceneModel have edges emphasised. + * Gets if any {@link Entity}s in this SceneModel have edges emphasised. * * @type {Boolean} */ @@ -1698,23 +1710,23 @@ class VBOSceneModel extends Component { } /** - * Sets if all {@link Entity}s in this VBOSceneModel have edges emphasised. + * Sets if all {@link Entity}s in this SceneModel have edges emphasised. * * @type {Boolean} */ set edges(edges) { edges = !!edges; this._edges = edges; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].edges = edges; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].edges = edges; } this.glRedraw(); } /** - * Gets if this VBOSceneModel is culled from view. + * Gets if this SceneModel is culled from view. * - * The VBOSceneModel is only rendered when {@link VBOSceneModel#visible} is true and {@link VBOSceneModel#culled} is false. + * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false. * * @type {Boolean} */ @@ -1723,23 +1735,23 @@ class VBOSceneModel extends Component { } /** - * Sets if this VBOSceneModel is culled from view. + * Sets if this SceneModel is culled from view. * - * The VBOSceneModel is only rendered when {@link VBOSceneModel#visible} is true and {@link VBOSceneModel#culled} is false. + * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false. * * @type {Boolean} */ set culled(culled) { culled = !!culled; this._culled = culled; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].culled = culled; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].culled = culled; } this.glRedraw(); } /** - * Gets if {@link Entity}s in this VBOSceneModel are clippable. + * Gets if {@link Entity}s in this SceneModel are clippable. * * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. * @@ -1750,7 +1762,7 @@ class VBOSceneModel extends Component { } /** - * Sets if {@link Entity}s in this VBOSceneModel are clippable. + * Sets if {@link Entity}s in this SceneModel are clippable. * * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. * @@ -1759,14 +1771,14 @@ class VBOSceneModel extends Component { set clippable(clippable) { clippable = clippable !== false; this._clippable = clippable; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].clippable = clippable; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].clippable = clippable; } this.glRedraw(); } /** - * Gets if this VBOSceneModel is collidable. + * Gets if this SceneModel is collidable. * * @type {Boolean} */ @@ -1775,20 +1787,20 @@ class VBOSceneModel extends Component { } /** - * Sets if {@link Entity}s in this VBOSceneModel are collidable. + * Sets if {@link Entity}s in this SceneModel are collidable. * * @type {Boolean} */ set collidable(collidable) { collidable = collidable !== false; this._collidable = collidable; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].collidable = collidable; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].collidable = collidable; } } /** - * Gets if this VBOSceneModel is pickable. + * Gets if this SceneModel is pickable. * * Picking is done via calls to {@link Scene#pick}. * @@ -1799,7 +1811,7 @@ class VBOSceneModel extends Component { } /** - * Sets if {@link Entity}s in this VBOSceneModel are pickable. + * Sets if {@link Entity}s in this SceneModel are pickable. * * Picking is done via calls to {@link Scene#pick}. * @@ -1808,13 +1820,13 @@ class VBOSceneModel extends Component { set pickable(pickable) { pickable = pickable !== false; this._pickable = pickable; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].pickable = pickable; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].pickable = pickable; } } /** - * Gets the RGB colorize color for this VBOSceneModel. + * Gets the RGB colorize color for this SceneModel. * * Each element of the color is in range ````[0..1]````. * @@ -1825,7 +1837,7 @@ class VBOSceneModel extends Component { } /** - * Sets the RGB colorize color for this VBOSceneModel. + * Sets the RGB colorize color for this SceneModel. * * Multiplies by rendered fragment colors. * @@ -1835,13 +1847,13 @@ class VBOSceneModel extends Component { */ set colorize(colorize) { this._colorize = colorize; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].colorize = colorize; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].colorize = colorize; } } /** - * Gets this VBOSceneModel's opacity factor. + * Gets this SceneModel's opacity factor. * * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. * @@ -1852,7 +1864,7 @@ class VBOSceneModel extends Component { } /** - * Sets the opacity factor for this VBOSceneModel. + * Sets the opacity factor for this SceneModel. * * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. * @@ -1860,13 +1872,13 @@ class VBOSceneModel extends Component { */ set opacity(opacity) { this._opacity = opacity; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].opacity = opacity; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i].opacity = opacity; } } /** - * Gets if this VBOSceneModel casts a shadow. + * Gets if this SceneModel casts a shadow. * * @type {Boolean} */ @@ -1875,7 +1887,7 @@ class VBOSceneModel extends Component { } /** - * Sets if this VBOSceneModel casts a shadow. + * Sets if this SceneModel casts a shadow. * * @type {Boolean} */ @@ -1888,7 +1900,7 @@ class VBOSceneModel extends Component { } /** - * Sets if this VBOSceneModel can have shadow cast upon it. + * Sets if this SceneModel can have shadow cast upon it. * * @type {Boolean} */ @@ -1897,7 +1909,7 @@ class VBOSceneModel extends Component { } /** - * Sets if this VBOSceneModel can have shadow cast upon it. + * Sets if this SceneModel can have shadow cast upon it. * * @type {Boolean} */ @@ -1910,7 +1922,7 @@ class VBOSceneModel extends Component { } /** - * Gets if Scalable Ambient Obscurance (SAO) will apply to this VBOSceneModel. + * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. * * SAO is configured by the Scene's {@link SAO} component. * @@ -1923,7 +1935,7 @@ class VBOSceneModel extends Component { } /** - * Gets if physically-based rendering (PBR) is enabled for this VBOSceneModel. + * Gets if physically-based rendering (PBR) is enabled for this SceneModel. * * Only works when {@link Scene#pbrEnabled} is also true. * @@ -1934,7 +1946,7 @@ class VBOSceneModel extends Component { } /** - * Gets if color textures are enabled for this VBOSceneModel. + * Gets if color textures are enabled for this SceneModel. * * Only works when {@link Scene#colorTextureEnabled} is also true. * @@ -1945,7 +1957,7 @@ class VBOSceneModel extends Component { } /** - * Returns true to indicate that VBOSceneModel is implements {@link Drawable}. + * Returns true to indicate that SceneModel is implements {@link Drawable}. * * @type {Boolean} */ @@ -1959,7 +1971,7 @@ class VBOSceneModel extends Component { } /** - * Configures the appearance of xrayed {@link Entity}s within this VBOSceneModel. + * Configures the appearance of xrayed {@link Entity}s within this SceneModel. * * This is the {@link Scene#xrayMaterial}. * @@ -1970,7 +1982,7 @@ class VBOSceneModel extends Component { } /** - * Configures the appearance of highlighted {@link Entity}s within this VBOSceneModel. + * Configures the appearance of highlighted {@link Entity}s within this SceneModel. * * This is the {@link Scene#highlightMaterial}. * @@ -1981,7 +1993,7 @@ class VBOSceneModel extends Component { } /** - * Configures the appearance of selected {@link Entity}s within this VBOSceneModel. + * Configures the appearance of selected {@link Entity}s within this SceneModel. * * This is the {@link Scene#selectedMaterial}. * @@ -1992,7 +2004,7 @@ class VBOSceneModel extends Component { } /** - * Configures the appearance of edges of {@link Entity}s within this VBOSceneModel. + * Configures the appearance of edges of {@link Entity}s within this SceneModel. * * This is the {@link Scene#edgeMaterial}. * @@ -2008,7 +2020,7 @@ class VBOSceneModel extends Component { /** * Called by private renderers in ./lib, returns the picking view matrix with which to - * ray-pick on this VBOSceneModel. + * ray-pick on this SceneModel. * * @private */ @@ -2020,12 +2032,37 @@ class VBOSceneModel extends Component { } /** - * Creates a reusable geometry within this VBOSceneModel. * - * We can then supply the geometry ID to {@link VBOSceneModel#createMesh} when we want to create meshes that instance the geometry. + * @param cfg + */ + createQuantizationRange(cfg) { + if (cfg.id === undefined || cfg.id === null) { + this.error("[createQuantizationRange] Config missing: id"); + return; + } + if (cfg.aabb) { + this.error("[createQuantizationRange] Config missing: aabb"); + return; + } + if (this._quantizationRanges[cfg.id]) { + this.error("[createQuantizationRange] QuantizationRange already created: " + cfg.id); + return; + } + this._quantizationRanges[cfg.id] = { + id: cfg.id, + aabb: cfg.aabb, + matrix: createPositionsDecodeMatrix(cfg.aabb, math.mat4()) + } + } + + /** + * Creates a reusable geometry within this SceneModel. + * + * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that + * instance the geometry. * * @param {*} cfg Geometry properties. - * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link VBOSceneModel#createMesh}. + * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}. * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'. * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````. * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````. @@ -2038,63 +2075,103 @@ class VBOSceneModel extends Component { * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with "triangles", "solid" and "surface" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with "triangles", "solid" and "surface" primitives. Required for textured rendering. * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````. * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives. - * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````VBOSceneModel```` constructor. + * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor. */ createGeometry(cfg) { - const geometryId = cfg.id; - if (geometryId === undefined || geometryId === null) { - this.error("Config missing: id"); + if (cfg.id === undefined || cfg.id === null) { + this.error("[createGeometry] Config missing: id"); return; } - if (this._geometries[geometryId]) { - this.error("Geometry already created: " + geometryId); + if (this._geometries[cfg.id]) { + this.error("[createGeometry] Geometry already created: " + cfg.id); return; } - cfg.primitive = cfg.primitive || "triangles"; + if (cfg.primitive === undefined || cfg.primitive === null) { + cfg.primitive = "triangles"; + } if (cfg.primitive !== "points" && cfg.primitive !== "lines" && cfg.primitive !== "triangles" && cfg.primitive !== "solid" && cfg.primitive !== "surface") { - this.error(`Unsupported value for 'primitive': '${primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`); + this.error(`[createGeometry] Unsupported value for 'primitive': '${primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`); return; } - if (!cfg.positions && !cfg.positionsCompressed) { - this.error("Param expected: `positions` or `positionsCompressed'"); + if (!cfg.positions && !cfg.positionsCompressed && !cfg.buckets) { + this.error("[createGeometry] Param expected: `positions`, `positionsCompressed' or 'buckets"); return null; } - if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix) { - this.error("Param expected: `positionsDecodeMatrix` (required for `positionsCompressed')"); + if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix && !cfg.positionsDecodeBoundary) { + this.error("[createGeometry] Param expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')"); + return null; + } + if (cfg.positionsDecodeMatrix && cfg.positionsDecodeBoundary) { + this.error("[createGeometry] Only one of these params expected: `positionsDecodeMatrix` or 'positionsDecodeBoundary' (required for `positionsCompressed')"); return null; } if (cfg.uvCompressed && !cfg.uvDecodeMatrix) { - this.error("Param expected: `uvDecodeMatrix` (required for `uvCompressed')"); + this.error("[createGeometry] Param expected: `uvDecodeMatrix` (required for `uvCompressed')"); return null; } - if (!cfg.indices && cfg.primitive !== "points") { - this.error(`Param expected: indices (required for '${cfg.primitive}' primitive type)`); + if (!cfg.buckets && !cfg.indices && cfg.primitive !== "points") { + this.error(`[createGeometry] Param expected: indices (required for '${cfg.primitive}' primitive type)`); return null; } - const geometry = new VBOSceneModelGeometry(geometryId, this, cfg); - - // Temporarily store the positions so the TrianglesInstancingLayer - // can properly initilize the AABB's in case the instancing matrices - // are not TRS-separable and have some shear factor - geometry._positions = cfg.positions; - geometry._positionsCompressed = cfg.positionsCompressed; - geometry._positionsDecodeMatrix = cfg.positionsDecodeMatrix; - - this._geometries[geometryId] = geometry; + if (cfg.positionsDecodeBoundary) { + cfg.positionsDecodeMatrix = createPositionsDecodeMatrix(cfg.positionsDecodeBoundary, math.mat4()); + } + if (cfg.positions) { + const aabb = math.collapseAABB3(); + cfg.positionsDecodeMatrix = math.mat4(); + math.expandAABB3Points3(aabb, cfg.positions); + cfg.positionsCompressed = quantizePositions(cfg.positions, aabb, cfg.positionsDecodeMatrix); + } else { + cfg.positionsDecodeMatrix = new Float64Array(cfg.positionsDecodeMatrix); + cfg.positionsCompressed = new Uint16Array(cfg.positionsCompressed); + } + if (cfg.colorsCompressed && cfg.colorsCompressed.length > 0) { + cfg.colorsCompressed = new Uint8Array(cfg.colorsCompressed); + } else if (cfg.colors && cfg.colors.length > 0) { + const colors = cfg.colors; + const colorsCompressed = new Uint8Array(colors.length); + for (let i = 0, len = colors.length; i < len; i++) { + colorsCompressed[i] = colors[i] * 255; + } + cfg.colorsCompressed = colorsCompressed; + } + if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === "triangles" || cfg.primitive === "solid" || cfg.primitive === "surface")) { + if (cfg.positions) { + cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 5.0); + } else { + cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0); + } + } + if (cfg.buckets) { + this._dtxBuckets[cfg.id] = cfg.buckets; + } + if (cfg.uv) { + const bounds = geometryCompressionUtils.getUVBounds(cfg.uv); + const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max); + cfg.uvCompressed = result.quantized; + cfg.uvDecodeMatrix = result.decodeMatrix; + } else if (cfg.uvCompressed) { + cfg.uvCompressed = new Uint16Array(cfg.uvCompressed); + cfg.uvDecodeMatrix = new Float64Array(cfg.uvDecodeMatrix); + } + if (cfg.normals) { // HACK + cfg.normals = null; + } + this._geometries [cfg.id] = cfg; this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0); this.numGeometries++; } /** - * Creates a texture within this VBOSceneModel. + * Creates a texture within this SceneModel. * - * We can then supply the texture ID to {@link VBOSceneModel#createTextureSet} when we want to create texture sets that use the texture. + * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture. * * @param {*} cfg Texture properties. - * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link VBOSceneModel#createTextureSet}. + * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link SceneModel#createTextureSet}. * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file - * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````VBOSceneModel```` is configured with a {@link TextureTranscoder}. - * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````VBOSceneModel```` is + * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````SceneModel```` is configured with a {@link TextureTranscoder}. + * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````SceneModel```` is * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps. * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded. * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel. @@ -2109,15 +2186,15 @@ class VBOSceneModel extends Component { createTexture(cfg) { const textureId = cfg.id; if (textureId === undefined || textureId === null) { - this.error("Config missing: id"); + this.error("[createTexture] Config missing: id"); return; } if (this._textures[textureId]) { - this.error("Texture already created: " + textureId); + this.error("[createTexture] Texture already created: " + textureId); return; } if (!cfg.src && !cfg.image && !cfg.buffers) { - this.error("Param expected: `src`, `image' or 'buffers'"); + this.error("[createTexture] Param expected: `src`, `image' or 'buffers'"); return null; } let minFilter = cfg.minFilter || LinearMipmapLinearFilter; @@ -2163,7 +2240,7 @@ class VBOSceneModel extends Component { wrapS, wrapT, wrapR, - // flipY: cfg.flipY, + // flipY: cfg.flipY, encoding }); if (cfg.preloadColor) { @@ -2173,7 +2250,6 @@ class VBOSceneModel extends Component { const image = cfg.image; image.crossOrigin = "Anonymous"; texture.setImage(image, {minFilter, magFilter, wrapS, wrapT, wrapR, flipY: cfg.flipY, encoding}); - } else if (cfg.src) { const ext = cfg.src.split('.').pop(); switch (ext) { // Don't transcode recognized image file types @@ -2198,11 +2274,11 @@ class VBOSceneModel extends Component { break; default: // Assume other file types need transcoding if (!this._textureTranscoder) { - this.error(`Can't create texture from 'src' - VBOSceneModel needs to be configured with a TextureTranscoder for this file type ('${ext}')`); + this.error(`[createTexture] Can't create texture from 'src' - SceneModel needs to be configured with a TextureTranscoder for this file type ('${ext}')`); } else { utils.loadArraybuffer(cfg.src, (arrayBuffer) => { if (!arrayBuffer.byteLength) { - this.error(`Can't create texture from 'src': file data is zero length`); + this.error(`[createTexture] Can't create texture from 'src': file data is zero length`); return; } this._textureTranscoder.transcode([arrayBuffer], texture).then(() => { @@ -2210,36 +2286,35 @@ class VBOSceneModel extends Component { }); }, function (errMsg) { - this.error(`Can't create texture from 'src': ${errMsg}`); + this.error(`[createTexture] Can't create texture from 'src': ${errMsg}`); }); } break; } } else if (cfg.buffers) { // Buffers implicitly require transcoding if (!this._textureTranscoder) { - this.error(`Can't create texture from 'buffers' - VBOSceneModel needs to be configured with a TextureTranscoder for this option`); + this.error(`[createTexture] Can't create texture from 'buffers' - SceneModel needs to be configured with a TextureTranscoder for this option`); } else { this._textureTranscoder.transcode(cfg.buffers, texture).then(() => { this.glRedraw(); }); } } - - this._textures[textureId] = new VBOSceneModelTexture({id: textureId, texture}); + this._textures[textureId] = new SceneModelTexture({id: textureId, texture}); } /** - * Creates a texture set within this VBOSceneModel. + * Creates a texture set within this SceneModel. * * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set - * ID to {@link VBOSceneModel#createMesh} when we want to create meshes that use the texture set. + * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set. * * The textures can work as a texture atlas, where each mesh can have geometry UVs that index * a different part of the textures. This allows us to minimize the number of textures in our models, which * means faster rendering. * * @param {*} cfg Texture set properties. - * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link VBOSceneModel#createMesh}. + * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}. * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*. * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*. * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*. @@ -2249,64 +2324,64 @@ class VBOSceneModel extends Component { createTextureSet(cfg) { const textureSetId = cfg.id; if (textureSetId === undefined || textureSetId === null) { - this.error("Config missing: id"); + this.error("[createTextureSet] Config missing: id"); return; } if (this._textureSets[textureSetId]) { - this.error(`Texture set already created: ${textureSetId}`); + this.error(`[createTextureSet] Texture set already created: ${textureSetId}`); return; } let colorTexture; if (cfg.colorTextureId !== undefined && cfg.colorTextureId !== null) { colorTexture = this._textures[cfg.colorTextureId]; if (!colorTexture) { - this.error(`Texture not found: ${cfg.colorTextureId} - ensure that you create it first with createTexture()`); + this.error(`[createTextureSet] Texture not found: ${cfg.colorTextureId} - ensure that you create it first with createTexture()`); return; } } else { - colorTexture = this._textures[defaultColorTextureId]; + colorTexture = this._textures[DEFAULT_COLOR_TEXTURE_ID]; } let metallicRoughnessTexture; if (cfg.metallicRoughnessTextureId !== undefined && cfg.metallicRoughnessTextureId !== null) { metallicRoughnessTexture = this._textures[cfg.metallicRoughnessTextureId]; if (!metallicRoughnessTexture) { - this.error(`Texture not found: ${cfg.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`); + this.error(`[createTextureSet] Texture not found: ${cfg.metallicRoughnessTextureId} - ensure that you create it first with createTexture()`); return; } } else { - metallicRoughnessTexture = this._textures[defaultMetalRoughTextureId]; + metallicRoughnessTexture = this._textures[DEFAULT_METAL_ROUGH_TEXTURE_ID]; } let normalsTexture; if (cfg.normalsTextureId !== undefined && cfg.normalsTextureId !== null) { normalsTexture = this._textures[cfg.normalsTextureId]; if (!normalsTexture) { - this.error(`Texture not found: ${cfg.normalsTextureId} - ensure that you create it first with createTexture()`); + this.error(`[createTextureSet] Texture not found: ${cfg.normalsTextureId} - ensure that you create it first with createTexture()`); return; } } else { - normalsTexture = this._textures[defaultNormalsTextureId]; + normalsTexture = this._textures[DEFAULT_NORMALS_TEXTURE_ID]; } let emissiveTexture; if (cfg.emissiveTextureId !== undefined && cfg.emissiveTextureId !== null) { emissiveTexture = this._textures[cfg.emissiveTextureId]; if (!emissiveTexture) { - this.error(`Texture not found: ${cfg.emissiveTextureId} - ensure that you create it first with createTexture()`); + this.error(`[createTextureSet] Texture not found: ${cfg.emissiveTextureId} - ensure that you create it first with createTexture()`); return; } } else { - emissiveTexture = this._textures[defaultEmissiveTextureId]; + emissiveTexture = this._textures[DEFAULT_EMISSIVE_TEXTURE_ID]; } let occlusionTexture; if (cfg.occlusionTextureId !== undefined && cfg.occlusionTextureId !== null) { occlusionTexture = this._textures[cfg.occlusionTextureId]; if (!occlusionTexture) { - this.error(`Texture not found: ${cfg.occlusionTextureId} - ensure that you create it first with createTexture()`); + this.error(`[createTextureSet] Texture not found: ${cfg.occlusionTextureId} - ensure that you create it first with createTexture()`); return; } } else { - occlusionTexture = this._textures[defaultOcclusionTextureId]; + occlusionTexture = this._textures[DEFAULT_OCCLUSION_TEXTURE_ID]; } - const textureSet = new VBOSceneModelTextureSet({ + const textureSet = new SceneModelTextureSet({ id: textureSetId, model: this, colorTexture, @@ -2319,13 +2394,13 @@ class VBOSceneModel extends Component { } /** - * Creates a mesh within this VBOSceneModel. + * Creates a mesh within this SceneModel. * * A mesh can either define its own geometry or share it with other meshes. To define own geometry, provide the * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier - * with {@link VBOSceneModel#createGeometry}. + * with {@link SceneModel#createGeometry}. * - * Internally, VBOSceneModel will batch all unique mesh geometries into the same arrays, which improves + * Internally, SceneModel will batch all unique mesh geometries into the same arrays, which improves * rendering performance. * * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume @@ -2334,8 +2409,8 @@ class VBOSceneModel extends Component { * * @param {object} cfg Object properties. * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}. - * @param {String|Number} [cfg.textureSetId] ID of a texture set previously created with {@link VBOSceneModel#createTextureSet"}. - * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link VBOSceneModel#createGeometry"}. Overrides all other geometry parameters given to this method. + * @param {String|Number} [cfg.textureSetId] ID of a texture set previously created with {@link SceneModel#createTextureSet"}. + * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry"}. Overrides all other geometry parameters given to this method. * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'. * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````. * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````. @@ -2348,8 +2423,8 @@ class VBOSceneModel extends Component { * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with "triangles", "solid" and "surface" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with "triangles", "solid" and "surface" primitives. Required for textured rendering. * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````. * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives. - * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````VBOSceneModel```` constructor. - * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link VBOSceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this. + * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor. + * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this. * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. @@ -2361,462 +2436,569 @@ class VBOSceneModel extends Component { */ createMesh(cfg) { - let id = cfg.id; - if (id === undefined || id === null) { - this.error("Config missing: id"); - return; - } - - if (this._meshes[id]) { - this.error(`VBOSceneModel already has a mesh with this ID: ${id}`); + if (cfg.id === undefined || cfg.id === null) { + this.error("[createMesh] SceneModel.createMesh() config missing: id"); return; } - const geometryId = cfg.geometryId; - const sharingGeometry = (cfg.geometryId !== undefined); - if (sharingGeometry && !this._geometries[cfg.geometryId]) { - this.error(`Geometry not found: ${cfg.geometryId} - ensure that you create it first with createGeometry()`); + if (this._scheduledMeshes[cfg.id]) { + this.error(`[createMesh] SceneModel already has a mesh with this ID: ${cfg.id}`); return; } - const textureSetId = cfg.textureSetId || defaultTextureSetId; - if (textureSetId) { - if (!this._textureSets[textureSetId]) { - this.error(`Texture set not found: ${textureSetId} - ensure that you create it first with createTextureSet()`); - return; - } - } - - let portionId; - - const color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : [255, 255, 255]; - const opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255; - const metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0; - const roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255; - - const mesh = new VBOSceneModelMesh(this, id, color, opacity); - - const pickId = mesh.pickId; - - const a = pickId >> 24 & 0xFF; - const b = pickId >> 16 & 0xFF; - const g = pickId >> 8 & 0xFF; - const r = pickId & 0xFF; - - const pickColor = new Uint8Array([r, g, b, a]); // Quantized pick color - - const aabb = math.collapseAABB3(); - - let layer; - - if (sharingGeometry) { - - let meshMatrix; - let worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null; - - if (cfg.matrix) { - meshMatrix = cfg.matrix; - } else { - const scale = cfg.scale || defaultScale; - const position = cfg.position || defaultPosition; - const rotation = cfg.rotation || defaultRotation; - math.eulerToQuaternion(rotation, "XYZ", defaultQuaternion); - meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4); - } - - const cfgOrigin = cfg.origin || cfg.rtcCenter; - const origin = (cfgOrigin) ? math.addVec3(this._origin, cfgOrigin, tempVec3a) : this._origin; - - const instancingLayer = this._getInstancingLayer(origin, textureSetId, geometryId); + const instancing = (cfg.geometryId !== undefined); + const batching = !instancing; - layer = instancingLayer; + cfg.sceneModelMatrix = this._sceneModelMatrixNonIdentity ? this._sceneModelMatrix : null; - portionId = instancingLayer.createPortion({ - color: color, - metallic: metallic, - roughness: roughness, - opacity: opacity, - meshMatrix: meshMatrix, - worldMatrix: worldMatrix, - aabb: aabb, - pickColor: pickColor - }); - - math.expandAABB3(this._aabb, aabb); - - const numTriangles = Math.round(instancingLayer.numIndices / 3); - this._numTriangles += numTriangles; - mesh.numTriangles = numTriangles; + if (batching) { - mesh.origin = origin; + // Batched geometry - } else { // Batching + const useDTX = !!this._dtxEnabled; // Data textures - disabled by default for now - let primitive = cfg.primitive; - if (primitive === undefined || primitive === null) { - primitive = "triangles"; + if (cfg.primitive === undefined || cfg.primitive === null) { + cfg.primitive = "triangles"; } - if (primitive !== "points" && primitive !== "lines" && primitive !== "triangles" && primitive !== "solid" && primitive !== "surface") { + if (cfg.primitive !== "points" && cfg.primitive !== "lines" && cfg.primitive !== "triangles" && cfg.primitive !== "solid" && cfg.primitive !== "surface") { this.error(`Unsupported value for 'primitive': '${primitive}' ('geometryId' is absent) - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'.`); return; } - if (!cfg.positions && !cfg.positionsCompressed) { - this.error("Param expected: 'positions' or 'positionsCompressed' ('geometryId' is absent)"); + if (!cfg.positions && !cfg.positionsCompressed && !cfg.buckets) { + this.error("Param expected: 'positions', 'positionsCompressed' or `buckets` ('geometryId' is absent)"); return null; } - if (cfg.positions && cfg.positionsCompressed) { - this.error("Only one param expected, not both: 'positions' or 'positionsCompressed' ('geometryId' is absent)"); + if (cfg.positions && (cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary)) { + this.error("Illegal params: 'positions' not expected with 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"); return null; } - if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix) { - this.error("Param expected: 'positionsDecodeMatrix' (required for 'positionsCompressed'; 'geometryId' is absent)"); + if (cfg.positionsCompressed && !cfg.positionsDecodeMatrix && !cfg.positionsDecodeBoundary) { + this.error("Param expected: 'positionsCompressed' should be accompanied by 'positionsDecodeMatrix'/'positionsDecodeBoundary' ('geometryId' is absent)"); return null; } if (cfg.uvCompressed && !cfg.uvDecodeMatrix) { - this.error("Param expected: `uvDecodeMatrix` (required for `uvCompressed'; 'geometryId' is absent)"); + this.error("Param expected: 'uvCompressed' should be accompanied by `uvDecodeMatrix` ('geometryId' is absent)"); return null; } - if (!cfg.indices && primitive !== "points") { - this.error(`Param expected: indices (required for '${primitive}' primitive type)`); + if (!cfg.buckets && !cfg.indices && cfg.primitive !== "points") { + this.error(`Param expected: indices (required for '${cfg.primitive}' primitive type)`); return null; } - if (!cfg.indices && primitive !== "points") { - this.error("Config expected: indices (no meshIds provided, so expecting geometry arrays instead)"); + if ((cfg.matrix || cfg.position || cfg.rotation || cfg.scale) && (cfg.positionsCompressed || cfg.positionsDecodeBoundary)) { + this.error("Unexpected params: 'matrix', 'rotation', 'scale', 'position' not allowed with 'positionsCompressed'"); return null; } - let indices = cfg.indices; - let edgeIndices = cfg.edgeIndices; - let origin = (cfg.origin || cfg.rtcCenter) ? math.addVec3(this._origin, cfg.origin || cfg.rtcCenter, tempVec3a) : this._origin; - let positions = cfg.positions; - - if (positions) { - const rtcCenter = math.vec3(); - const rtcPositions = []; - const rtcNeeded = worldToRTCPositions(positions, rtcPositions, rtcCenter); - if (rtcNeeded) { - positions = rtcPositions; - origin = math.addVec3(origin, rtcCenter, rtcCenter); - } - } + cfg.origin = cfg.origin ? math.addVec3(this._origin, cfg.origin, math.vec3()) : this._origin; - let needNewBatchingLayers = false; + // Matrix - if (!this._lastOrigin) { - needNewBatchingLayers = true; - this._lastOrigin = math.vec3(origin); + if (cfg.matrix) { + cfg.meshMatrix = cfg.matrix; } else { - if (!math.compareVec3(this._lastOrigin, origin)) { - needNewBatchingLayers = true; - this._lastOrigin.set(origin); - } + const scale = cfg.scale || DEFAULT_SCALE; + const position = cfg.position || DEFAULT_POSITION; + const rotation = cfg.rotation || DEFAULT_ROTATION; + math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); + cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + } + if (cfg.positionsDecodeBoundary) { + cfg.positionsDecodeMatrix = createPositionsDecodeMatrix(cfg.positionsDecodeBoundary, math.mat4()); } - if (cfg.positionsDecodeMatrix) { - if (!this._lastPositionsDecodeMatrix) { - needNewBatchingLayers = true; - this._lastPositionsDecodeMatrix = math.mat4(cfg.positionsDecodeMatrix); + if (useDTX) { - } else { - if (!math.compareMat4(this._lastPositionsDecodeMatrix, cfg.positionsDecodeMatrix)) { - needNewBatchingLayers = true; - this._lastPositionsDecodeMatrix.set(cfg.positionsDecodeMatrix) + // DTX + + cfg.type = DTX; + + // NPR + + cfg.color = (cfg.color) ? + new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) + : defaultCompressedColor; + + cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255; + + if (cfg.positions) { + const rtcCenter = math.vec3(); + const rtcPositions = []; + const rtcNeeded = worldToRTCPositions(cfg.positions, rtcPositions, rtcCenter); + if (rtcNeeded) { + + // RTC + + cfg.positions = rtcPositions; + cfg.origin = math.addVec3(cfg.origin, rtcCenter, rtcCenter); } } - } - if (cfg.uvDecodeMatrix) { - if (!this._lastUVDecodeMatrix) { - needNewBatchingLayers = true; - this._lastUVDecodeMatrix = math.mat4(cfg.uvDecodeMatrix); - } else { - if (!math.compareMat4(this._lastUVDecodeMatrix, cfg.uvDecodeMatrix)) { - needNewBatchingLayers = true; - this._lastUVDecodeMatrix.set(cfg.uvDecodeMatrix) + if (cfg.positions) { + const aabb = math.collapseAABB3(); + cfg.positionsDecodeMatrix = math.mat4(); + math.expandAABB3Points3(aabb, cfg.positions); + cfg.positionsCompressed = quantizePositions(cfg.positions, aabb, cfg.positionsDecodeMatrix) + } + + if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === "triangles" || cfg.primitive === "solid" || cfg.primitive === "surface")) { + if (cfg.positions) { + cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 2.0); + } else { + cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0); } } - } - if (cfg.textureSetId) { - if (this._lastTextureSetId !== cfg.textureSetId) { - needNewBatchingLayers = true; - this._lastTextureSetId = cfg.textureSetId; + + if (!cfg.buckets) { + cfg.buckets = createDTXBuckets(cfg, this._enableVertexWelding && this._enableIndexBucketing); } - } - if (needNewBatchingLayers) { - for (let primitiveId in this._currentBatchingLayers) { - if (this._currentBatchingLayers.hasOwnProperty(primitiveId)) { - this._currentBatchingLayers[primitiveId].finalize(); + + } else { + + // VBO + + cfg.type = VBO_BATCHED; + + // PBR + + cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : [255, 255, 255]; + cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255; + cfg.metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0; + cfg.roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255; + + // Matrix + + if (cfg.matrix) { + cfg.meshMatrix = cfg.matrix; + } else { + const scale = cfg.scale || DEFAULT_SCALE; + const position = cfg.position || DEFAULT_POSITION; + const rotation = cfg.rotation || DEFAULT_ROTATION; + math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); + cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + } + + // Geometry + + if (cfg.positions) { + const rtcPositions = []; + const rtcNeeded = worldToRTCPositions(cfg.positions, rtcPositions, tempVec3a); + if (rtcNeeded) {// RTC + cfg.positions = rtcPositions; + cfg.origin = math.addVec3(cfg.origin, tempVec3a, math.vec3()); } } - this._currentBatchingLayers = {}; - } - const normalsProvided = (!!cfg.normals && cfg.normals.length > 0); - if (primitive === "triangles" || primitive === "solid" || primitive === "surface") { - if (this._lastNormals !== null && normalsProvided !== this._lastNormals) { - for (let primitiveId in this._currentBatchingLayers) { - if (this._currentBatchingLayers[primitiveId]) { - this._currentBatchingLayers[primitiveId].finalize(); - delete this._currentBatchingLayers[primitiveId]; - } + if (!cfg.buckets && !cfg.edgeIndices && (cfg.primitive === "triangles" || cfg.primitive === "solid" || cfg.primitive === "surface")) { + if (cfg.positions) { + cfg.edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, 2.0); + } else { + cfg.edgeIndices = buildEdgeIndices(cfg.positionsCompressed, cfg.indices, cfg.positionsDecodeMatrix, 2.0); + } + } + + // Texture + + // cfg.textureSetId = cfg.textureSetId || DEFAULT_TEXTURE_SET_ID; + if (cfg.textureSetId) { + cfg.textureSet = this._textureSets[cfg.textureSetId]; + if (!cfg.textureSet) { + this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`); + return; } } - this._lastNormals = normalsProvided; } - const worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null; - let meshMatrix; + } else { + + // Reused geometry - if (!cfg.positionsDecodeMatrix) { - if (cfg.matrix) { - meshMatrix = cfg.matrix; - } else { - const scale = cfg.scale || defaultScale; - const position = cfg.position || defaultPosition; - const rotation = cfg.rotation || defaultRotation; - math.eulerToQuaternion(rotation, "XYZ", defaultQuaternion); - meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4); + if (cfg.positions || cfg.positionsCompressed || cfg.indices || cfg.edgeIndices || cfg.normals || cfg.normalsCompressed || cfg.uv || cfg.uvCompressed || cfg.positionsDecodeMatrix) { + this.error(`Mesh geometry parameters not expected when instancing a geometry (not expected: positions, positionsCompressed, indices, edgeIndices, normals, normalsCompressed, uv, uvCompressed, positionsDecodeMatrix)`); + return; + } + + cfg.geometry = this._geometries[cfg.geometryId]; + if (!cfg.geometry) { + this.error(`[createMesh] Geometry not found: ${cfg.geometryId} - ensure that you create it first with createGeometry()`); + return; + } + + cfg.origin = cfg.origin ? math.addVec3(this._origin, cfg.origin, math.vec3()) : this._origin; + cfg.positionsDecodeMatrix = cfg.geometry.positionsDecodeMatrix; + + // Matrix + + if (cfg.matrix) { + cfg.meshMatrix = cfg.matrix.slice(); + } else { + const scale = cfg.scale || DEFAULT_SCALE; + const position = cfg.position || DEFAULT_POSITION; + const rotation = cfg.rotation || DEFAULT_ROTATION; + math.eulerToQuaternion(rotation, "XYZ", DEFAULT_QUATERNION); + cfg.meshMatrix = math.composeMat4(position, DEFAULT_QUATERNION, scale, math.mat4()); + } + + const useDTX = !!this._dtxEnabled; // Data textures - disabled by default for now + + if (useDTX) { + + // DTX + + cfg.type = DTX; + + // NPR + + cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor; + cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255; + + // Buckets + + let buckets = this._dtxBuckets[cfg.geometryId]; + if (!buckets) { + buckets = createDTXBuckets(cfg.geometry, this._enableVertexWelding, this._enableIndexBucketing); + this._dtxBuckets[cfg.geometryId] = buckets; + } + cfg.buckets = buckets; + + } else { + + // VBO + + cfg.type = VBO_INSTANCED; + + // PBR + + cfg.color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : defaultCompressedColor; + cfg.opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255; + cfg.metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0; + cfg.roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255; + + // Texture + + if (cfg.textureSetId) { + cfg.textureSet = this._textureSets[cfg.textureSetId]; + // if (!cfg.textureSet) { + // this.error(`[createMesh] Texture set not found: ${cfg.textureSetId} - ensure that you create it first with createTextureSet()`); + // return; + // } } + + // OBB + + createGeometryOBB(cfg.geometry) } + } + + cfg.numPrimitives = this._getNumPrimitives(cfg); + + if (this._vfcManager && !this._vfcManager.finalized) { + this._vfcManager.addMesh(cfg); + } else { + cfg.meshMatrix = cfg.meshMatrix.slice(); + this._createMesh(cfg); + } + } - const textureSet = textureSetId ? this._textureSets[textureSetId] : null; + _createMesh(cfg) { - const primitiveId = `${primitive}-\ -${cfg.normals && cfg.normals.length > 0 ? 1 : 0}-${cfg.normalsCompressed && cfg.normalsCompressed.length > 0 ? 1 : 0}-\ -${cfg.colors && cfg.colors.length > 0 ? 1 : 0}-${cfg.colorsCompressed && cfg.colorsCompressed.length > 0 ? 1 : 0}-\ -${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.length > 0 ? 1 : 0}`; + const mesh = new SceneModelMesh(this, cfg.id, cfg.color, cfg.opacity); - layer = this._currentBatchingLayers[primitiveId]; + mesh.pickId = this.scene._renderer.getPickID(mesh); - const lenPositions = (positions || cfg.positionsCompressed).length; + const pickId = mesh.pickId; + const a = pickId >> 24 & 0xFF; + const b = pickId >> 16 & 0xFF; + const g = pickId >> 8 & 0xFF; + const r = pickId & 0xFF; + + cfg.pickColor = new Uint8Array([r, g, b, a]); // Quantized pick color + cfg.worldAABB = math.collapseAABB3(); + cfg.aabb = cfg.worldAABB; /// Hack for VBOInstancing layer + cfg.solid = (cfg.primitive === "solid"); + mesh.origin = math.vec3(cfg.origin); + switch (cfg.type) { + case DTX: + mesh.layer = this._getDTXLayer(cfg); + break; + case VBO_BATCHED: + mesh.layer = this._getVBOBatchingLayer(cfg); + break; + case VBO_INSTANCED: + mesh.layer = this._getVBOInstancingLayer(cfg); + break; + } + mesh.portionId = mesh.layer.createPortion(cfg); + mesh.aabb = cfg.worldAABB; + mesh.numPrimitives = cfg.numPrimitives; + math.expandAABB3(this._aabb, mesh.aabb); + this._meshes[cfg.id] = mesh; + } - switch (primitive) { + _getNumPrimitives(cfg) { + let countIndices = 0; + const primitive = cfg.geometry ? cfg.geometry.primitive : cfg.primitive; + switch (primitive) { + case "triangles": + case "solid": + case "surface": + switch (cfg.type) { + case DTX: + for (let i = 0, len = cfg.buckets.length; i < len; i++) { + countIndices += cfg.buckets[i].indices.length; + } + break; + case VBO_BATCHED: + countIndices += cfg.indices.length; + break; + case VBO_INSTANCED: + countIndices += cfg.geometry.indices.length; + break; + } + return Math.round(countIndices / 3); + case "points": + switch (cfg.type) { + case DTX: + for (let i = 0, len = cfg.buckets.length; i < len; i++) { + countIndices += cfg.buckets[i].positionsCompressed.length; + } + break; + case VBO_BATCHED: + countIndices += cfg.positions ? cfg.positions.length : cfg.positionsCompressed.length; + break; + case VBO_INSTANCED: + countIndices += cfg.positions ? cfg.positions.length : cfg.positionsCompressed.length; + break; + } + return Math.round(countIndices); + case "lines": + case "line-strip": + switch (cfg.type) { + case DTX: + for (let i = 0, len = cfg.buckets.length; i < len; i++) { + countIndices += cfg.buckets[i].indices.length; + } + break; + case VBO_BATCHED: + countIndices += cfg.indices.length; + break; + case VBO_INSTANCED: + countIndices += cfg.geometry.indices.length; + break; + } + return Math.round(countIndices / 2); + } + return 0; + } + + _getDTXLayer(cfg) { + const origin = cfg.origin; + const layerId = `${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}`; + let dtxLayer = this._dtxLayers[layerId]; + if (dtxLayer) { + if (!dtxLayer.canCreatePortion(cfg)) { + dtxLayer.finalize(); + delete this._dtxLayers[layerId]; + dtxLayer = null; + } else { + return dtxLayer; + } + } + dtxLayer = new TrianglesDataTextureLayer(this, {layerIndex: 0, origin}); // layerIndex is set in #finalize() + this._dtxLayers[layerId] = dtxLayer; + this._layerList.push(dtxLayer); + return dtxLayer; + } + + _getVBOBatchingLayer(cfg) { + const model = this; + const origin = cfg.origin; + const positionsDecodeHash = cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary ? + this._createHashStringFromMatrix(cfg.positionsDecodeMatrix || cfg.positionsDecodeBoundary) + : "-"; + const textureSetId = cfg.textureSetId || "-"; + const layerId = `${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}.${cfg.primitive}.${positionsDecodeHash}.${textureSetId}`; + let vboBatchingLayer = this._vboBatchingLayers[layerId]; + if (vboBatchingLayer) { + return vboBatchingLayer; + } + let textureSet = cfg.textureSet; + while (!vboBatchingLayer) { + switch (cfg.primitive) { case "triangles": + vboBatchingLayer = new TrianglesBatchingLayer({ + model, + textureSet, + layerIndex: 0, // This is set in #finalize() + scratchMemory: this._vboBatchingLayerScratchMemory, + positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined + uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined + origin, + maxGeometryBatchSize: this._maxGeometryBatchSize, + solid: (cfg.primitive === "solid"), + autoNormals: true + }); + break; case "solid": + vboBatchingLayer = new TrianglesBatchingLayer({ + model, + textureSet, + layerIndex: 0, // This is set in #finalize() + scratchMemory: this._vboBatchingLayerScratchMemory, + positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined + uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined + origin, + maxGeometryBatchSize: this._maxGeometryBatchSize, + solid: (cfg.primitive === "solid"), + autoNormals: true + }); + break; case "surface": - if (layer) { - if (!layer.canCreatePortion(lenPositions, indices.length)) { - layer.finalize(); - delete this._currentBatchingLayers[primitiveId]; - layer = null; - } - } - if (!layer) { - layer = new TrianglesBatchingLayer({ - model: this, - textureSet: textureSet, - layerIndex: 0, // This is set in #finalize() - scratchMemory: this._scratchMemory, - positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined - uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined - origin, - maxGeometryBatchSize: this._maxGeometryBatchSize, - solid: (primitive === "solid"), - autoNormals: (!normalsProvided) - }); - this._layerList.push(layer); - this._currentBatchingLayers[primitiveId] = layer; - } - if (!edgeIndices) { - edgeIndices = buildEdgeIndices(positions || cfg.positionsCompressed, indices, null, this._edgeThreshold); - } - portionId = layer.createPortion({ - positions: positions, - positionsCompressed: cfg.positionsCompressed, - normals: cfg.normals, - normalsCompressed: cfg.normalsCompressed, - colors: cfg.colors, - colorsCompressed: cfg.colorsCompressed, - uv: cfg.uv, - uvCompressed: cfg.uvCompressed, - indices: indices, - edgeIndices: edgeIndices, - color: color, - opacity: opacity, - metallic: metallic, - roughness: roughness, - meshMatrix: meshMatrix, - worldMatrix: worldMatrix, - worldAABB: aabb, - pickColor: pickColor + vboBatchingLayer = new TrianglesBatchingLayer({ + model, + textureSet, + layerIndex: 0, // This is set in #finalize() + scratchMemory: this._vboBatchingLayerScratchMemory, + positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined + uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined + origin, + maxGeometryBatchSize: this._maxGeometryBatchSize, + solid: (cfg.primitive === "solid"), + autoNormals: true }); - const numTriangles = Math.round(indices.length / 3); - this._numTriangles += numTriangles; - mesh.numTriangles = numTriangles; break; - case "lines": - if (layer) { - if (!layer.canCreatePortion(lenPositions, indices.length)) { - layer.finalize(); - delete this._currentBatchingLayers[primitiveId]; - layer = null; - } - } - if (!layer) { - layer = new LinesBatchingLayer({ - model: this, - layerIndex: 0, // This is set in #finalize() - scratchMemory: this._scratchMemory, - positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined - origin, - maxGeometryBatchSize: this._maxGeometryBatchSize - }); - this._layerList.push(layer); - this._currentBatchingLayers[primitiveId] = layer; - } - portionId = layer.createPortion({ - positions: positions, - positionsCompressed: cfg.positionsCompressed, - indices: indices, - colors: cfg.colors, - colorsCompressed: cfg.colorsCompressed, - color: color, - opacity: opacity, - meshMatrix: meshMatrix, - worldMatrix: worldMatrix, - worldAABB: aabb, - pickColor: pickColor + vboBatchingLayer = new LinesBatchingLayer({ + model, + layerIndex: 0, // This is set in #finalize() + scratchMemory: this._vboBatchingLayerScratchMemory, + positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined + uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined + origin, + maxGeometryBatchSize: this._maxGeometryBatchSize }); - this._numLines += Math.round(indices.length / 2); break; - case "points": - if (layer) { - if (!layer.canCreatePortion(lenPositions)) { - layer.finalize(); - delete this._currentBatchingLayers[primitiveId]; - layer = null; - } - } - if (!layer) { - layer = new PointsBatchingLayer({ - model: this, - layerIndex: 0, // This is set in #finalize() - scratchMemory: this._scratchMemory, - positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined - origin, - maxGeometryBatchSize: this._maxGeometryBatchSize - }); - this._layerList.push(layer); - this._currentBatchingLayers[primitiveId] = layer; - } - portionId = layer.createPortion({ - positions: positions, - positionsCompressed: cfg.positionsCompressed, - colors: cfg.colors, - colorsCompressed: cfg.colorsCompressed, - color: color, - opacity: opacity, - meshMatrix: meshMatrix, - worldMatrix: worldMatrix, - worldAABB: aabb, - pickColor: pickColor + vboBatchingLayer = new PointsBatchingLayer({ + model, + layerIndex: 0, // This is set in #finalize() + scratchMemory: this._vboBatchingLayerScratchMemory, + positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined + uvDecodeMatrix: cfg.uvDecodeMatrix, // Can be undefined + origin, + maxGeometryBatchSize: this._maxGeometryBatchSize }); - this._numPoints += Math.round(lenPositions / 3); break; } + const lenPositions = cfg.positionsCompressed ? cfg.positionsCompressed.length : cfg.positions.length; + const canCreatePortion = (cfg.primitive === "points") + ? vboBatchingLayer.canCreatePortion(lenPositions) + : vboBatchingLayer.canCreatePortion(lenPositions, cfg.indices.length); + if (!canCreatePortion) { + vboBatchingLayer.finalize(); + delete this._vboBatchingLayers[layerId]; + vboBatchingLayer = null; - math.expandAABB3(this._aabb, aabb); - this.numGeometries++; - mesh.origin = origin; + } } + this._vboBatchingLayers[layerId] = vboBatchingLayer; + this._layerList.push(vboBatchingLayer); + return vboBatchingLayer; + } - mesh.parent = null; // Will be set within PerformanceModelNode constructor - mesh._layer = layer; - mesh._portionId = portionId; - mesh.aabb = aabb; - - if (layer.getElementsCountAndOffset) { - const { count, offset } = layer.getElementsCountAndOffset(portionId); - mesh.pickElementsCount = count; - mesh.pickElementsOffset = offset + _createHashStringFromMatrix(matrix) { + const matrixString = matrix.join(''); + let hash = 0; + for (let i = 0; i < matrixString.length; i++) { + const char = matrixString.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash |= 0; // Convert to 32-bit integer } - - this._meshes[id] = mesh; + const hashString = (hash >>> 0).toString(16); + return hashString; } - _getInstancingLayer(origin, textureSetId, geometryId) { - const layerId = `${origin[0]}.${origin[1]}.${origin[2]}.${textureSetId}.${geometryId}`; - let instancingLayer = this._instancingLayers[layerId]; - if (instancingLayer) { - return instancingLayer; - } - let textureSet; - if (textureSetId !== undefined) { - textureSet = this._textureSets[textureSetId]; - if (!textureSet) { - this.error(`TextureSet not found: ${textureSetId} - ensure that you create it first with createTextureSet()`); - return; + _getVBOInstancingLayer(cfg) { + const model = this; + const origin = cfg.origin; + const textureSetId = cfg.textureSetId || "-"; + const geometryId = cfg.geometryId; + const layerId = `${Math.round(origin[0])}.${Math.round(origin[1])}.${Math.round(origin[2])}.${textureSetId}.${geometryId}`; + let vboInstancingLayer = this._vboInstancingLayers[layerId]; + if (vboInstancingLayer) { + return vboInstancingLayer; + } + let textureSet = cfg.textureSet; + const geometry = cfg.geometry; + while (!vboInstancingLayer) { + switch (geometry.primitive) { + case "triangles": + vboInstancingLayer = new TrianglesInstancingLayer({ + model, + textureSet, + geometry, + origin, + layerIndex: 0, + solid: false + }); + break; + case "solid": + vboInstancingLayer = new TrianglesInstancingLayer({ + model, + textureSet, + geometry, + origin, + layerIndex: 0, + solid: true + }); + break; + case "surface": + vboInstancingLayer = new TrianglesInstancingLayer({ + model, + textureSet, + geometry, + origin, + layerIndex: 0, + solid: false + }); + break; + case "lines": + vboInstancingLayer = new LinesInstancingLayer({ + model, + textureSet, + geometry, + origin, + layerIndex: 0 + }); + break; + case "points": + vboInstancingLayer = new PointsInstancingLayer({ + model, + textureSet, + geometry, + origin, + layerIndex: 0 + }); + break; } + // const lenPositions = geometry.positionsCompressed.length; + // if (!vboInstancingLayer.canCreatePortion(lenPositions, geometry.indices.length)) { // FIXME: indices should be optional + // vboInstancingLayer.finalize(); + // delete this._vboInstancingLayers[layerId]; + // vboInstancingLayer = null; + // } } - const geometry = this._geometries[geometryId]; - if (!this._geometries[geometryId]) { - this.error(`Geometry not found: ${geometryId} - ensure that you create it first with createGeometry()`); - return; - } - switch (geometry.primitive) { - case "triangles": - instancingLayer = new TrianglesInstancingLayer({ - model: this, - textureSet, - geometry, - origin, - layerIndex: 0, - solid: false - }); - break; - case "solid": - instancingLayer = new TrianglesInstancingLayer({ - model: this, - textureSet, - geometry, - origin, - layerIndex: 0, - solid: true - }); - break; - case "surface": - instancingLayer = new TrianglesInstancingLayer({ - model: this, - textureSet, - geometry, - origin, - layerIndex: 0, - solid: false - }); - break; - case "lines": - instancingLayer = new LinesInstancingLayer({ - model: this, - textureSet, - geometry, - origin, - layerIndex: 0 - }); - break; - case "points": - instancingLayer = new PointsInstancingLayer({ - model: this, - textureSet, - geometry, - origin, - layerIndex: 0 - }); - break; - } - this._instancingLayers[layerId] = instancingLayer; - this._layerList.push(instancingLayer); - return instancingLayer; + this._vboInstancingLayers[layerId] = vboInstancingLayer; + this._layerList.push(vboInstancingLayer); + return vboInstancingLayer; } /** - * Creates an {@link Entity} within this VBOSceneModel, giving it one or more meshes previously created with {@link VBOSceneModel#createMesh}. + * Creates an {@link Entity} within this SceneModel, giving it one or more meshes previously created with {@link SceneModel#createMesh}. * * A mesh can only belong to one {@link Entity}, so you'll get an error if you try to reuse a mesh among multiple {@link Entity}s. * * @param {Object} cfg Entity configuration. * @param {String} cfg.id Optional ID for the new Entity. Must not clash with any existing components within the {@link Scene}. - * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link VBOSceneModel@createMesh}. + * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}. * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link Entity} represents an object, in which case it will be registered by {@link Entity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}. * @param {Boolean} [cfg.visible=true] Indicates if the Entity is initially visible. @@ -2826,42 +3008,24 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le * @param {Boolean} [cfg.collidable=true] Indicates if the Entity is initially included in boundary calculations. * @param {Boolean} [cfg.castsShadow=true] Indicates if the Entity initially casts shadows. * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Entity initially receives shadows. - * @param {Boolean} [cfg.xrayed=false] Indicates if the Entity is initially xrayed. XRayed appearance is configured by {@link VBOSceneModel#xrayMaterial}. - * @param {Boolean} [cfg.highlighted=false] Indicates if the Entity is initially highlighted. Highlighted appearance is configured by {@link VBOSceneModel#highlightMaterial}. - * @param {Boolean} [cfg.selected=false] Indicates if the Entity is initially selected. Selected appearance is configured by {@link VBOSceneModel#selectedMaterial}. - * @param {Boolean} [cfg.edges=false] Indicates if the Entity's edges are initially emphasized. Edges appearance is configured by {@link VBOSceneModel#edgeMaterial}. + * @param {Boolean} [cfg.xrayed=false] Indicates if the Entity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}. + * @param {Boolean} [cfg.highlighted=false] Indicates if the Entity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}. + * @param {Boolean} [cfg.selected=false] Indicates if the Entity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}. + * @param {Boolean} [cfg.edges=false] Indicates if the Entity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}. + * @param {Boolean} [cfg.lodCullable=true] Indicates if the Entity can be LoD culled. LoD culling isconfigured by {@link LOD}. * @returns {Entity} */ createEntity(cfg) { - // Validate or generate Entity ID - let id = cfg.id; - if (id === undefined) { - id = math.createUUID(); - } else if (this.scene.components[id]) { - this.error("Scene already has a Component with this ID: " + id + " - will assign random ID"); - id = math.createUUID(); - } - // Collect PerformanceModelNode's PerformanceModelMeshes - const meshIds = cfg.meshIds; - if (meshIds === undefined) { + if (cfg.id === undefined) { + cfg.id = math.createUUID(); + } else if (this.scene.components[cfg.id]) { + this.error(`Scene already has a Component with this ID: ${cfg.id} - will assign random ID`); + cfg.id = math.createUUID(); + } + if (cfg.meshIds === undefined) { this.error("Config missing: meshIds"); return; } - let meshes = []; - for (let i = 0, len = meshIds.length; i < len; i++) { - const meshId = meshIds[i]; - const mesh = this._meshes[meshId]; - if (!mesh) { - this.error("Mesh with this ID not found: " + meshId + " - ignoring this mesh"); - continue; - } - if (mesh.parent) { - this.error("Mesh with ID " + meshId + " already belongs to object with ID " + mesh.parent.id + " - ignoring this mesh"); - continue; - } - meshes.push(mesh); - } - // Create PerformanceModelNode flags let flags = 0; if (this._visible && cfg.visible !== false) { flags = flags | ENTITY_FLAGS.VISIBLE; @@ -2890,72 +3054,87 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le if (this._selected && cfg.selected !== false) { flags = flags | ENTITY_FLAGS.SELECTED; } - // Create PerformanceModelNode AABB - let aabb; - if (meshes.length === 1) { - aabb = meshes[0].aabb; + cfg.flags = flags; + if (this._vfcManager && !this._vfcManager.finalized) { + for (let i = 0, len = cfg.meshIds.length; i < len; i++) { + const meshId = cfg.meshIds[i]; + if (this._scheduledMeshes[meshId]) { + this.error(`[createEntity] Mesh not found: ${meshId}`); + return; + } + } + this._vfcManager.addEntity(cfg); } else { - aabb = math.collapseAABB3(); - for (let i = 0, len = meshes.length; i < len; i++) { - math.expandAABB3(aabb, meshes[i].aabb); + this._createEntity(cfg); + } + } + + _createEntity(cfg) { + let meshes = []; + const aabb = math.collapseAABB3(); + for (let i = 0, len = cfg.meshIds.length; i < len; i++) { + const meshId = cfg.meshIds[i]; + const mesh = this._meshes[meshId]; + if (!mesh) { + this.error(`Mesh with this ID not found: "${meshId}" - ignoring this mesh`); + continue; } + if (mesh.parent) { + this.error(`Mesh with ID "${meshId}" already belongs to object with ID "${mesh.parent.id}" - ignoring this mesh`); + continue; + } + math.expandAABB3(aabb, mesh.aabb); + meshes.push(mesh); } - const node = new VBOSceneModelNode(this, cfg.isObject, id, meshes, flags, aabb); // Internally sets PerformanceModelMesh#parent to this PerformanceModelNode - this._nodeList.push(node); - this._nodes[id] = node; + const lodCullable = true; + const entity = new SceneModelEntity( + this, + cfg.isObject, + cfg.id, + meshes, + cfg.flags, + aabb, + lodCullable); // Internally sets SceneModelEntity#parent to this SceneModel + this._entityList.push(entity); + this._entities[cfg.id] = entity; this.numEntities++; - return node; } /** - * Finalizes this VBOSceneModel. + * Finalizes this SceneModel. * - * Immediately creates the VBOSceneModel's {@link Entity}s within the {@link Scene}. + * Immediately creates the SceneModel's {@link Entity}s within the {@link Scene}. * - * Once finalized, you can't add anything more to this VBOSceneModel. + * Once finalized, you can't add anything more to this SceneModel. */ finalize() { - if (this.destroyed) { return; } - - // Free up temporary data used by the TrianglesInstancingLayer - // for AABB initizalization purposes - for (const geometryId in this._geometries) - { - if (this._geometries.hasOwnProperty(geometryId)) { - delete this._geometries[geometryId]._positions; - delete this._geometries[geometryId]._positionsCompressed; - delete this._geometries[geometryId]._positionsDecodeMatrix; - } - } - - for (const layerId in this._instancingLayers) { - if (this._instancingLayers.hasOwnProperty(layerId)) { - this._instancingLayers[layerId].finalize(); - } + if (this._vfcManager) { + this._vfcManager.finalize(() => {// Makes deferred calls to #_createEntity() and #_createMesh() + }); } - - for (let layerId in this._currentBatchingLayers) { - if (this._currentBatchingLayers.hasOwnProperty(layerId)) { - this._currentBatchingLayers[layerId].finalize(); - } + for (let i = 0, len = this._layerList.length; i < len; i++) { + const layer = this._layerList[i]; + layer.finalize(); } - this._currentBatchingLayers = {}; - - for (let i = 0, len = this._nodeList.length; i < len; i++) { - const node = this._nodeList[i]; + this._geometries = {}; + this._dtxBuckets = {}; + this._textures = {}; + this._textureSets = {}; + this._dtxLayers = {}; + this._vboInstancingLayers = {}; + this._vboBatchingLayers = {}; + for (let i = 0, len = this._entityList.length; i < len; i++) { + const node = this._entityList[i]; node._finalize(); } - - for (let i = 0, len = this._nodeList.length; i < len; i++) { - const node = this._nodeList[i]; + for (let i = 0, len = this._entityList.length; i < len; i++) { + const node = this._entityList[i]; node._finalize2(); } - // Sort layers to reduce WebGL shader switching when rendering them - this._layerList.sort((a, b) => { if (a.sortId < b.sortId) { return -1; @@ -2965,23 +3144,21 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } return 0; }); - for (let i = 0, len = this._layerList.length; i < len; i++) { const layer = this._layerList[i]; layer.layerIndex = i; } - this.glRedraw(); - this.scene._aabbDirty = true; - - this.finalized = true; + if (this.scene.lod.enabled) { + this._lodManager = this.scene.lod.getLODManager(this); + } } _rebuildAABB() { math.collapseAABB3(this._aabb); - for (let i = 0, len = this._nodeList.length; i < len; i++) { - const node = this._nodeList[i]; + for (let i = 0, len = this._entityList.length; i < len; i++) { + const node = this._entityList[i]; math.expandAABB3(this._aabb, node.aabb); } this._aabbDirty = false; @@ -3018,51 +3195,37 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } } - /** @private */ _getActiveSectionPlanesForLayer(layer) { - const renderFlags = this.renderFlags; const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes; const numSectionPlanes = sectionPlanes.length; const baseIndex = layer.layerIndex * numSectionPlanes; - if (numSectionPlanes > 0) { for (let i = 0; i < numSectionPlanes; i++) { - const sectionPlane = sectionPlanes[i]; - if (!sectionPlane.active) { renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = false; - } else { renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = true; renderFlags.sectioned = true; } } } - return true; } - /** @private */ _updateRenderFlags() { - if (this.numVisibleLayerPortions === 0) { return; } - if (this.numCulledLayerPortions === this.numPortions) { return; } - const renderFlags = this.renderFlags; - renderFlags.colorOpaque = (this.numTransparentLayerPortions < this.numPortions); - if (this.numTransparentLayerPortions > 0) { renderFlags.colorTransparent = true; } - if (this.numXRayedLayerPortions > 0) { const xrayMaterial = this.scene.xrayMaterial._state; if (xrayMaterial.fill) { @@ -3080,7 +3243,6 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } } } - if (this.numEdgesLayerPortions > 0) { const edgeMaterial = this.scene.edgeMaterial._state; if (edgeMaterial.edges) { @@ -3090,7 +3252,6 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } } } - if (this.numSelectedLayerPortions > 0) { const selectedMaterial = this.scene.selectedMaterial._state; if (selectedMaterial.fill) { @@ -3108,7 +3269,6 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } } } - if (this.numHighlightedLayerPortions > 0) { const highlightMaterial = this.scene.highlightMaterial._state; if (highlightMaterial.fill) { @@ -3266,6 +3426,21 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } } + /** @private */ + setPickMatrices(pickViewMatrix, pickProjMatrix) { + if (this._numVisibleLayerPortions === 0) { + return; + } + const renderFlags = this.renderFlags; + for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { + const layerIndex = renderFlags.visibleLayers[i]; + const layer = this._layerList[layerIndex]; + if (layer.setPickMatrices) { + layer.setPickMatrices(pickViewMatrix, pickProjMatrix); + } + } + } + /** @private */ drawPickMesh(frameCtx) { if (this.numVisibleLayerPortions === 0) { @@ -3279,7 +3454,7 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } /** - * Called by VBOSceneModelMesh.drawPickDepths() + * Called by SceneModelMesh.drawPickDepths() * @private */ drawPickDepths(frameCtx) { @@ -3294,7 +3469,7 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } /** - * Called by VBOSceneModelMesh.drawPickNormals() + * Called by SceneModelMesh.drawPickNormals() * @private */ drawPickNormals(frameCtx) { @@ -3308,44 +3483,167 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le } } - //------------------------------------------------------------------------------------------------------------------ - // Component members - //------------------------------------------------------------------------------------------------------------------ + /** + * @private + * @param frameCtx + */ + drawSnapInitDepthBuf(frameCtx) { + if (this.numVisibleLayerPortions === 0) { + return; + } + const renderFlags = this.renderFlags; + for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { + const layerIndex = renderFlags.visibleLayers[i]; + const layer = this._layerList[layerIndex]; + if (layer.drawSnapInitDepthBuf) { + layer.drawSnapInitDepthBuf(renderFlags, frameCtx); + } + } + } + + /** + * @private + * @param frameCtx + */ + drawSnapDepths(frameCtx) { + if (this.numVisibleLayerPortions === 0) { + return; + } + const renderFlags = this.renderFlags; + for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { + const layerIndex = renderFlags.visibleLayers[i]; + const layer = this._layerList[layerIndex]; + if (layer.drawSnapDepths) { + layer.drawSnapDepths(renderFlags, frameCtx); + } + } + } /** - * Destroys this VBOSceneModel. + * Destroys this SceneModel. */ destroy() { - for (let layerId in this._currentBatchingLayers) { - if (this._currentBatchingLayers.hasOwnProperty(layerId)) { - this._currentBatchingLayers[layerId].destroy(); + for (let layerId in this._vboBatchingLayers) { + if (this._vboBatchingLayers.hasOwnProperty(layerId)) { + this._vboBatchingLayers[layerId].destroy(); } } - this._currentBatchingLayers = {}; + this._vboBatchingLayers = {}; + for (let layerId in this._vboInstancingLayers) { + if (this._vboInstancingLayers.hasOwnProperty(layerId)) { + this._vboInstancingLayers[layerId].destroy(); + } + } + this._vboInstancingLayers = {}; this.scene.camera.off(this._onCameraViewMatrix); for (let i = 0, len = this._layerList.length; i < len; i++) { this._layerList[i].destroy(); } - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i]._destroy(); + this._layerList = []; + for (let i = 0, len = this._entityList.length; i < len; i++) { + this._entityList[i]._destroy(); } - Object.entries(this._geometries).forEach(([key, geometry]) => { - geometry.destroy(); - }); + // Object.entries(this._geometries).forEach(([id, geometry]) => { + // geometry.destroy(); + // }); this._geometries = {}; + this._dtxBuckets = {}; this._textures = {}; this._textureSets = {}; this._meshes = {}; - this._nodes = {}; + this._entities = {}; this.scene._aabbDirty = true; if (this._isModel) { this.scene._deregisterModel(this); } putScratchMemory(); + if (this._vfcManager) { + this.scene.vfc.putVFCManager(this._vfcManager); + } + if (this._lodManager) { + this.scene.lod.putLODManager(this._lodManager); + } super.destroy(); } } -export { - VBOSceneModel + +/** + * This function applies two steps to the provided mesh geometry data: + * + * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`. + * + * - 2nd, it tries to do an optimization called `index rebucketting` + * + * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._ + * + * - _for 32 bit indices, will try to demote them to 16 bit indices_ + * - _for 16 bit indices, will try to demote them to 8 bits indices_ + * - _8 bits indices are kept as-is_ + * + * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry. + * + * The function returns the same provided input `geometry`, enrichened with the additional key `.preparedBukets`. + * + * @param {object} geometry The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays. + * + * @param enableVertexWelding + * @param enableIndexBucketing + * @returns {object} The mesh information enrichened with `.buckets` key. + */ +function createDTXBuckets(geometry, enableVertexWelding, enableIndexBucketing) { + let uniquePositionsCompressed, uniqueIndices, uniqueEdgeIndices; + if (enableVertexWelding) { + [ + uniquePositionsCompressed, + uniqueIndices, + uniqueEdgeIndices, + ] = uniquifyPositions({ + positionsCompressed: geometry.positionsCompressed, + indices: geometry.indices, + edgeIndices: geometry.edgeIndices + }); + } else { + uniquePositionsCompressed = geometry.positionsCompressed; + uniqueIndices = geometry.indices; + uniqueEdgeIndices = geometry.edgeIndices; + } + let buckets; + if (enableIndexBucketing) { + let numUniquePositions = uniquePositionsCompressed.length / 3; + buckets = rebucketPositions( + { + positionsCompressed: uniquePositionsCompressed, + indices: uniqueIndices, + edgeIndices: uniqueEdgeIndices, + }, + (numUniquePositions > (1 << 16)) ? 16 : 8, + // true + ); + } else { + buckets = [{ + positionsCompressed: uniquePositionsCompressed, + indices: uniqueIndices, + edgeIndices: uniqueEdgeIndices, + }]; + } + return buckets; +} + +/** + * + * @param geometry + */ +function createGeometryOBB(geometry) { + geometry.obb = math.OBB3(); + if (geometry.positionsCompressed && geometry.positionsCompressed.length > 0) { + const localAABB = math.collapseAABB3(); + math.expandAABB3Points3(localAABB, geometry.positionsCompressed); + geometryCompressionUtils.decompressAABB(localAABB, geometry.positionsDecodeMatrix); + math.AABB3ToOBB3(localAABB, geometry.obb); + } else if (geometry.positions && geometry.positions.length > 0) { + const localAABB = math.collapseAABB3(); + math.expandAABB3Points3(localAABB, geometry.positions); + math.AABB3ToOBB3(localAABB, geometry.obb); + } } \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelNode.js b/src/viewer/scene/model/SceneModelEntity.js similarity index 52% rename from src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelNode.js rename to src/viewer/scene/model/SceneModelEntity.js index f36648893..7bc18b7a4 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelNode.js +++ b/src/viewer/scene/model/SceneModelEntity.js @@ -1,5 +1,5 @@ import {ENTITY_FLAGS} from './ENTITY_FLAGS.js'; -import {math} from "../../../math/math.js"; +import {math} from "../math/math.js"; const tempFloatRGB = new Float32Array([0, 0, 0]); const tempIntRGB = new Uint16Array([0, 0, 0]); @@ -7,62 +7,23 @@ const tempIntRGB = new Uint16Array([0, 0, 0]); /** * @private */ -class VBOSceneModelNode { +export class SceneModelEntity { - /** - * @private - */ - constructor(model, isObject, id, meshes, flags, aabb) { + constructor(model, isObject, id, meshes, flags, aabb, lodCullable) { this._isObject = isObject; - - /** - * The {@link Scene} that contains this VBOSceneModelNode. - * - * @property scene - * @type {Scene} - * @final - */ this.scene = model.scene; - - /** - * The VBOSceneModel that contains this VBOSceneModelNode. - * @property model - * @type {VBOSceneModel} - * @final - */ this.model = model; - - /** - * The PerformanceModelMesh instances contained by this VBOSceneModelNode - * @property meshes - * @type {{Array of PerformanceModelMesh}} - * @final - */ this.meshes = meshes; + this._numPrimitives = 0; - this._numTriangles = 0; - - for (var i = 0, len = this.meshes.length; i < len; i++) { // TODO: tidier way? Refactor? + for (let i = 0, len = this.meshes.length; i < len; i++) { // TODO: tidier way? Refactor? const mesh = this.meshes[i]; mesh.parent = this; - this._numTriangles += mesh.numTriangles; + this._numPrimitives += mesh.numPrimitives; } - /** - * ID of this VBOSceneModelNode, unique within the {@link Scene}. - * @property id - * @type {String|Number} - * @final - */ this.id = id; - - /** - * ID of the corresponding object within the originating system. - * - * @type {String} - * @abstract - */ this.originalSystemId = math.unglobalizeObjectId(model.id, id); this._flags = flags; @@ -73,94 +34,44 @@ class VBOSceneModelNode { this._colorizeUpdated = false; this._opacityUpdated = false; + this._lodCullable = (!!lodCullable); this._culled = false; this._culledVFC = false; this._culledLOD = false; - if (this._isObject) { model.scene._registerObject(this); } } - //------------------------------------------------------------------------------------------------------------------ - // Entity members - //------------------------------------------------------------------------------------------------------------------ - - /** - * Returns true to indicate that VBOSceneModelNode is an {@link Entity}. - * @type {Boolean} - */ get isEntity() { return true; } - /** - * Always returns ````false```` because a VBOSceneModelNode can never represent a model. - * - * @type {Boolean} - */ get isModel() { return false; } - /** - * Returns ````true```` if this VBOSceneModelNode represents an object. - * - * When ````true```` the VBOSceneModelNode will be registered by {@link VBOSceneModelNode#id} in - * {@link Scene#objects} and may also have a {@link MetaObject} with matching {@link MetaObject#id}. - * - * @type {Boolean} - */ get isObject() { return this._isObject; } - /** - * World-space 3D axis-aligned bounding box (AABB) of this VBOSceneModelNode. - * - * Represented by a six-element Float64Array containing the min/max extents of the - * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````. - * - * @type {Float64Array} - */ get aabb() { return this._offsetAABB; } - /** - * The approximate number of triangles in this VBOSceneModelNode. - * - * @type {Number} - */ + get numPrimitives() { + return this._numPrimitives; + } + get numTriangles() { - return this._numTriangles; - } - - /** - * Gets if this VBOSceneModelNode is visible. - * - * Only rendered when {@link VBOSceneModelNode#visible} is ````true```` and {@link VBOSceneModelNode#culled} is ````false````. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#visible} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#visibleObjects}. - * - * @type {Boolean} - */ + return this._numPrimitives; + } + get visible() { return this._getFlag(ENTITY_FLAGS.VISIBLE); } - /** - * Sets if this VBOSceneModelNode is visible. - * - * Only rendered when {@link VBOSceneModelNode#visible} is ````true```` and {@link VBOSceneModelNode#culled} is ````false````. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#visible} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#visibleObjects}. - * - * @type {Boolean} - */ set visible(visible) { if (!!(this._flags & ENTITY_FLAGS.VISIBLE) === visible) { return; // Redundant update @@ -174,31 +85,15 @@ class VBOSceneModelNode { this.meshes[i]._setVisible(this._flags); } if (this._isObject) { - this.model.scene._objectVisibilityUpdated(this, visible); + this.model.scene._objectVisibilityUpdated(this); } this.model.glRedraw(); } - /** - * Gets if this VBOSceneModelNode is highlighted. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#highlighted} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#highlightedObjects}. - * - * @type {Boolean} - */ get highlighted() { return this._getFlag(ENTITY_FLAGS.HIGHLIGHTED); } - /** - * Sets if this VBOSceneModelNode is highlighted. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#highlighted} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#highlightedObjects}. - * - * @type {Boolean} - */ set highlighted(highlighted) { if (!!(this._flags & ENTITY_FLAGS.HIGHLIGHTED) === highlighted) { return; // Redundant update @@ -212,31 +107,15 @@ class VBOSceneModelNode { this.meshes[i]._setHighlighted(this._flags); } if (this._isObject) { - this.model.scene._objectHighlightedUpdated(this, highlighted); + this.model.scene._objectHighlightedUpdated(this); } this.model.glRedraw(); } - /** - * Gets if this VBOSceneModelNode is xrayed. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#xrayed} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#xrayedObjects}. - * - * @type {Boolean} - */ get xrayed() { return this._getFlag(ENTITY_FLAGS.XRAYED); } - /** - * Sets if this VBOSceneModelNode is xrayed. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#xrayed} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#xrayedObjects}. - * - * @type {Boolean} - */ set xrayed(xrayed) { if (!!(this._flags & ENTITY_FLAGS.XRAYED) === xrayed) { return; // Redundant update @@ -250,31 +129,15 @@ class VBOSceneModelNode { this.meshes[i]._setXRayed(this._flags); } if (this._isObject) { - this.model.scene._objectXRayedUpdated(this, xrayed); + this.model.scene._objectXRayedUpdated(this); } this.model.glRedraw(); } - /** - * Sets if this VBOSceneModelNode is selected. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#selected} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#selectedObjects}. - * - * @type {Boolean} - */ get selected() { return this._getFlag(ENTITY_FLAGS.SELECTED); } - /** - * Gets if this VBOSceneModelNode is selected. - * - * When both {@link VBOSceneModelNode#isObject} and {@link VBOSceneModelNode#selected} are ````true```` the VBOSceneModelNode will be - * registered by {@link VBOSceneModelNode#id} in {@link Scene#selectedObjects}. - * - * @type {Boolean} - */ set selected(selected) { if (!!(this._flags & ENTITY_FLAGS.SELECTED) === selected) { return; // Redundant update @@ -288,25 +151,15 @@ class VBOSceneModelNode { this.meshes[i]._setSelected(this._flags); } if (this._isObject) { - this.model.scene._objectSelectedUpdated(this, selected); + this.model.scene._objectSelectedUpdated(this); } this.model.glRedraw(); } - /** - * Gets if this VBOSceneModelNode's edges are enhanced. - * - * @type {Boolean} - */ get edges() { return this._getFlag(ENTITY_FLAGS.EDGES); } - /** - * Sets if this VBOSceneModelNode's edges are enhanced. - * - * @type {Boolean} - */ set edges(edges) { if (!!(this._flags & ENTITY_FLAGS.EDGES) === edges) { return; // Redundant update @@ -328,7 +181,7 @@ class VBOSceneModelNode { set culledVFC(culled) { this._culledVFC = culled; - this.internalSetCulled (); + this._setCulled(); } get culledLOD() { @@ -337,37 +190,21 @@ class VBOSceneModelNode { set culledLOD(culled) { this._culledLOD = culled; - this.internalSetCulled (); + this._setCulled(); } - /** - * Gets if this VBOSceneModelNode is culled. - * - * Only rendered when {@link VBOSceneModelNode#visible} is ````true```` and {@link VBOSceneModelNode#culled} is ````false````. - * - * @type {Boolean} - */ get culled() { return !!(this._culled); // return this._getFlag(ENTITY_FLAGS.CULLED); } - /** - * Sets if this VBOSceneModelNode is culled. - * - * Only rendered when {@link VBOSceneModelNode#visible} is ````true```` and {@link VBOSceneModelNode#culled} is ````false````. - * - * @type {Boolean} - */ set culled(culled) { this._culled = culled; - this.internalSetCulled (); + this._setCulled(); } - internalSetCulled() - { - let culled = !!(this._culled) || !!(this._culledLOD) || !!(this._culledVFC); - + _setCulled() { + let culled = !!(this._culled) || !!(this._culledLOD && this._lodCullable) || !!(this._culledVFC); if (!!(this._flags & ENTITY_FLAGS.CULLED) === culled) { return; // Redundant update } @@ -382,24 +219,10 @@ class VBOSceneModelNode { this.model.glRedraw(); } - /** - * Gets if this VBOSceneModelNode is clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - */ get clippable() { return this._getFlag(ENTITY_FLAGS.CLIPPABLE); } - /** - * Sets if this VBOSceneModelNode is clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - */ set clippable(clippable) { if ((!!(this._flags & ENTITY_FLAGS.CLIPPABLE)) === clippable) { return; // Redundant update @@ -415,20 +238,10 @@ class VBOSceneModelNode { this.model.glRedraw(); } - /** - * Gets if this VBOSceneModelNode is included in boundary calculations. - * - * @type {Boolean} - */ get collidable() { return this._getFlag(ENTITY_FLAGS.COLLIDABLE); } - /** - * Sets if this VBOSceneModelNode is included in boundary calculations. - * - * @type {Boolean} - */ set collidable(collidable) { if (!!(this._flags & ENTITY_FLAGS.COLLIDABLE) === collidable) { return; // Redundant update @@ -443,24 +256,10 @@ class VBOSceneModelNode { } } - /** - * Gets if this VBOSceneModelNode is pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - */ get pickable() { return this._getFlag(ENTITY_FLAGS.PICKABLE); } - /** - * Sets if this VBOSceneModelNode is pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - */ set pickable(pickable) { if (!!(this._flags & ENTITY_FLAGS.PICKABLE) === pickable) { return; // Redundant update @@ -475,13 +274,6 @@ class VBOSceneModelNode { } } - /** - * Gets the VBOSceneModelNode's RGB colorize color. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - */ get colorize() { // [0..1, 0..1, 0..1] if (this.meshes.length === 0) { return null; @@ -493,13 +285,6 @@ class VBOSceneModelNode { return tempFloatRGB; } - /** - * Sets the VBOSceneModelNode's RGB colorize color. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - */ set colorize(color) { // [0..1, 0..1, 0..1] if (color) { tempIntRGB[0] = Math.floor(color[0] * 255.0); // Quantize @@ -521,13 +306,6 @@ class VBOSceneModelNode { this.model.glRedraw(); } - /** - * Gets the VBOSceneModelNode's opacity factor. - * - * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. - * - * @type {Number} - */ get opacity() { if (this.meshes.length > 0) { return (this.meshes[0]._colorize[3] / 255.0); @@ -536,13 +314,6 @@ class VBOSceneModelNode { } } - /** - * Sets the VBOSceneModelNode's opacity factor, multiplies by the VBOSceneModelNode's rendered fragment alphas. - * - * This is a factor in range ````[0..1]````. - * - * @type {Number} - */ set opacity(opacity) { if (this.meshes.length === 0) { return; @@ -576,28 +347,10 @@ class VBOSceneModelNode { this.model.glRedraw(); } - /** - * Gets the VBOSceneModelNode's 3D World-space offset. - * - * Default value is ````[0,0,0]````. - * - * @type {Number[]} - */ get offset() { return this._offset; } - /** - * Sets the VBOSceneModelNode's 3D World-space offset. - * - * The offset dynamically translates the VBOSceneModelNode in World-space. - * - * Default value is ````[0, 0, 0]````. - * - * Provide a null or undefined value to reset to the default value. - * - * @type {Number[]} - */ set offset(offset) { if (offset) { this._offset[0] = offset[0]; @@ -618,67 +371,15 @@ class VBOSceneModelNode { this._offsetAABB[4] = this._aabb[4] + this._offset[1]; this._offsetAABB[5] = this._aabb[5] + this._offset[2]; this.scene._aabbDirty = true; - this.scene._objectOffsetUpdated( - this, - offset.some((v) => v !== 0) - ); + this.scene._objectOffsetUpdated(this, offset); this.model._aabbDirty = true; this.model.glRedraw(); } - /** - * Gets if this VBOSceneModelNode casts shadows. - * - * @type {Boolean} - */ - get castsShadow() { // TODO - return false; - } - - /** - * Sets if to this VBOSceneModelNode casts shadows. - * - * @type {Boolean} - */ - set castsShadow(pickable) { // TODO - - } - - /** - * Whether or not this VBOSceneModelNode can have shadows cast upon it - * - * @type {Boolean} - */ - get receivesShadow() { // TODO - return false; - } - - /** - * Whether or not this VBOSceneModelNode can have shadows cast upon it - * - * @type {Boolean} - */ - set receivesShadow(pickable) { // TODO - - } - - /** - * Gets if Scalable Ambient Obscurance (SAO) will apply to this VBOSceneModelNode. - * - * SAO is configured by the Scene's {@link SAO} component. - * - * @type {Boolean} - * @abstract - */ get saoEnabled() { return this.model.saoEnabled; } - /** - * Gets the World, View and Canvas-space positions of each vertex in a callback. - * - * @param callback - */ getEachVertex(callback) { for (let i = 0, len = this.meshes.length; i < len; i++) { this.meshes[i].getEachVertex(callback) @@ -693,16 +394,16 @@ class VBOSceneModelNode { const scene = this.model.scene; if (this._isObject) { if (this.visible) { - scene._objectVisibilityUpdated(this, true); + scene._objectVisibilityUpdated(this); } if (this.highlighted) { - scene._objectHighlightedUpdated(this, true); + scene._objectHighlightedUpdated(this); } if (this.xrayed) { - scene._objectXRayedUpdated(this, true); + scene._objectXRayedUpdated(this); } if (this.selected) { - scene._objectSelectedUpdated(this, true); + scene._objectSelectedUpdated(this); } } for (let i = 0, len = this.meshes.length; i < len; i++) { @@ -716,36 +417,33 @@ class VBOSceneModelNode { } } - _destroy() { // Called by VBOSceneModel + _destroy() { const scene = this.model.scene; if (this._isObject) { scene._deregisterObject(this); if (this.visible) { - scene._objectVisibilityUpdated(this, false, false); + scene._objectVisibilityUpdated(this, false); } if (this.xrayed) { - scene._objectXRayedUpdated(this, false); + scene._objectXRayedUpdated(this); } if (this.selected) { - scene._objectSelectedUpdated(this, false); + scene._objectSelectedUpdated(this); } if (this.highlighted) { - scene._objectHighlightedUpdated(this, false); + scene._objectHighlightedUpdated(this); } if (this._opacityUpdated) { this.scene._objectColorizeUpdated(this, false); + } + if (this._opacityUpdated) { this.scene._objectOpacityUpdated(this, false); } - - if (this.offset.some((v) => v !== 0)) - this.scene._objectOffsetUpdated(this, false); + this.scene._objectOffsetUpdated(this, false); } for (let i = 0, len = this.meshes.length; i < len; i++) { this.meshes[i]._destroy(); } scene._aabbDirty = true; } - } - -export {VBOSceneModelNode}; \ No newline at end of file diff --git a/src/viewer/scene/model/SceneModelMesh.js b/src/viewer/scene/model/SceneModelMesh.js new file mode 100644 index 000000000..0a231a6ca --- /dev/null +++ b/src/viewer/scene/model/SceneModelMesh.js @@ -0,0 +1,152 @@ + +/** + * @private + */ +export class SceneModelMesh { + + constructor(model, id, color, opacity, layer = null, portionId = 0) { + this.model = model; + this.object = null; + this.parent = null; + this.id = id; + this.aabb = null; + this.layer = layer; + this.portionId = portionId; + this._color = [color[0], color[1], color[2], opacity]; // [0..255] + this._colorize = [color[0], color[1], color[2], opacity]; // [0..255] + this._colorizing = false; + this._transparent = (opacity < 255); + this.numTriangles = 0; + this.origin = null; + } + + _finalize(entityFlags) { + this.layer.initFlags(this.portionId, entityFlags, this._transparent); + } + + _finalize2() { + if (this.layer.flushInitFlags) { + this.layer.flushInitFlags(); + } + } + + _setVisible(entityFlags) { + this.layer.setVisible(this.portionId, entityFlags, this._transparent); + } + + _setColor(color) { + this._color[0] = color[0]; + this._color[1] = color[1]; + this._color[2] = color[2]; + if (!this._colorizing) { + this.layer.setColor(this.portionId, this._color, false); + } + } + + _setColorize(colorize) { + const setOpacity = false; + if (colorize) { + this._colorize[0] = colorize[0]; + this._colorize[1] = colorize[1]; + this._colorize[2] = colorize[2]; + this.layer.setColor(this.portionId, this._colorize, setOpacity); + this._colorizing = true; + } else { + this.layer.setColor(this.portionId, this._color, setOpacity); + this._colorizing = false; + } + } + + _setOpacity(opacity, entityFlags) { + const newTransparent = (opacity < 255); + const lastTransparent = this._transparent; + const changingTransparency = (lastTransparent !== newTransparent); + this._color[3] = opacity; + this._colorize[3] = opacity; + this._transparent = newTransparent; + if (this._colorizing) { + this.layer.setColor(this.portionId, this._colorize); + } else { + this.layer.setColor(this.portionId, this._color); + } + if (changingTransparency) { + this.layer.setTransparent(this.portionId, entityFlags, newTransparent); + } + } + + _setOffset(offset) { + this.layer.setOffset(this.portionId, offset); + } + + _setHighlighted(entityFlags) { + this.layer.setHighlighted(this.portionId, entityFlags, this._transparent); + } + + _setXRayed(entityFlags) { + this.layer.setXRayed(this.portionId, entityFlags, this._transparent); + } + + _setSelected(entityFlags) { + this.layer.setSelected(this.portionId, entityFlags, this._transparent); + } + + _setEdges(entityFlags) { + this.layer.setEdges(this.portionId, entityFlags, this._transparent); + } + + _setClippable(entityFlags) { + this.layer.setClippable(this.portionId, entityFlags, this._transparent); + } + + _setCollidable(entityFlags) { + this.layer.setCollidable(this.portionId, entityFlags); + } + + _setPickable(flags) { + this.layer.setPickable(this.portionId, flags, this._transparent); + } + + _setCulled(flags) { + this.layer.setCulled(this.portionId, flags, this._transparent); + } + + canPickTriangle() { + return false; + } + + drawPickTriangles(renderFlags, frameCtx) { + // NOP + } + + pickTriangleSurface(pickResult) { + // NOP + } + + precisionRayPickSurface(worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) { + return this.layer.precisionRayPickSurface ? this.layer.precisionRayPickSurface(this.portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) : false; + } + + canPickWorldPos() { + return true; + } + + drawPickDepths(frameCtx) { + this.model.drawPickDepths(frameCtx); + } + + drawPickNormals(frameCtx) { + this.model.drawPickNormals(frameCtx); + } + + delegatePickedEntity() { + return this.parent; + } + + getEachVertex(callback) { + this.layer.getEachVertex(this.portionId, callback); + } + + _destroy() { + this.model.scene._renderer.putPickID(this.pickId); + } +} diff --git a/src/viewer/scene/model/SceneModelTexture.js b/src/viewer/scene/model/SceneModelTexture.js new file mode 100644 index 000000000..360bb3cfe --- /dev/null +++ b/src/viewer/scene/model/SceneModelTexture.js @@ -0,0 +1,17 @@ +/** + * @private + */ +export class SceneModelTexture { + + constructor(cfg) { + this.id = cfg.id; + this.texture = cfg.texture; + } + + destroy() { + if (this.texture) { + this.texture.destroy(); + this.texture = null; + } + } +} diff --git a/src/viewer/scene/model/SceneModelTextureSet.js b/src/viewer/scene/model/SceneModelTextureSet.js new file mode 100644 index 000000000..d51605044 --- /dev/null +++ b/src/viewer/scene/model/SceneModelTextureSet.js @@ -0,0 +1,17 @@ +/** + * @private + */ +export class SceneModelTextureSet { + + constructor(cfg) { + this.id = cfg.id; + this.colorTexture = cfg.colorTexture; + this.metallicRoughnessTexture = cfg.metallicRoughnessTexture; + this.normalsTexture = cfg.normalsTexture; + this.emissiveTexture = cfg.emissiveTexture; + this.occlusionTexture = cfg.occlusionTexture; + } + + destroy() { + } +} diff --git a/src/viewer/scene/model/VBOSceneModel.js b/src/viewer/scene/model/VBOSceneModel.js new file mode 100644 index 000000000..36c30623b --- /dev/null +++ b/src/viewer/scene/model/VBOSceneModel.js @@ -0,0 +1,28 @@ +import {SceneModel} from "./../index.js"; + +/** + * @desc A high-performance model representation for efficient rendering and low memory usage. + * + * * VBOSceneModel was replaced with {@link SceneModel} in ````xeokit-sdk v2.4````. + * * VBOSceneModel currently extends {@link SceneModel}, in order to maintain backward-compatibility until we remove VBOSceneModel. + * * See {@link SceneModel} for API details. + * + * @deprecated + * @implements {Drawable} + * @implements {Entity} + * @extends {SceneModel} + */ +class VBOSceneModel extends SceneModel { + + /** + * See {@link VBOSceneModel} for details. + * + * @param owner + * @param cfg + */ + constructor(owner, cfg = {}) { + super(owner, cfg); + } +} + +export {VBOSceneModel}; \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/compression.js b/src/viewer/scene/model/compression.js similarity index 89% rename from src/viewer/scene/models/VBOSceneModel/lib/compression.js rename to src/viewer/scene/model/compression.js index e4349f4c7..821f08bac 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/compression.js +++ b/src/viewer/scene/model/compression.js @@ -1,4 +1,4 @@ -import {math} from "../../../math/math.js"; +import {math} from "../math/math.js"; const translate = math.mat4(); const scale = math.mat4(); @@ -33,6 +33,28 @@ function quantizePositions(positions, aabb, positionsDecodeMatrix) { // http://c return quantizedPositions; } +/** + * @private + * @param aabb + * @param positionsDecodeMatrix + * @returns {*} + */ +function createPositionsDecodeMatrix(aabb, positionsDecodeMatrix) { // http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf + const xmin = aabb[0]; + const ymin = aabb[1]; + const zmin = aabb[2]; + const xwid = aabb[3] - xmin; + const ywid = aabb[4] - ymin; + const zwid = aabb[5] - zmin; + const maxInt = 65525; + math.identityMat4(translate); + math.translationMat4v(aabb, translate); + math.identityMat4(scale); + math.scalingMat4v([xwid / maxInt, ywid / maxInt, zwid / maxInt], scale); + math.mulMat4(translate, scale, positionsDecodeMatrix); + return positionsDecodeMatrix; +} + /** * @private */ @@ -196,6 +218,7 @@ function dot(array, i, vec3) { export { quantizePositions, + createPositionsDecodeMatrix, octEncodeNormals, transformAndOctEncodeNormals, octEncodeVec3, diff --git a/src/viewer/scene/model/dtx/triangles/BindableDataTexture.js b/src/viewer/scene/model/dtx/triangles/BindableDataTexture.js new file mode 100644 index 000000000..5516c48b0 --- /dev/null +++ b/src/viewer/scene/model/dtx/triangles/BindableDataTexture.js @@ -0,0 +1,31 @@ +/** + * @private + */ +export class BindableDataTexture { + + constructor(gl, texture, textureWidth, textureHeight, textureData = null) { + this._gl = gl; + this._texture = texture; + this._textureWidth = textureWidth; + this._textureHeight = textureHeight; + this._textureData = textureData; + } + + bindTexture(glProgram, shaderName, glTextureUnit) { + return glProgram.bindTexture(shaderName, this, glTextureUnit); + } + + bind(unit) { + this._gl.activeTexture(this._gl["TEXTURE" + unit]); + this._gl.bindTexture(this._gl.TEXTURE_2D, this._texture); + return true; + } + + unbind(unit) { + // This `unbind` method is ignored at the moment to allow avoiding + // to rebind same texture already bound to a texture unit. + + // this._gl.activeTexture(this.state.gl["TEXTURE" + unit]); + // this._gl.bindTexture(this.state.gl.TEXTURE_2D, null); + } +} \ No newline at end of file diff --git a/src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js b/src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js new file mode 100644 index 000000000..660b9e22d --- /dev/null +++ b/src/viewer/scene/model/dtx/triangles/DataTextureGenerator.js @@ -0,0 +1,631 @@ +import {createRTCViewMat, math} from "../../../math"; +import {BindableDataTexture} from "./BindableDataTexture"; +import {dataTextureRamStats} from "./dataTextureRamStats"; + +/** + * @private + */ +export class DataTextureGenerator { + /** + * Enables the currently binded ````WebGLTexture```` to be used as a data texture. + * + * @param {WebGL2RenderingContext} gl + * + * @private + */ + disableBindedTextureFiltering(gl) { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + } + + /** + * Generate and return a `camera data texture`. + * + * The texture will automatically update its contents before each render when the camera matrix is dirty, + * and to do so will use the following events: + * + * - `scene.rendering` event will be used to know that the camera texture should be updated + * - `camera.matrix` event will be used to know that the camera matices changed + * + * @param {WebGL2RenderingContext} gl + * @param {Camera} camera + * @param {Scene} scene + * @param {null|number[3]} origin + * @returns {BindableDataTexture} + */ + generateCameraDataTexture(gl, camera, scene, origin) { + const textureWidth = 4; + const textureHeight = 3; // space for 3 matrices + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + const cameraTexture = new BindableDataTexture(gl, texture, textureWidth, textureHeight); + let cameraDirty = true; + cameraTexture.updateViewMatrix = (viewMatrix, projMatrix) => { + gl.bindTexture(gl.TEXTURE_2D, cameraTexture._texture); + // Camera's "view matrix" + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 0, // 1st matrix: camera view matrix + 4, + 1, + gl.RGBA, + gl.FLOAT, + new Float32Array((origin) ? createRTCViewMat(viewMatrix, origin) : viewMatrix) + ); + + // Camera's "view normal matrix" + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 1, // 2nd matrix: camera view normal matrix + 4, + 1, + gl.RGBA, + gl.FLOAT, + new Float32Array(camera.viewNormalMatrix) + ); + + // Camera's "project matrix" + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 2, // 3rd matrix: camera project matrix + 4, + 1, + gl.RGBA, + gl.FLOAT, + new Float32Array(projMatrix) + ); + }; + const onCameraMatrix = () => { + if (!cameraDirty) { + return; + } + cameraDirty = false; + cameraTexture.updateViewMatrix(camera.viewMatrix, camera.project.matrix); + }; + camera.on("matrix", () => cameraDirty = true); + scene.on("rendering", onCameraMatrix); + onCameraMatrix(); + return cameraTexture; + } + + /** + * Generate and return a texture containing camera view and projection + * matrices for picking, relative to the given RTC coordinate system origin. + * + * @param {WebGL2RenderingContext} gl + * @param {Camera} camera + * @param {null|number[3]} origin + * @returns {BindableDataTexture} + */ + generatePickCameraDataTexture(gl, camera, origin) { + const textureWidth = 4; + const textureHeight = 3; // space for 3 matrices + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + const cameraTexture = new BindableDataTexture(gl, texture, textureWidth, textureHeight); + cameraTexture.updateViewMatrix = (viewMatrix, projMatrix) => { + gl.bindTexture(gl.TEXTURE_2D, cameraTexture._texture); + // Camera's "view matrix" + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 0, // 1st matrix: pick camera view matrix + 4, + 1, + gl.RGBA, + gl.FLOAT, + new Float32Array((origin) ? createRTCViewMat(viewMatrix, origin) : viewMatrix) + ); + + // Camera's "view normal matrix" + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 1, // 2nd matrix: pick camera view normal matrix + 4, + 1, + gl.RGBA, + gl.FLOAT, + new Float32Array(camera.viewNormalMatrix) + ); + + // Camera's "project matrix" + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, + 2, // 3rd matrix: pick camera project matrix + 4, + 1, + gl.RGBA, + gl.FLOAT, + new Float32Array(projMatrix) + ); + }; + return cameraTexture; + } + + /** + * Generate and return a `model data texture`. + * + * @param {WebGL2RenderingContext} gl + * @param {DataTextureSceneModel} model + * + * @returns {BindableDataTexture} + */ + generateModelTexture(gl, model) { + const textureWidth = 4; + const textureHeight = 2; // space for 2 matrices + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight); + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, // x-offset + 0, // y-offset (model world matrix) + 4, // data width (4x4 values) + 1, // data height (1 matrix) + gl.RGBA, + gl.FLOAT, + new Float32Array(model.worldMatrix) + ); + gl.texSubImage2D( + gl.TEXTURE_2D, + 0, + 0, // x-offset + 1, // y-offset (model normal matrix) + 4, // data width (4x4 values) + 1, // data height (1 matrix) + gl.RGBA, + gl.FLOAT, + new Float32Array(model.worldNormalMatrix) + ); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * This will generate an RGBA texture for: + * - colors + * - pickColors + * - flags + * - flags2 + * - vertex bases + * - vertex base offsets + * + * The texture will have: + * - 4 RGBA columns per row: for each object (pick) color and flags(2) + * - N rows where N is the number of objects + * + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike>} colors Array of colors for all objects in the layer + * @param {ArrayLike>} pickColors Array of pickColors for all objects in the layer + * @param {ArrayLike} vertexBases Array of position-index-bases foteh all objects in the layer + * @param {ArrayLike} indexBaseOffsets For triangles: array of offests between the (gl_VertexID / 3) and the position where the indices start in the texture layer + * @param {ArrayLike} edgeIndexBaseOffsets For edges: Array of offests between the (gl_VertexID / 2) and the position where the edge indices start in the texture layer + * @param {ArrayLike} solid Array is-solid flag for all objects in the layer + * + * @returns {BindableDataTexture} + */ + generateTextureForColorsAndFlags(gl, colors, pickColors, vertexBases, indexBaseOffsets, edgeIndexBaseOffsets, solid) { + const numPortions = colors.length; + + // The number of rows in the texture is the number of + // objects in the layer. + + this.numPortions = numPortions; + + const textureWidth = 512 * 8; + const textureHeight = Math.ceil(numPortions / (textureWidth / 8)); + + if (textureHeight === 0) { + throw "texture height===0"; + } + + // 8 columns per texture row: + // - col0: (RGBA) object color RGBA + // - col1: (packed Uint32 as RGBA) object pick color + // - col2: (packed 4 bytes as RGBA) object flags + // - col3: (packed 4 bytes as RGBA) object flags2 + // - col4: (packed Uint32 bytes as RGBA) vertex base + // - col5: (packed Uint32 bytes as RGBA) index base offset + // - col6: (packed Uint32 bytes as RGBA) edge index base offset + // - col7: (packed 4 bytes as RGBA) is-solid flag for objects + + const texArray = new Uint8Array(4 * textureWidth * textureHeight); + + dataTextureRamStats.sizeDataColorsAndFlags += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + + for (let i = 0; i < numPortions; i++) { + // object color + texArray.set(colors [i], i * 32 + 0); + texArray.set(pickColors [i], i * 32 + 4); // object pick color + texArray.set([0, 0, 0, 0], i * 32 + 8); // object flags + texArray.set([0, 0, 0, 0], i * 32 + 12); // object flags2 + + // vertex base + texArray.set([ + (vertexBases[i] >> 24) & 255, + (vertexBases[i] >> 16) & 255, + (vertexBases[i] >> 8) & 255, + (vertexBases[i]) & 255, + ], + i * 32 + 16 + ); + + // triangles index base offset + texArray.set( + [ + (indexBaseOffsets[i] >> 24) & 255, + (indexBaseOffsets[i] >> 16) & 255, + (indexBaseOffsets[i] >> 8) & 255, + (indexBaseOffsets[i]) & 255, + ], + i * 32 + 20 + ); + + // edge index base offset + texArray.set( + [ + (edgeIndexBaseOffsets[i] >> 24) & 255, + (edgeIndexBaseOffsets[i] >> 16) & 255, + (edgeIndexBaseOffsets[i] >> 8) & 255, + (edgeIndexBaseOffsets[i]) & 255, + ], + i * 32 + 24 + ); + + // is-solid flag + texArray.set([solid[i] ? 1 : 0, 0, 0, 0], i * 32 + 28); + } + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA8UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA_INTEGER, gl.UNSIGNED_BYTE, texArray, 0); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray); + } + + /** + * This will generate a texture for all object offsets. + * + * @param {WebGL2RenderingContext} gl + * @param {int[]} offsets Array of int[3], one XYZ offset array for each object + * + * @returns {BindableDataTexture} + */ + generateTextureForObjectOffsets(gl, numOffsets) { + const textureWidth = 512; + const textureHeight = Math.ceil(numOffsets / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArray = new Float32Array(3 * textureWidth * textureHeight).fill(0); + dataTextureRamStats.sizeDataTextureOffsets += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32F, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB, gl.FLOAT, texArray, 0); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight, texArray); + } + + /** + * This will generate a texture for all positions decode matrices in the layer. + * + * The texture will have: + * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components). + * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix) + * - N rows where N is the number of objects + * + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} positionDecodeMatrices Array of positions decode matrices for all objects in the layer + * @param {ArrayLike} instanceMatrices Array of geometry instancing matrices for all objects in the layer. Null if the objects are not instanced. + * + * @returns {BindableDataTexture} + */ + generateTextureForPositionsDecodeMatrices(gl, positionDecodeMatrices, instanceMatrices) { + const numMatrices = positionDecodeMatrices.length; + if (numMatrices === 0) { + throw "num decode+entity matrices===0"; + } + // in one row we can fit 512 matrices + const textureWidth = 512 * 4; + const textureHeight = Math.ceil(numMatrices / (textureWidth / 4)); + const texArray = new Float32Array(4 * textureWidth * textureHeight); + dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + const tmpMatrix = math.mat4(); + for (let i = 0; i < positionDecodeMatrices.length; i++) { // 4x4 values + texArray.set(math.mulMat4(instanceMatrices[i], positionDecodeMatrices[i], tmpMatrix), i * 16); + } + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGBA, gl.FLOAT, texArray, 0); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} indices + * + * @returns {BindableDataTexture} + */ + generateTextureFor8BitIndices(gl, indices) { + if (indices.length === 0) { + return {texture: null, textureHeight: 0,}; + } + const textureWidth = 4096; + const textureHeight = Math.ceil(indices.length / 3 / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight * 3; + const texArray = new Uint8Array(texArraySize); + dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + texArray.fill(0); + texArray.set(indices, 0) + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB8UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_BYTE, texArray, 0); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} indices + * + * @returns {BindableDataTexture} + */ + generateTextureFor16BitIndices(gl, indices) { + if (indices.length === 0) { + return {texture: null, textureHeight: 0,}; + } + const textureWidth = 4096; + const textureHeight = Math.ceil(indices.length / 3 / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight * 3; + const texArray = new Uint16Array(texArraySize); + dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + texArray.fill(0); + texArray.set(indices, 0) + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} indices + * + * @returns {BindableDataTexture} + */ + generateTextureFor32BitIndices(gl, indices) { + if (indices.length === 0) { + return {texture: null, textureHeight: 0}; + } + const textureWidth = 4096; + const textureHeight = Math.ceil(indices.length / 3 / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight * 3; + const texArray = new Uint32Array(texArraySize); + dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + texArray.fill(0); + texArray.set(indices, 0) + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_INT, texArray, 0); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} edgeIndices + * + * @returns {BindableDataTexture} + */ + generateTextureFor8BitsEdgeIndices(gl, edgeIndices) { + if (edgeIndices.length === 0) { + return {texture: null, textureHeight: 0}; + } + const textureWidth = 4096; + const textureHeight = Math.ceil(edgeIndices.length / 2 / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight * 2; + const texArray = new Uint8Array(texArraySize); + dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + texArray.fill(0); + texArray.set(edgeIndices, 0) + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG8UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_BYTE, texArray, 0); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} edgeIndices + * + * @returns {BindableDataTexture} + */ + generateTextureFor16BitsEdgeIndices(gl, edgeIndices) { + if (edgeIndices.length === 0) { + return {texture: null, textureHeight: 0}; + } + const textureWidth = 4096; + const textureHeight = Math.ceil(edgeIndices.length / 2 / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight * 2; + const texArray = new Uint16Array(texArraySize); + dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + texArray.fill(0); + texArray.set(edgeIndices, 0) + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG16UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_SHORT, texArray, 0); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} edgeIndices + * + * @returns {BindableDataTexture} + */ + generateTextureFor32BitsEdgeIndices(gl, edgeIndices) { + if (edgeIndices.length === 0) { + return {texture: null, textureHeight: 0,}; + } + const textureWidth = 4096; + const textureHeight = Math.ceil(edgeIndices.length / 2 / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight * 2; + const texArray = new Uint32Array(texArraySize); + dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + texArray.fill(0); + texArray.set(edgeIndices, 0) + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG32UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RG_INTEGER, gl.UNSIGNED_INT, texArray, 0); + this.disableBindedTextureFiltering(gl); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} positions Array of (uniquified) quantized positions in the layer + * + * This will generate a texture for positions in the layer. + * + * The texture will have: + * - 1024 columns, where each pixel will be a 16-bit-per-component RGB texture, corresponding to the XYZ of the position + * - a number of rows R where R*1024 is just >= than the number of vertices (positions / 3) + * + * @returns {BindableDataTexture} + */ + generateTextureForPositions(gl, positions) { + const numVertices = positions.length / 3; + const textureWidth = 4096; + const textureHeight = Math.ceil(numVertices / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight * 3; + const texArray = new Uint16Array(texArraySize); + dataTextureRamStats.sizeDataTexturePositions += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + texArray.fill(0); + texArray.set(positions, 0); + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RGB_INTEGER, gl.UNSIGNED_SHORT, texArray, 0); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } + + /** + * @param {WebGL2RenderingContext} gl + * @param {ArrayLike} portionIdsArray + * + * @returns {BindableDataTexture} + */ + generateTextureForPackedPortionIds(gl, portionIdsArray) { + if (portionIdsArray.length === 0) { + return {texture: null, textureHeight: 0,}; + } + const lenArray = portionIdsArray.length; + const textureWidth = 4096; + const textureHeight = Math.ceil(lenArray / textureWidth); + if (textureHeight === 0) { + throw "texture height===0"; + } + const texArraySize = textureWidth * textureHeight; + const texArray = new Uint16Array(texArraySize); + texArray.set(portionIdsArray, 0); + dataTextureRamStats.sizeDataTexturePortionIds += texArray.byteLength; + dataTextureRamStats.numberOfTextures++; + const texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R16UI, textureWidth, textureHeight); + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, textureWidth, textureHeight, gl.RED_INTEGER, gl.UNSIGNED_SHORT, texArray, 0); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindTexture(gl.TEXTURE_2D, null); + return new BindableDataTexture(gl, texture, textureWidth, textureHeight); + } +} \ No newline at end of file diff --git a/src/viewer/scene/model/dtx/triangles/DataTextureState.js b/src/viewer/scene/model/dtx/triangles/DataTextureState.js new file mode 100644 index 000000000..553b572fe --- /dev/null +++ b/src/viewer/scene/model/dtx/triangles/DataTextureState.js @@ -0,0 +1,314 @@ +// Imports used to complete the JSDocs arguments to methods +import {Program} from "../../../webgl/Program.js" + +/** + * @private + */ +export class DataTextureState { + constructor() { + /** + * Texture that holds colors/pickColors/flags/flags2 per-object: + * - columns: one concept per column => color / pick-color / ... + * - row: the object Id + * + * @type BindableDataTexture + */ + this.texturePerObjectIdColorsAndFlags = null; + + /** + * Texture that holds the XYZ offsets per-object: + * - columns: just 1 column with the XYZ-offset + * - row: the object Id + * + * @type BindableDataTexture + */ + this.texturePerObjectIdOffsets = null; + + /** + * Texture that holds the positionsDecodeMatrix per-object: + * - columns: each column is one column of the matrix + * - row: the object Id + * + * @type BindableDataTexture + */ + this.texturePerObjectIdPositionsDecodeMatrix = null; + + /** + * Texture that holds all the `different-vertices` used by the layer. + * + * @type BindableDataTexture + */ + this.texturePerVertexIdCoordinates = null; + + /** + * Texture that holds the PortionId that corresponds to a given polygon-id. + * + * Variant of the texture for 8-bit based polygon-ids. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdPortionIds8Bits = null; + + /** + * Texture that holds the PortionId that corresponds to a given polygon-id. + * + * Variant of the texture for 16-bit based polygon-ids. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdPortionIds16Bits = null; + + /** + * Texture that holds the PortionId that corresponds to a given polygon-id. + * + * Variant of the texture for 32-bit based polygon-ids. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdPortionIds32Bits = null; + + /** + * Texture that holds the PortionId that corresponds to a given edge-id. + * + * Variant of the texture for 8-bit based polygon-ids. + * + * @type BindableDataTexture + */ + this.texturePerEdgeIdPortionIds8Bits = null; + + /** + * Texture that holds the PortionId that corresponds to a given edge-id. + * + * Variant of the texture for 16-bit based polygon-ids. + * + * @type BindableDataTexture + */ + this.texturePerEdgeIdPortionIds16Bits = null; + + /** + * Texture that holds the PortionId that corresponds to a given edge-id. + * + * Variant of the texture for 32-bit based polygon-ids. + * + * @type BindableDataTexture + */ + this.texturePerEdgeIdPortionIds32Bits = null; + + /** + * Texture that holds the unique-vertex-indices for 8-bit based indices. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdIndices8Bits = null; + + /** + * Texture that holds the unique-vertex-indices for 16-bit based indices. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdIndices16Bits = null; + + /** + * Texture that holds the unique-vertex-indices for 32-bit based indices. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdIndices32Bits = null; + + /** + * Texture that holds the unique-vertex-indices for 8-bit based edge indices. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdEdgeIndices8Bits = null; + + /** + * Texture that holds the unique-vertex-indices for 16-bit based edge indices. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdEdgeIndices16Bits = null; + + /** + * Texture that holds the unique-vertex-indices for 32-bit based edge indices. + * + * @type BindableDataTexture + */ + this.texturePerPolygonIdEdgeIndices32Bits = null; + + /** + * Texture that holds the camera matrices + * - columns: each column in the texture is a camera matrix column. + * - row: each row is a different camera matrix. + * + * @type BindableDataTexture + */ + this.textureCameraMatrices = null; + + /** + * Texture that holds the camera matrices, specific to ray-picking + * - columns: each column in the texture is a camera matrix column. + * - row: each row is a different camera matrix. + * + * @type BindableDataTexture + */ + this.texturePickCameraMatrices = null; + + /** + * Texture that holds the model matrices + * - columns: each column in the texture is a model matrix column. + * - row: each row is a different model matrix. + * + * @type BindableDataTexture + */ + this.textureModelMatrices = null; + } + + finalize() { + this.indicesPerBitnessTextures = { + 8: this.texturePerPolygonIdIndices8Bits, + 16: this.texturePerPolygonIdIndices16Bits, + 32: this.texturePerPolygonIdIndices32Bits, + }; + + this.indicesPortionIdsPerBitnessTextures = { + 8: this.texturePerPolygonIdPortionIds8Bits, + 16: this.texturePerPolygonIdPortionIds16Bits, + 32: this.texturePerPolygonIdPortionIds32Bits, + }; + + this.edgeIndicesPerBitnessTextures = { + 8: this.texturePerPolygonIdEdgeIndices8Bits, + 16: this.texturePerPolygonIdEdgeIndices16Bits, + 32: this.texturePerPolygonIdEdgeIndices32Bits, + }; + + this.edgeIndicesPortionIdsPerBitnessTextures = { + 8: this.texturePerEdgeIdPortionIds8Bits, + 16: this.texturePerEdgeIdPortionIds16Bits, + 32: this.texturePerEdgeIdPortionIds32Bits, + }; + } + + /** + * + * @param {Program} glProgram + * @param {string} objectMatricesTextureShaderName + * @param {string} vertexTextureShaderName + * @param {string} objectAttributesTextureShaderName + * @param {string} cameraMatricesShaderName + * @param {string} modelMatricesShaderName + * @param objectOffsetsShaderName + */ + bindCommonTextures( + glProgram, + objectMatricesTextureShaderName, + vertexTextureShaderName, + objectAttributesTextureShaderName, + cameraMatricesShaderName, + modelMatricesShaderName, + objectOffsetsShaderName + ) { + this.texturePerObjectIdPositionsDecodeMatrix.bindTexture( + glProgram, + objectMatricesTextureShaderName, + 1 // webgl texture unit + ); + + this.texturePerVertexIdCoordinates.bindTexture( + glProgram, + vertexTextureShaderName, + 2 // webgl texture unit + ); + + this.texturePerObjectIdColorsAndFlags.bindTexture( + glProgram, + objectAttributesTextureShaderName, + 3 // webgl texture unit + ); + + this.textureCameraMatrices.bindTexture( + glProgram, + cameraMatricesShaderName, + 4 // webgl texture unit + ); + + this.textureModelMatrices.bindTexture( + glProgram, + modelMatricesShaderName, + 5 // webgl texture unit + ); + + this.texturePerObjectIdOffsets.bindTexture( + glProgram, + objectOffsetsShaderName, + 6 // webgl texture unit + ); + } + + /** + * + * @param {Program} glProgram + * @param {string} cameraMatricesShaderName + */ + bindPickCameraTexture(glProgram, cameraMatricesShaderName) { + this.texturePickCameraMatrices.bindTexture( + glProgram, + cameraMatricesShaderName, + 4 // webgl texture unit + ); + } + + /** + * + * @param {Program} glProgram + * @param {string} portionIdsShaderName + * @param {string} polygonIndicesShaderName + * @param {8|16|32} textureBitness + */ + bindTriangleIndicesTextures( + glProgram, + portionIdsShaderName, + polygonIndicesShaderName, + textureBitness, + ) { + this.indicesPortionIdsPerBitnessTextures[textureBitness].bindTexture( + glProgram, + portionIdsShaderName, + 7 // webgl texture unit + ); + + this.indicesPerBitnessTextures[textureBitness].bindTexture( + glProgram, + polygonIndicesShaderName, + 8 // webgl texture unit + ); + } + + /** + * + * @param {Program} glProgram + * @param {string} edgePortionIdsShaderName + * @param {string} edgeIndicesShaderName + * @param {8|16|32} textureBitness + */ + bindEdgeIndicesTextures( + glProgram, + edgePortionIdsShaderName, + edgeIndicesShaderName, + textureBitness, + ) { + this.edgeIndicesPortionIdsPerBitnessTextures[textureBitness].bindTexture( + glProgram, + edgePortionIdsShaderName, + 7 // webgl texture unit + ); + + this.edgeIndicesPerBitnessTextures[textureBitness].bindTexture( + glProgram, + edgeIndicesShaderName, + 8 // webgl texture unit + ); + } +} + diff --git a/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js b/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js new file mode 100644 index 000000000..56272df8f --- /dev/null +++ b/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureBuffer.js @@ -0,0 +1,31 @@ +/** + * @private + */ +export class TrianglesDataTextureBuffer { + + constructor() { + this.positionsCompressed = []; + this.metallicRoughness = []; + this.indices8Bits = []; + this.indices16Bits = []; + this.indices32Bits = []; + this.edgeIndices8Bits = []; + this.edgeIndices16Bits = []; + this.edgeIndices32Bits = []; + this.perObjectColors = []; + this.perObjectPickColors = []; + this.perObjectSolid = []; + this.perObjectOffsets = []; + this.perObjectPositionsDecodeMatrices = []; + this.perObjectInstancePositioningMatrices = []; + this.perObjectVertexBases = []; + this.perObjectIndexBaseOffsets = []; + this.perObjectEdgeIndexBaseOffsets = []; + this.perTriangleNumberPortionId8Bits = []; + this.perTriangleNumberPortionId16Bits = []; + this.perTriangleNumberPortionId32Bits = []; + this.perEdgeNumberPortionId8Bits = []; + this.perEdgeNumberPortionId16Bits = []; + this.perEdgeNumberPortionId32Bits = []; + } +} diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureLayer.js b/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureLayer.js similarity index 60% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureLayer.js rename to src/viewer/scene/model/dtx/triangles/TrianglesDataTextureLayer.js index 47f87bf6d..e3666541e 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureLayer.js +++ b/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureLayer.js @@ -1,39 +1,31 @@ - import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js'; import {RENDER_PASSES} from '../../RENDER_PASSES.js'; - -import {math} from "../../../../../math/math.js"; -import {RenderState} from "../../../../../webgl/RenderState.js"; -import {geometryCompressionUtils} from "../../../../../math/geometryCompressionUtils.js"; +import {math} from "../../../math/math.js"; +import {RenderState} from "../../../webgl/RenderState.js"; +import {geometryCompressionUtils} from "../../../math/geometryCompressionUtils.js"; import {getDataTextureRenderers} from "./TrianglesDataTextureRenderers.js"; import {TrianglesDataTextureBuffer} from "./TrianglesDataTextureBuffer.js"; -import * as uniquifyPositions from "./calculateUniquePositions.js"; -import { rebucketPositions } from "./rebucketPositions.js"; -import { - dataTextureRamStats, - DataTextureState, - DataTextureGenerator -} from "../DataTextureState.js" - -import { DataTextureSceneModel } from '../../../DataTextureSceneModel.js'; +import {DataTextureState} from "./DataTextureState.js" +import {DataTextureGenerator} from "./DataTextureGenerator"; +import {dataTextureRamStats} from "./dataTextureRamStats"; /** * 12-bits allowed for object ids. - * + * * Limits the per-object texture height in the layer. */ const MAX_NUMBER_OF_OBJECTS_IN_LAYER = (1 << 16); /** * 4096 is max data texture height - * + * * Limits the aggregated geometry texture height in the layer. */ const MAX_DATA_TEXTURE_HEIGHT = (1 << 12); /** * Align `indices` and `edgeIndices` memory layout to 8 elements. - * + * * Used as an optimization for the `...portionIds...` texture, so it * can just be stored 1 out of 8 `portionIds` corresponding to a given * `triangle-index` or `edge-index`. @@ -46,41 +38,27 @@ const INDICES_EDGE_INDICES_ALIGNEMENT_SIZE = 8; */ const MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE = 10; -const identityMatrix = math.identityMat4(); -const tempMat4 = math.mat4(); -const tempMat4b = math.mat4(); const tempVec4a = math.vec4([0, 0, 0, 1]); const tempVec4b = math.vec4([0, 0, 0, 1]); const tempVec4c = math.vec4([0, 0, 0, 1]); -const tempOBB3 = math.OBB3(); +const tempUint8Array4 = new Uint8Array(4); +const tempFloat32Array3 = new Float32Array(3); -const tempUint8Array4 = new Uint8Array (4); - -const tempFloat32Array3 = new Float32Array (3); - -const tempVec3a = math.vec3(); -const tempVec3b = math.vec3(); -const tempVec3c = math.vec3(); -const tempVec3d = math.vec3(); -const tempVec3e = math.vec3(); -const tempVec3f = math.vec3(); -const tempVec3g = math.vec3(); +const tempAABB3 = math.AABB3(); +const tempAABB3b = math.AABB3(); +const tempOBB3 = math.OBB3(); let _numberOfLayers = 0; /** * @private */ -class TrianglesDataTextureLayer { - /** - * @param {DataTextureSceneModel} model - * @param cfg - * @param cfg.layerIndex - * @param cfg.positionsDecodeMatrix - * @param cfg.origin - */ +export class TrianglesDataTextureLayer { + constructor(model, cfg) { + this._layerNumber = _numberOfLayers++; + dataTextureRamStats.numberOfLayers++; /** @@ -90,7 +68,7 @@ class TrianglesDataTextureLayer { this.sortId = `TrianglesDataTextureLayer-${this._layerNumber}`; /** - * Index of this TrianglesDataTextureLayer in {@link PerformanceModel#_layerList}. + * Index of this TrianglesDataTextureLayer in {@link SceneModel#_layerList}. * @type {Number} */ this.layerIndex = cfg.layerIndex; @@ -102,7 +80,7 @@ class TrianglesDataTextureLayer { /** * @type {DataTextureState} */ - this._dataTextureState = new DataTextureState (); + this._dataTextureState = new DataTextureState(); /** * @type {DataTextureGenerator} @@ -110,6 +88,7 @@ class TrianglesDataTextureLayer { this.dataTextureGenerator = new DataTextureGenerator(); this._state = new RenderState({ + origin: math.vec3(cfg.origin), metallicRoughnessBuf: null, positionsDecodeMatrix: math.mat4(), textureState: this._dataTextureState, @@ -135,28 +114,28 @@ class TrianglesDataTextureLayer { this._numCulledLayerPortions = 0; this._modelAABB = math.collapseAABB3(); // Model-space AABB - this._portions = []; + this._subPortions = []; this._finalized = false; /** * Due to `index rebucketting` process in ```prepareMeshGeometry``` function, it's possible that a single * portion is expanded to more than 1 real sub-portion. - * + * * This Array tracks the mapping between: - * + * * - external `portionIds` as seen by consumers of this class. - * - internal `sub-portionIds` acutally managed by this class. - * + * - internal `sub-portionIds` actually managed by this class. + * * The outer index of this array is the externally seen `portionId`. * The inner value of the array, are `sub-portionIds` corresponding to the `portionId`. - * + * * @type {Array>} * @private */ - this._subPortionIdMapping = []; + this._portionToSubPortionsMap = []; - this._instancedGeometrySubPortionData = {}; + this._bucketGeometries = {}; /** * The axis-aligned World-space boundary of this TrianglesDataTextureLayer's positions. @@ -173,62 +152,40 @@ class TrianglesDataTextureLayer { /** * Returns wheter the ```TrianglesDataTextureLayer``` has room for more portions. - * - * @param {object} geometryCfg An object containing the geometrical data (`positions`, `indices`, `edgeIndices`) for the portion. - * @param {object} instancingGeometryId In case an instanced portion is to be checked, this must be the `geometryId` - * + * + * @param {object} portionCfg An object containing the geometrical data (`positions`, `indices`, `edgeIndices`) for the portion. * @returns {Boolean} Wheter the requested portion can be created */ - canCreatePortion(geometryCfg, instancingGeometryId = null) { + canCreatePortion(portionCfg) { if (this._finalized) { throw "Already finalized"; } - - const state = this._state; - - const newPortions = geometryCfg.preparedBuckets.length; - - if ((this._numPortions + newPortions) > MAX_NUMBER_OF_OBJECTS_IN_LAYER) - { + const numNewPortions = portionCfg.buckets.length; + if ((this._numPortions + numNewPortions) > MAX_NUMBER_OF_OBJECTS_IN_LAYER) { dataTextureRamStats.cannotCreatePortion.because10BitsObjectId++; } - - let retVal = (this._numPortions + newPortions) <= MAX_NUMBER_OF_OBJECTS_IN_LAYER; - - const alreadyHasPortionGeometry = - instancingGeometryId !== null && - (instancingGeometryId + "#0") in this._instancedGeometrySubPortionData; - + let retVal = (this._numPortions + numNewPortions) <= MAX_NUMBER_OF_OBJECTS_IN_LAYER; + const bucketIndex = 0; // TODO: Is this a bug? + const bucketGeometryId = portionCfg.geometryId !== undefined && portionCfg.geometryId !== null + ? `${portionCfg.geometryId}#${bucketIndex}` + : `${portionCfg.id}#${bucketIndex}`; + const alreadyHasPortionGeometry = this._bucketGeometries[bucketGeometryId]; if (!alreadyHasPortionGeometry) { - const maxIndicesOfAnyBits = Math.max ( - state.numIndices8Bits, - state.numIndices16Bits, - state.numIndices32Bits, - ) ; - + const maxIndicesOfAnyBits = Math.max(this._state.numIndices8Bits, this._state.numIndices16Bits, this._state.numIndices32Bits,); let numVertices = 0; - let numIndices = geometryCfg.indices.length / 3; - - geometryCfg.preparedBuckets.forEach(bucket => { - numVertices += bucket.positions.length / 3; + let numIndices = 0; + portionCfg.buckets.forEach(bucket => { + numVertices += bucket.positionsCompressed.length / 3; + numIndices += bucket.indices.length / 3; }); - - if ((state.numVertices + numVertices) > MAX_DATA_TEXTURE_HEIGHT * 4096 || - (maxIndicesOfAnyBits + numIndices) > MAX_DATA_TEXTURE_HEIGHT * 4096) - { + if ((this._state.numVertices + numVertices) > MAX_DATA_TEXTURE_HEIGHT * 4096 || + (maxIndicesOfAnyBits + numIndices) > MAX_DATA_TEXTURE_HEIGHT * 4096) { dataTextureRamStats.cannotCreatePortion.becauseTextureSize++; } - retVal &&= - (state.numVertices + numVertices) <= MAX_DATA_TEXTURE_HEIGHT * 4096 && + (this._state.numVertices + numVertices) <= MAX_DATA_TEXTURE_HEIGHT * 4096 && (maxIndicesOfAnyBits + numIndices) <= MAX_DATA_TEXTURE_HEIGHT * 4096; } - - // if (!retVal) - // { - // console.log ("Cannot create portion!"); - // } - return retVal; } @@ -237,75 +194,55 @@ class TrianglesDataTextureLayer { * * Gives the portion the specified geometry, color and matrix. * - * @param cfg.positions Flat float Local-space positions array. - * @param [cfg.normals] Flat float normals array. - * @param [cfg.colors] Flat float colors array. - * @param cfg.indices Flat int indices array. - * @param [cfg.edgeIndices] Flat int edges indices array. - * @param cfg.color Quantized RGB color [0..255,0..255,0..255,0..255] - * @param cfg.metallic Metalness factor [0..255] - * @param cfg.roughness Roughness factor [0..255] - * @param cfg.opacity Opacity [0..255] - * @param [cfg.meshMatrix] Flat float 4x4 matrix - * @param [cfg.worldMatrix] Flat float 4x4 matrix - * @param cfg.worldAABB Flat float AABB World-space AABB - * @param cfg.pickColor Quantized pick color + * @param portionCfg.positionsCompressed Flat float Local-space positionsCompressed array. + * @param [portionCfg.normals] Flat float normals array. + * @param [portionCfg.colors] Flat float colors array. + * @param portionCfg.indices Flat int indices array. + * @param [portionCfg.edgeIndices] Flat int edges indices array. + * @param portionCfg.color Quantized RGB color [0..255,0..255,0..255,0..255] + * @param portionCfg.metallic Metalness factor [0..255] + * @param portionCfg.roughness Roughness factor [0..255] + * @param portionCfg.opacity Opacity [0..255] + * @param [portionCfg.meshMatrix] Flat float 4x4 matrix + * @param [portionCfg.sceneModelMatrix] Flat float 4x4 matrix + * @param portionCfg.worldAABB Flat float AABB World-space AABB + * @param portionCfg.pickColor Quantized pick color * @returns {number} Portion ID */ - createPortion (geometryCfg, objectCfg = null) { + createPortion(portionCfg) { + if (this._finalized) { throw "Already finalized"; } - const instancing = objectCfg !== null; - - let portionId = this._subPortionIdMapping.length; - - const portionIdFanout = []; - this._subPortionIdMapping.push (portionIdFanout); + const subPortionIds = []; + const portionAABB = portionCfg.worldAABB; - const objectAABB = instancing ? objectCfg.aabb : geometryCfg.aabb; - - geometryCfg.preparedBuckets.forEach((bucketGeometry, bucketIndex) => { - let geometrySubPortionData; + portionCfg.buckets.forEach((bucket, bucketIndex) => { - if (instancing) { - const key = geometryCfg.id + "#" + bucketIndex; + const bucketGeometryId = portionCfg.geometryId !== undefined && portionCfg.geometryId !== null + ? `${portionCfg.geometryId}#${bucketIndex}` + : `${portionCfg.id}#${bucketIndex}`; - if (!(key in this._instancedGeometrySubPortionData)) { - this._instancedGeometrySubPortionData[key] = this.createSubPortionGeometry (bucketGeometry); - } - - geometrySubPortionData = this._instancedGeometrySubPortionData[key]; - } else { - geometrySubPortionData = this.createSubPortionGeometry (bucketGeometry); + let bucketGeometry = this._bucketGeometries[bucketGeometryId]; + if (!bucketGeometry) { + bucketGeometry = this._createBucketGeometry(portionCfg, bucket); + this._bucketGeometries[bucketGeometryId] = bucketGeometry; } - - const aabb = math.collapseAABB3(); - - const subPortionId = this.createSubPortionObject ( - instancing ? objectCfg : geometryCfg, - geometrySubPortionData, - bucketGeometry.positions, - geometryCfg.positionsDecodeMatrix, - instancing ? objectCfg.origin : geometryCfg.origin, - aabb, - instancing, - geometryCfg.solid - ); - - math.expandAABB3(objectAABB, aabb); - - portionIdFanout.push (subPortionId); + const subPortionAABB = math.collapseAABB3(tempAABB3b); + const subPortionId = this._createSubPortion(portionCfg, bucketGeometry, bucket, subPortionAABB); + math.expandAABB3(portionAABB, subPortionAABB); + subPortionIds.push(subPortionId); }); + const portionId = this._portionToSubPortionsMap.length; + this._portionToSubPortionsMap.push(subPortionIds); this.model.numPortions++; return portionId; } - createSubPortionGeometry(cfg) { - const state = this._state; + _createBucketGeometry(portionCfg, bucket) { // Indices alignement // This will make every mesh consume a multiple of INDICES_EDGE_INDICES_ALIGNEMENT_SIZE @@ -313,18 +250,14 @@ class TrianglesDataTextureLayer { // - a memory optimization of factor INDICES_EDGE_INDICES_ALIGNEMENT_SIZE // - in exchange for a small RAM overhead // (by adding some padding until a size that is multiple of INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) - if (cfg.indices) - { - const alignedIndicesLen = Math.ceil ((cfg.indices.length / 3) / INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) * INDICES_EDGE_INDICES_ALIGNEMENT_SIZE * 3; - - // Take notice of the introduced GPU storage overhead - dataTextureRamStats.overheadSizeAlignementIndices += 2 * (alignedIndicesLen - cfg.indices.length); + if (bucket.indices) { + const alignedIndicesLen = Math.ceil((bucket.indices.length / 3) / INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) * INDICES_EDGE_INDICES_ALIGNEMENT_SIZE * 3; + dataTextureRamStats.overheadSizeAlignementIndices += 2 * (alignedIndicesLen - bucket.indices.length); const alignedIndices = new Uint32Array(alignedIndicesLen); alignedIndices.fill(0); - alignedIndices.set (cfg.indices); - - cfg.indices = alignedIndices; + alignedIndices.set(bucket.indices); + bucket.indices = alignedIndices; } // EdgeIndices alignement @@ -333,280 +266,225 @@ class TrianglesDataTextureLayer { // - a memory optimization of factor INDICES_EDGE_INDICES_ALIGNEMENT_SIZE // - in exchange for a small RAM overhead // (by adding some padding until a size that is multiple of INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) - if (cfg.edgeIndices) - { - const alignedEdgeIndicesLen = Math.ceil ((cfg.edgeIndices.length / 2) / INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) * INDICES_EDGE_INDICES_ALIGNEMENT_SIZE * 2; - - // Take notice of the introduced GPU storage overhead - dataTextureRamStats.overheadSizeAlignementEdgeIndices += 2 * (alignedEdgeIndicesLen - cfg.edgeIndices.length); + if (bucket.edgeIndices) { + const alignedEdgeIndicesLen = Math.ceil((bucket.edgeIndices.length / 2) / INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) * INDICES_EDGE_INDICES_ALIGNEMENT_SIZE * 2; + dataTextureRamStats.overheadSizeAlignementEdgeIndices += 2 * (alignedEdgeIndicesLen - bucket.edgeIndices.length); const alignedEdgeIndices = new Uint32Array(alignedEdgeIndicesLen); alignedEdgeIndices.fill(0); - alignedEdgeIndices.set (cfg.edgeIndices); - cfg.edgeIndices = alignedEdgeIndices; + alignedEdgeIndices.set(bucket.edgeIndices); + bucket.edgeIndices = alignedEdgeIndices; } - const positions = cfg.positions; - const indices = cfg.indices; - const edgeIndices = cfg.edgeIndices; - + const positionsCompressed = bucket.positionsCompressed; + const indices = bucket.indices; + const edgeIndices = bucket.edgeIndices; const buffer = this._buffer; - const positionsVertexBase = buffer.positions.length / 3; - const numVerts = positions.length / 3; + const vertexBase = buffer.positionsCompressed.length / 3; + const numVertices = positionsCompressed.length / 3; - // console.log (positions); - - // Load positions data into buffer - for (let i = 0, len = positions.length; i < len; i++) { - buffer.positions.push(positions[i]); + for (let i = 0, len = positionsCompressed.length; i < len; i++) { + buffer.positionsCompressed.push(positionsCompressed[i]); } - - // Load triangle indices data into buffer - let indicesBase; + let indicesBase; let numTriangles = 0; - if (indices) { numTriangles = indices.length / 3; - let indicesBuffer; - - // Select the appropiate bitness-based bucket for indices - if (numVerts <= (1<< 8)) { + if (numVertices <= (1 << 8)) { indicesBuffer = buffer.indices8Bits; - } else if (numVerts <= (1<< 16)) { + } else if (numVertices <= (1 << 16)) { indicesBuffer = buffer.indices16Bits; } else { indicesBuffer = buffer.indices32Bits; } - indicesBase = indicesBuffer.length / 3; - for (let i = 0, len = indices.length; i < len; i++) { indicesBuffer.push(indices[i]); } } - - // Load edge indices data into buffer - let edgeIndicesBase; + let edgeIndicesBase; let numEdges = 0; - if (edgeIndices) { numEdges = edgeIndices.length / 2; - let edgeIndicesBuffer; - - // Select the appropiate bitness-based bucket for edgeIndices - if (numVerts <= (1<< 8)) { + if (numVertices <= (1 << 8)) { edgeIndicesBuffer = buffer.edgeIndices8Bits; - } else if (numVerts <= (1<< 16)) { + } else if (numVertices <= (1 << 16)) { edgeIndicesBuffer = buffer.edgeIndices16Bits; } else { edgeIndicesBuffer = buffer.edgeIndices32Bits; } - edgeIndicesBase = edgeIndicesBuffer.length / 2; - for (let i = 0, len = edgeIndices.length; i < len; i++) { edgeIndicesBuffer.push(edgeIndices[i]); } } - state.numVertices += numVerts; + this._state.numVertices += numVertices; dataTextureRamStats.numberOfGeometries++; - return { - vertexBase: positionsVertexBase, - numVertices: numVerts, + const localAABB = math.collapseAABB3(tempAABB3); + math.expandAABB3Points3(localAABB, bucket.positionsCompressed); + geometryCompressionUtils.decompressAABB(localAABB, portionCfg.positionsDecodeMatrix); + + const bucketGeometry = { + vertexBase, + numVertices, numTriangles, numEdges, indicesBase, - edgeIndicesBase + edgeIndicesBase, + obb: math.AABB3ToOBB3(localAABB) // NB: Memory cost while loading }; + + return bucketGeometry; } - /** - * @private - */ - createSubPortionObject(cfg, geometrySubPortionData, positions, positionsDecodeMatrix, origin, worldAABB, instancing, solid) { - const color = cfg.color; - const metallic = cfg.metallic; - const roughness = cfg.roughness; - const colors = cfg.colors; - const opacity = cfg.opacity; - const meshMatrix = cfg.meshMatrix; - const worldMatrix = cfg.worldMatrix; - const pickColor = cfg.pickColor; - // const positionsDecodeMatrix = cfg.positionsDecodeMatrix; + _createSubPortion(portionCfg, bucketGeometry, bucket, subPortionAABB) { + + const color = portionCfg.color; + const metallic = portionCfg.metallic; + const roughness = portionCfg.roughness; + const colors = portionCfg.colors; + const opacity = portionCfg.opacity; + const meshMatrix = portionCfg.meshMatrix; + const sceneModelMatrix = portionCfg.sceneModelMatrix; + const pickColor = portionCfg.pickColor; const scene = this.model.scene; const buffer = this._buffer; const state = this._state; - // Positions decode Matrix - buffer.perObjectPositionsDecodeMatrices.push (positionsDecodeMatrix); + buffer.perObjectPositionsDecodeMatrices.push(portionCfg.positionsDecodeMatrix); + buffer.perObjectInstancePositioningMatrices.push(meshMatrix); - if (instancing) { - // Mesh instance matrix - buffer.perObjectInstancePositioningMatrices.push ( - meshMatrix - ); - } else { - buffer.perObjectInstancePositioningMatrices.push (identityMatrix); - } - - // const positions = cfg.positions; - // const positionsIndex = buffer.positions.length; + // const positionsCompressed = portionCfg.positionsCompressed; + // const positionsIndex = buffer.positionsCompressed.length; // const vertsIndex = positionsIndex / 3; // Expand the world AABB with the concrete location of the object - for (let i = 0, len = positions.length; i < len; i += 3) { - tempVec4a[0] = positions[i + 0]; - tempVec4a[1] = positions[i + 1]; - tempVec4a[2] = positions[i + 2]; - math.transformPoint4(positionsDecodeMatrix || identityMatrix, tempVec4a, tempVec4b); - math.transformPoint4(meshMatrix || identityMatrix, tempVec4b, tempVec4a); - math.transformPoint4(worldMatrix || identityMatrix, tempVec4a, tempVec4b); - math.expandAABB3Point3(worldAABB, tempVec4b); + const localAABB = math.collapseAABB3(tempAABB3); + math.expandAABB3Points3(localAABB, bucket.positionsCompressed); + geometryCompressionUtils.decompressAABB(localAABB, portionCfg.positionsDecodeMatrix); + const geometryOBB = bucketGeometry.obb; + + for (let i = 0, len = geometryOBB.length; i < len; i += 4) { + tempVec4a[0] = geometryOBB[i + 0]; + tempVec4a[1] = geometryOBB[i + 1]; + tempVec4a[2] = geometryOBB[i + 2]; + tempVec4a[3] = 1.0; + math.transformPoint4(meshMatrix, tempVec4a, tempVec4b); + if (sceneModelMatrix) { + math.transformPoint4(sceneModelMatrix, tempVec4b, tempVec4c); + math.expandAABB3Point3(subPortionAABB, tempVec4c); + } else { + math.expandAABB3Point3(subPortionAABB, tempVec4b); + } } - // Adjust the world AABB with the object `origin` - if (origin) { - this._state.origin = origin; - worldAABB[0] += origin[0]; - worldAABB[1] += origin[1]; - worldAABB[2] += origin[2]; - worldAABB[3] += origin[0]; - worldAABB[4] += origin[1]; - worldAABB[5] += origin[2]; - } + // if (this._state.origin) { + const origin = this._state.origin; + subPortionAABB[0] += origin[0]; + subPortionAABB[1] += origin[1]; + subPortionAABB[2] += origin[2]; + subPortionAABB[3] += origin[0]; + subPortionAABB[4] += origin[1]; + subPortionAABB[5] += origin[2]; + // } - math.expandAABB3(this.aabb, worldAABB); + math.expandAABB3(this.aabb, subPortionAABB); - buffer.perObjectSolid.push (solid); + buffer.perObjectSolid.push(!!portionCfg.solid); if (colors) { - buffer.perObjectColors.push ([ - colors[0] * 255, - colors[1] * 255, - colors[2] * 255, - 255 - ]); - } else if (color) { - buffer.perObjectColors.push ([ - color[0], // Color is pre-quantized by PerformanceModel - color[1], - color[2], - opacity - ]); + buffer.perObjectColors.push([colors[0] * 255, colors[1] * 255, colors[2] * 255, 255]); + } else if (color) { // Color is pre-quantized by SceneModel + buffer.perObjectColors.push([color[0], color[1], color[2], opacity]); } - buffer.perObjectPickColors.push (pickColor); - - buffer.perObjectVertexBases.push (geometrySubPortionData.vertexBase); + buffer.perObjectPickColors.push(pickColor); + buffer.perObjectVertexBases.push(bucketGeometry.vertexBase); { let currentNumIndices; - - // Select the appropiate bitness-based bucket for indices - if (geometrySubPortionData.numVertices <= (1<< 8)) { + if (bucketGeometry.numVertices <= (1 << 8)) { currentNumIndices = state.numIndices8Bits; - } else if (geometrySubPortionData.numVertices <= (1<< 16)) { + } else if (bucketGeometry.numVertices <= (1 << 16)) { currentNumIndices = state.numIndices16Bits; } else { currentNumIndices = state.numIndices32Bits; } - - buffer.perObjectIndexBaseOffsets.push (currentNumIndices / 3 - geometrySubPortionData.indicesBase); + buffer.perObjectIndexBaseOffsets.push(currentNumIndices / 3 - bucketGeometry.indicesBase); } { let currentNumEdgeIndices; - - // Select the appropiate bitness-based bucket for indices - if (geometrySubPortionData.numVertices <= (1<< 8)) { + if (bucketGeometry.numVertices <= (1 << 8)) { currentNumEdgeIndices = state.numEdgeIndices8Bits; - } else if (geometrySubPortionData.numVertices <= (1<< 16)) { + } else if (bucketGeometry.numVertices <= (1 << 16)) { currentNumEdgeIndices = state.numEdgeIndices16Bits; } else { currentNumEdgeIndices = state.numEdgeIndices32Bits; } - - buffer.perObjectEdgeIndexBaseOffsets.push (currentNumEdgeIndices / 2 - geometrySubPortionData.edgeIndicesBase); + buffer.perObjectEdgeIndexBaseOffsets.push(currentNumEdgeIndices / 2 - bucketGeometry.edgeIndicesBase); } - const subPortionId = this._portions.length; - - if (geometrySubPortionData.numTriangles > 0) { - let numIndices = geometrySubPortionData.numTriangles * 3; - + const subPortionId = this._subPortions.length; + if (bucketGeometry.numTriangles > 0) { + let numIndices = bucketGeometry.numTriangles * 3; let indicesPortionIdBuffer; - - if (geometrySubPortionData.numVertices <= (1<< 8)) { + if (bucketGeometry.numVertices <= (1 << 8)) { indicesPortionIdBuffer = buffer.perTriangleNumberPortionId8Bits; state.numIndices8Bits += numIndices; - dataTextureRamStats.totalPolygons8Bits += geometrySubPortionData.numTriangles; - } else if (geometrySubPortionData.numVertices <= (1<< 16)) { + dataTextureRamStats.totalPolygons8Bits += bucketGeometry.numTriangles; + } else if (bucketGeometry.numVertices <= (1 << 16)) { indicesPortionIdBuffer = buffer.perTriangleNumberPortionId16Bits; state.numIndices16Bits += numIndices; - dataTextureRamStats.totalPolygons16Bits += geometrySubPortionData.numTriangles; + dataTextureRamStats.totalPolygons16Bits += bucketGeometry.numTriangles; } else { indicesPortionIdBuffer = buffer.perTriangleNumberPortionId32Bits; state.numIndices32Bits += numIndices; - dataTextureRamStats.totalPolygons32Bits += geometrySubPortionData.numTriangles; + dataTextureRamStats.totalPolygons32Bits += bucketGeometry.numTriangles; } - - dataTextureRamStats.totalPolygons += geometrySubPortionData.numTriangles; - - for (let i = 0; i < geometrySubPortionData.numTriangles; i += INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) { - indicesPortionIdBuffer.push (subPortionId); + dataTextureRamStats.totalPolygons += bucketGeometry.numTriangles; + for (let i = 0; i < bucketGeometry.numTriangles; i += INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) { + indicesPortionIdBuffer.push(subPortionId); } } - if (geometrySubPortionData.numEdges > 0) { - let numEdgeIndices = geometrySubPortionData.numEdges * 2; + if (bucketGeometry.numEdges > 0) { + let numEdgeIndices = bucketGeometry.numEdges * 2; let edgeIndicesPortionIdBuffer; - - if (geometrySubPortionData.numVertices <= (1<< 8)) { + if (bucketGeometry.numVertices <= (1 << 8)) { edgeIndicesPortionIdBuffer = buffer.perEdgeNumberPortionId8Bits; state.numEdgeIndices8Bits += numEdgeIndices; - dataTextureRamStats.totalEdges8Bits += geometrySubPortionData.numEdges; - } else if (geometrySubPortionData.numVertices <= (1<< 16)) { + dataTextureRamStats.totalEdges8Bits += bucketGeometry.numEdges; + } else if (bucketGeometry.numVertices <= (1 << 16)) { edgeIndicesPortionIdBuffer = buffer.perEdgeNumberPortionId16Bits; state.numEdgeIndices16Bits += numEdgeIndices; - dataTextureRamStats.totalEdges16Bits += geometrySubPortionData.numEdges; + dataTextureRamStats.totalEdges16Bits += bucketGeometry.numEdges; } else { edgeIndicesPortionIdBuffer = buffer.perEdgeNumberPortionId32Bits; state.numEdgeIndices32Bits += numEdgeIndices; - dataTextureRamStats.totalEdges32Bits += geometrySubPortionData.numEdges; + dataTextureRamStats.totalEdges32Bits += bucketGeometry.numEdges; } - - dataTextureRamStats.totalEdges += geometrySubPortionData.numEdges; - - for (let i = 0; i < geometrySubPortionData.numEdges; i += INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) { - edgeIndicesPortionIdBuffer.push (subPortionId); + dataTextureRamStats.totalEdges += bucketGeometry.numEdges; + for (let i = 0; i < bucketGeometry.numEdges; i += INDICES_EDGE_INDICES_ALIGNEMENT_SIZE) { + edgeIndicesPortionIdBuffer.push(subPortionId); } } - buffer.perObjectOffsets.push([ 0, 0, 0 ]); - - // if (scene.pickSurfacePrecisionEnabled) { - // // Quantized in-memory positions are initialized in finalize() - // if (indices) { - // portion.indices = indices; - // } - // if (scene.entityOffsetsEnabled) { - // portion.offset = new Float32Array(3); - // } - // } + // buffer.perObjectOffsets.push([0, 0, 0]); - this._portions.push({ + this._subPortions.push({ // vertsBase: vertsIndex, - numVerts: geometrySubPortionData.numTriangles + numVertices: bucketGeometry.numTriangles }); this._numPortions++; @@ -616,14 +494,18 @@ class TrianglesDataTextureLayer { return subPortionId; } + // updatePickCameratexture(pickViewMatrix, pickCameraMatrix) { + // this._dataTextureState.texturePickCameraMatrices.updateViewMatrix(pickViewMatrix, pickCameraMatrix); + // } + /** * Builds data textures from the appended geometries and loads them into the GPU. - * + * * No more portions can then be created. */ finalize() { + if (this._finalized) { - this.model.error("Already finalized"); return; } @@ -634,10 +516,7 @@ class TrianglesDataTextureLayer { state.gl = gl; - // Generate all the needed textures in the layer - - // per-object colors and flags texture - textureState.texturePerObjectIdColorsAndFlags = this.dataTextureGenerator.generateTextureForColorsAndFlags ( + textureState.texturePerObjectIdColorsAndFlags = this.dataTextureGenerator.generateTextureForColorsAndFlags( gl, buffer.perObjectColors, buffer.perObjectPickColors, @@ -647,117 +526,106 @@ class TrianglesDataTextureLayer { buffer.perObjectSolid ); - // per-object XYZ offsets - textureState.texturePerObjectIdOffsets = this.dataTextureGenerator.generateTextureForObjectOffsets ( + textureState.texturePerObjectIdOffsets = this.dataTextureGenerator.generateTextureForObjectOffsets( gl, this._numPortions ); - // per-object positions decode matrices texture - textureState.texturePerObjectIdPositionsDecodeMatrix = this.dataTextureGenerator.generateTextureForPositionsDecodeMatrices ( + textureState.texturePerObjectIdPositionsDecodeMatrix = this.dataTextureGenerator.generateTextureForPositionsDecodeMatrices( gl, buffer.perObjectPositionsDecodeMatrices, buffer.perObjectInstancePositioningMatrices - ); + ); // position coordinates texture - textureState.texturePerVertexIdCoordinates = this.dataTextureGenerator.generateTextureForPositions ( + textureState.texturePerVertexIdCoordinates = this.dataTextureGenerator.generateTextureForPositions( gl, - buffer.positions + buffer.positionsCompressed ); // portion Id triangles texture - textureState.texturePerPolygonIdPortionIds8Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds ( + textureState.texturePerPolygonIdPortionIds8Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds( gl, buffer.perTriangleNumberPortionId8Bits ); - textureState.texturePerPolygonIdPortionIds16Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds ( + textureState.texturePerPolygonIdPortionIds16Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds( gl, buffer.perTriangleNumberPortionId16Bits ); - textureState.texturePerPolygonIdPortionIds32Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds ( + textureState.texturePerPolygonIdPortionIds32Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds( gl, buffer.perTriangleNumberPortionId32Bits ); // portion Id texture for edges - if (buffer.perEdgeNumberPortionId8Bits.length > 0) - { - textureState.texturePerEdgeIdPortionIds8Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds ( + if (buffer.perEdgeNumberPortionId8Bits.length > 0) { + textureState.texturePerEdgeIdPortionIds8Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds( gl, buffer.perEdgeNumberPortionId8Bits ); } - if (buffer.perEdgeNumberPortionId16Bits.length > 0) - { - textureState.texturePerEdgeIdPortionIds16Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds ( - gl, - buffer.perEdgeNumberPortionId16Bits - ); + if (buffer.perEdgeNumberPortionId16Bits.length > 0) { + textureState.texturePerEdgeIdPortionIds16Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds( + gl, + buffer.perEdgeNumberPortionId16Bits + ); } - if (buffer.perEdgeNumberPortionId32Bits.length > 0) - { - textureState.texturePerEdgeIdPortionIds32Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds ( + if (buffer.perEdgeNumberPortionId32Bits.length > 0) { + textureState.texturePerEdgeIdPortionIds32Bits = this.dataTextureGenerator.generateTextureForPackedPortionIds( gl, buffer.perEdgeNumberPortionId32Bits ); } // indices texture - if (buffer.indices8Bits.length > 0) - { - textureState.texturePerPolygonIdIndices8Bits = this.dataTextureGenerator.generateTextureFor8BitIndices ( + if (buffer.indices8Bits.length > 0) { + textureState.texturePerPolygonIdIndices8Bits = this.dataTextureGenerator.generateTextureFor8BitIndices( gl, buffer.indices8Bits ); } - if (buffer.indices16Bits.length > 0) - { - textureState.texturePerPolygonIdIndices16Bits = this.dataTextureGenerator.generateTextureFor16BitIndices ( + if (buffer.indices16Bits.length > 0) { + textureState.texturePerPolygonIdIndices16Bits = this.dataTextureGenerator.generateTextureFor16BitIndices( gl, buffer.indices16Bits ); } - if (buffer.indices32Bits.length > 0) - { - textureState.texturePerPolygonIdIndices32Bits = this.dataTextureGenerator.generateTextureFor32BitIndices ( + if (buffer.indices32Bits.length > 0) { + textureState.texturePerPolygonIdIndices32Bits = this.dataTextureGenerator.generateTextureFor32BitIndices( gl, buffer.indices32Bits ); } - + // edge indices texture - if (buffer.edgeIndices8Bits.length > 0) - { - textureState.texturePerPolygonIdEdgeIndices8Bits = this.dataTextureGenerator.generateTextureFor8BitsEdgeIndices ( + if (buffer.edgeIndices8Bits.length > 0) { + textureState.texturePerPolygonIdEdgeIndices8Bits = this.dataTextureGenerator.generateTextureFor8BitsEdgeIndices( gl, buffer.edgeIndices8Bits ); } - - if (buffer.edgeIndices16Bits.length > 0) - { - textureState.texturePerPolygonIdEdgeIndices16Bits = this.dataTextureGenerator.generateTextureFor16BitsEdgeIndices ( + + if (buffer.edgeIndices16Bits.length > 0) { + textureState.texturePerPolygonIdEdgeIndices16Bits = this.dataTextureGenerator.generateTextureFor16BitsEdgeIndices( gl, buffer.edgeIndices16Bits ); } - - if (buffer.edgeIndices32Bits.length > 0) - { - textureState.texturePerPolygonIdEdgeIndices32Bits = this.dataTextureGenerator.generateTextureFor32BitsEdgeIndices ( + + if (buffer.edgeIndices32Bits.length > 0) { + textureState.texturePerPolygonIdEdgeIndices32Bits = this.dataTextureGenerator.generateTextureFor32BitsEdgeIndices( gl, buffer.edgeIndices32Bits ); } - + // if (buffer.metallicRoughness.length > 0) { // const metallicRoughness = new Uint8Array(buffer.metallicRoughness); // let normalized = false; @@ -765,9 +633,8 @@ class TrianglesDataTextureLayer { // } // Model matrices texture - if (!this.model._modelMatricesTexture) - { - this.model._modelMatricesTexture = this.dataTextureGenerator.generatePeformanceModelDataTexture ( + if (!this.model._modelMatricesTexture) { + this.model._modelMatricesTexture = this.dataTextureGenerator.generateModelTexture( gl, this.model ); } @@ -775,53 +642,38 @@ class TrianglesDataTextureLayer { textureState.textureModelMatrices = this.model._modelMatricesTexture; // Camera textures - if (!this.model.cameraTexture) - { - this.model.cameraTexture = this.dataTextureGenerator.generateCameraDataTexture ( - this.model.scene.canvas.gl, - this.model.scene.camera, - this.model.scene, - this._state.origin.slice () - ); - } - textureState.textureCameraMatrices = this.model.cameraTexture; + textureState.cameraTexture = this.dataTextureGenerator.generateCameraDataTexture( + this.model.scene.canvas.gl, + this.model.scene.camera, + this.model.scene, + this._state.origin.slice() + ); - if (!this.model.pickCameraTexture) - { - this.model.pickCameraTexture = this.dataTextureGenerator.generateCameraDataTexture ( - this.model.scene.canvas.gl, - this.model.scene.camera, - this.model.scene, - this._state.origin.slice (), - false - ); - } + textureState.textureCameraMatrices = textureState.cameraTexture; - textureState.texturePickCameraMatrices = this.model.pickCameraTexture; + textureState.texturePickCameraMatrices = this.dataTextureGenerator.generatePickCameraDataTexture( + this.model.scene.canvas.gl, + this.model.scene.camera, + this._state.origin.slice() + ); - // Mark the data-texture-state as finalized - textureState.finalize (); + textureState.finalize(); // Free up memory this._buffer = null; - this._instancedGeometrySubPortionData = {}; + this._bucketGeometries = {}; this._finalized = true; - } - - attachToRenderingEvent() { - const self = this; - this.model.scene.on ("rendering", function () { - if (self._deferredSetFlagsDirty) - { - self.commitDeferredFlags(); + this._onSceneRendering = this.model.scene.on("rendering", () => { + if (this._deferredSetFlagsDirty) { + this.commitDeferredFlags(); } - self.numUpdatesInFrame = 0; + this.numUpdatesInFrame = 0; }); } - + isEmpty() { return this._numPortions === 0; } @@ -959,50 +811,42 @@ class TrianglesDataTextureLayer { /** * This will _start_ a "set-flags transaction". - * + * * After invoking this method, calling setFlags/setFlags2 will not update * the colors+flags texture but only store the new flags/flag2 in the * colors+flags texture. - * + * * After invoking this method, and when all desired setFlags/setFlags2 have * been called on needed portions of the layer, invoke `commitDeferredFlags` * to actually update the texture data. - * + * * In massive "set-flags" scenarios like VFC or LOD mechanisms, the combina- * tion of `beginDeferredFlags` + `commitDeferredFlags`brings a speed-up of * up to 80x when e.g. objects are massively (un)culled 🚀. - * + * * @private */ - beginDeferredFlags () - { + beginDeferredFlags() { this._deferredSetFlagsActive = true; } /** * This will _commit_ a "set-flags transaction". - * + * * Invoking this method will update the colors+flags texture data with new * flags/flags2 set since the previous invocation of `beginDeferredFlags`. - * + * * @private */ - commitDeferredFlags () - { + commitDeferredFlags() { this._deferredSetFlagsActive = false; - - if (!this._deferredSetFlagsDirty) - { + if (!this._deferredSetFlagsDirty) { return; } - this._deferredSetFlagsDirty = false; - const gl = this.model.scene.canvas.gl; const textureState = this._dataTextureState; - - gl.bindTexture (gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); - + gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); gl.texSubImage2D( gl.TEXTURE_2D, 0, // level @@ -1014,9 +858,7 @@ class TrianglesDataTextureLayer { gl.UNSIGNED_BYTE, textureState.texturePerObjectIdColorsAndFlags._textureData ); - - gl.bindTexture (gl.TEXTURE_2D, textureState.texturePerObjectIdOffsets._texture); - + gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectIdOffsets._texture); gl.texSubImage2D( gl.TEXTURE_2D, 0, // level @@ -1034,12 +876,11 @@ class TrianglesDataTextureLayer { if (!this._finalized) { throw "Not finalized"; } - if (flags & ENTITY_FLAGS.CULLED) { - this._numCulledLayerPortions+=this._subPortionIdMapping[portionId].length; + this._numCulledLayerPortions += this._portionToSubPortionsMap[portionId].length; this.model.numCulledLayerPortions++; } else { - this._numCulledLayerPortions-=this._subPortionIdMapping[portionId].length; + this._numCulledLayerPortions -= this._portionToSubPortionsMap[portionId].length; this.model.numCulledLayerPortions--; } this._setFlags(portionId, flags, transparent); @@ -1066,64 +907,47 @@ class TrianglesDataTextureLayer { } setColor(portionId, color) { - const subPortionMapping = this._subPortionIdMapping[portionId]; - - for (let i = 0, len = subPortionMapping.length; i < len; i++) { - this._subPortionSetColor (subPortionMapping[i], color); + const subPortionIds = this._portionToSubPortionsMap[portionId]; + for (let i = 0, len = subPortionIds.length; i < len; i++) { + this._subPortionSetColor(subPortionIds[i], color); } } - /** - * @private - */ - _subPortionSetColor(portionId, color) { + _subPortionSetColor(subPortionId, color) { if (!this._finalized) { throw "Not finalized"; } - // Color const textureState = this._dataTextureState; const gl = this.model.scene.canvas.gl; - tempUint8Array4 [0] = color[0]; tempUint8Array4 [1] = color[1]; tempUint8Array4 [2] = color[2]; tempUint8Array4 [3] = color[3]; - // object colors - textureState.texturePerObjectIdColorsAndFlags._textureData.set ( - tempUint8Array4, - portionId * 32 - ); - - if (this._deferredSetFlagsActive) - { + textureState.texturePerObjectIdColorsAndFlags._textureData.set(tempUint8Array4, subPortionId * 32); + if (this._deferredSetFlagsActive) { this._deferredSetFlagsDirty = true; return; } - - if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) - { + if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) { this.beginDeferredFlags(); } - - gl.bindTexture (gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); - + gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); gl.texSubImage2D( gl.TEXTURE_2D, 0, // level - (portionId % 512) * 8, // xoffset - Math.floor (portionId / 512), // yoffset + (subPortionId % 512) * 8, // xoffset + Math.floor(subPortionId / 512), // yoffset 1, // width 1, //height gl.RGBA_INTEGER, gl.UNSIGNED_BYTE, tempUint8Array4 ); - // gl.bindTexture (gl.TEXTURE_2D, null); } - + setTransparent(portionId, flags, transparent) { if (transparent) { this._numTransparentLayerPortions++; @@ -1136,17 +960,13 @@ class TrianglesDataTextureLayer { } _setFlags(portionId, flags, transparent, deferred = false) { - const subPortionMapping = this._subPortionIdMapping[portionId]; - - for (let i = 0, len = subPortionMapping.length; i < len; i++) { - this._subPortionSetFlags (subPortionMapping[i], flags, transparent); + const subPortionIds = this._portionToSubPortionsMap[portionId]; + for (let i = 0, len = subPortionIds.length; i < len; i++) { + this._subPortionSetFlags(subPortionIds[i], flags, transparent); } } - /** - * @private - */ - _subPortionSetFlags(portionId, flags, transparent, deferred = false) { + _subPortionSetFlags(subPortionId, flags, transparent, deferred = false) { if (!this._finalized) { throw "Not finalized"; } @@ -1210,47 +1030,34 @@ class TrianglesDataTextureLayer { // Pick - let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED; - + let f3 = (visible && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED; const textureState = this._dataTextureState; const gl = this.model.scene.canvas.gl; - tempUint8Array4 [0] = f0; tempUint8Array4 [1] = f1; tempUint8Array4 [2] = f2; tempUint8Array4 [3] = f3; - - // object flags - textureState.texturePerObjectIdColorsAndFlags._textureData.set ( - tempUint8Array4, - portionId * 32 + 8 - ); - - if (this._deferredSetFlagsActive) - { + // object flags + textureState.texturePerObjectIdColorsAndFlags._textureData.set(tempUint8Array4, subPortionId * 32 + 8); + if (this._deferredSetFlagsActive) { this._deferredSetFlagsDirty = true; return; } - - if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) - { + if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) { this.beginDeferredFlags(); } - - gl.bindTexture (gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); - + gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); gl.texSubImage2D( gl.TEXTURE_2D, 0, // level - (portionId % 512) * 8 + 2, // xoffset - Math.floor (portionId / 512), // yoffset + (subPortionId % 512) * 8 + 2, // xoffset + Math.floor(subPortionId / 512), // yoffset 1, // width 1, //height gl.RGBA_INTEGER, gl.UNSIGNED_BYTE, tempUint8Array4 ); - // gl.bindTexture (gl.TEXTURE_2D, null); } @@ -1258,59 +1065,44 @@ class TrianglesDataTextureLayer { } _setFlags2(portionId, flags, deferred = false) { - const subPortionMapping = this._subPortionIdMapping[portionId]; - - for (let i = 0, len = subPortionMapping.length; i < len; i++) { - this._subPortionSetFlags2 (subPortionMapping[i], flags); + const subPortionIds = this._portionToSubPortionsMap[portionId]; + for (let i = 0, len = subPortionIds.length; i < len; i++) { + this._subPortionSetFlags2(subPortionIds[i], flags); } } - _subPortionSetFlags2(portionId, flags, deferred = false) { + _subPortionSetFlags2(subPortionId, flags, deferred = false) { if (!this._finalized) { throw "Not finalized"; } - const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0; - const textureState = this._dataTextureState; const gl = this.model.scene.canvas.gl; - tempUint8Array4 [0] = clippable; tempUint8Array4 [1] = 0; tempUint8Array4 [2] = 1; tempUint8Array4 [3] = 2; - // object flags2 - textureState.texturePerObjectIdColorsAndFlags._textureData.set ( - tempUint8Array4, - portionId * 32 + 12 - ); - - if (this._deferredSetFlagsActive) - { + textureState.texturePerObjectIdColorsAndFlags._textureData.set(tempUint8Array4, subPortionId * 32 + 12); + if (this._deferredSetFlagsActive) { this._deferredSetFlagsDirty = true; return; } - - if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) - { + if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) { this.beginDeferredFlags(); } - - gl.bindTexture (gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); - + gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectIdColorsAndFlags._texture); gl.texSubImage2D( gl.TEXTURE_2D, 0, // level - (portionId % 512) * 8 + 3, // xoffset - Math.floor (portionId / 512), // yoffset + (subPortionId % 512) * 8 + 3, // xoffset + Math.floor(subPortionId / 512), // yoffset 1, // width 1, //height gl.RGBA_INTEGER, gl.UNSIGNED_BYTE, tempUint8Array4 ); - // gl.bindTexture (gl.TEXTURE_2D, null); } @@ -1319,14 +1111,13 @@ class TrianglesDataTextureLayer { } setOffset(portionId, offset) { - const subPortionMapping = this._subPortionIdMapping[portionId]; - - for (let i = 0, len = subPortionMapping.length; i < len; i++) { - this._subPortionSetOffset (subPortionMapping[i], offset); + const subPortionIds = this._portionToSubPortionsMap[portionId]; + for (let i = 0, len = subPortionIds.length; i < len; i++) { + this._subPortionSetOffset(subPortionIds[i], offset); } } - _subPortionSetOffset(portionId, offset) { + _subPortionSetOffset(subPortionId, offset) { if (!this._finalized) { throw "Not finalized"; } @@ -1334,45 +1125,32 @@ class TrianglesDataTextureLayer { // this.model.error("Entity#offset not enabled for this Viewer"); // See Viewer entityOffsetsEnabled // return; // } - const textureState = this._dataTextureState; const gl = this.model.scene.canvas.gl; - tempFloat32Array3 [0] = offset[0]; tempFloat32Array3 [1] = offset[1]; tempFloat32Array3 [2] = offset[2]; - // object offset - textureState.texturePerObjectIdOffsets._textureData.set ( - tempFloat32Array3, - portionId * 3 - ); - - if (this._deferredSetFlagsActive) - { + textureState.texturePerObjectIdOffsets._textureData.set(tempFloat32Array3, subPortionId * 3); + if (this._deferredSetFlagsActive) { this._deferredSetFlagsDirty = true; return; } - - if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) - { + if (++this.numUpdatesInFrame >= MAX_OBJECT_UPDATES_IN_FRAME_WITHOUT_BATCHED_UPDATE) { this.beginDeferredFlags(); } - - gl.bindTexture (gl.TEXTURE_2D, textureState.texturePerObjectIdOffsets._texture); - + gl.bindTexture(gl.TEXTURE_2D, textureState.texturePerObjectIdOffsets._texture); gl.texSubImage2D( gl.TEXTURE_2D, 0, // level 0, // x offset - portionId, // yoffset + subPortionId, // yoffset 1, // width 1, // height gl.RGB, gl.FLOAT, tempFloat32Array3 ); - // gl.bindTexture (gl.TEXTURE_2D, null); } @@ -1562,8 +1340,15 @@ class TrianglesDataTextureLayer { //---- PICKING ---------------------------------------------------------------------------------------------------- + setPickMatrices(pickViewMatrix, pickProjMatrix) { + if (this._numVisibleLayerPortions === 0) { + return; + } + this._dataTextureState.texturePickCameraMatrices.updateViewMatrix(pickViewMatrix, pickProjMatrix); + } + drawPickMesh(renderFlags, frameCtx) { - if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { + if (this._numVisibleLayerPortions === 0) { return; } this._updateBackfaceCull(renderFlags, frameCtx); @@ -1573,7 +1358,7 @@ class TrianglesDataTextureLayer { } drawPickDepths(renderFlags, frameCtx) { - if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { + if (this._numVisibleLayerPortions === 0) { return; } this._updateBackfaceCull(renderFlags, frameCtx); @@ -1582,23 +1367,23 @@ class TrianglesDataTextureLayer { } } - drawVertexDepths(renderFlags, frameCtx) { + drawSnapInitDepthBuf(renderFlags, frameCtx) { if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { return; } this._updateBackfaceCull(renderFlags, frameCtx); - if (this._dataTextureRenderers.vertexDepthRenderer) { - this._dataTextureRenderers.vertexDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); + if (this._dataTextureRenderers.snapDepthBufInitRenderer) { + this._dataTextureRenderers.snapDepthBufInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); } } - drawVertexZBufferInitializer(renderFlags, frameCtx) { + drawSnapDepths(renderFlags, frameCtx) { if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { return; } this._updateBackfaceCull(renderFlags, frameCtx); - if (this._dataTextureRenderers.vertexDepthZBufferInitializer) { - this._dataTextureRenderers.vertexDepthZBufferInitializer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); + if (this._dataTextureRenderers.vertexDepthRenderer) { + this._dataTextureRenderers.vertexDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); } } @@ -1612,179 +1397,17 @@ class TrianglesDataTextureLayer { } } - //------------------------------------------------------------------------------------------------ - - precisionRayPickSurface(portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldNormal) { - - if (!this.model.scene.pickSurfacePrecisionEnabled) { - return false; - } - - const state = this._state; - const portion = this._portions[portionId]; - - if (!portion) { - this.model.error("portion not found: " + portionId); - return false; - } - - const positions = portion.quantizedPositions; - const indices = portion.indices; - const origin = state.origin; - const offset = portion.offset; - - const rtcRayOrigin = tempVec3a; - const rtcRayDir = tempVec3b; - - rtcRayOrigin.set(origin ? math.subVec3(worldRayOrigin, origin, tempVec3c) : worldRayOrigin); // World -> RTC - rtcRayDir.set(worldRayDir); - - if (offset) { - math.subVec3(rtcRayOrigin, offset); - } - - math.transformRay(this.model.worldNormalMatrix, rtcRayOrigin, rtcRayDir, rtcRayOrigin, rtcRayDir); // RTC -> local - - const a = tempVec3d; - const b = tempVec3e; - const c = tempVec3f; - - let gotIntersect = false; - let closestDist = 0; - const closestIntersectPos = tempVec3g; - - for (let i = 0, len = indices.length; i < len; i += 3) { - - const ia = indices[i] * 3; - const ib = indices[i + 1] * 3; - const ic = indices[i + 2] * 3; - - a[0] = positions[ia]; - a[1] = positions[ia + 1]; - a[2] = positions[ia + 2]; - - b[0] = positions[ib]; - b[1] = positions[ib + 1]; - b[2] = positions[ib + 2]; - - c[0] = positions[ic]; - c[1] = positions[ic + 1]; - c[2] = positions[ic + 2]; - - math.decompressPosition(a, state.positionsDecodeMatrix); - math.decompressPosition(b, state.positionsDecodeMatrix); - math.decompressPosition(c, state.positionsDecodeMatrix); - - if (math.rayTriangleIntersect(rtcRayOrigin, rtcRayDir, a, b, c, closestIntersectPos)) { - - math.transformPoint3(this.model.worldMatrix, closestIntersectPos, closestIntersectPos); - - if (offset) { - math.addVec3(closestIntersectPos, offset); - } - - if (origin) { - math.addVec3(closestIntersectPos, origin); - } - - const dist = Math.abs(math.lenVec3(math.subVec3(closestIntersectPos, worldRayOrigin, []))); - - if (!gotIntersect || dist > closestDist) { - closestDist = dist; - worldSurfacePos.set(closestIntersectPos); - if (worldNormal) { // Not that wasteful to eagerly compute - unlikely to hit >2 surfaces on most geometry - math.triangleNormal(a, b, c, worldNormal); - } - gotIntersect = true; - } - } - } - - if (gotIntersect && worldNormal) { - math.transformVec3(this.model.worldNormalMatrix, worldNormal, worldNormal); - math.normalizeVec3(worldNormal); - } - - return gotIntersect; - } - - // --------- - destroy() { + if (this._destroyed) { + return; + } const state = this._state; if (state.metallicRoughnessBuf) { state.metallicRoughnessBuf.destroy(); state.metallicRoughnessBuf = null; } + this.model.scene.off(this._onSceneRendering); state.destroy(); + this._destroyed = true; } } - -/** - * This function applies two steps to the provided mesh geometry data: - * - * - 1st, it reduces its `.positions` to unique positions, thus removing duplicate vertices. It will adjust the `.indices` and `.edgeIndices` array accordingly to the unique `.positions`. - * - * - 2nd, it tries to do an optimization called `index rebucketting` - * - * _Rebucketting minimizes the amount of RAM usage for a given mesh geometry by trying do demote its needed index bitness._ - * - * - _for 32 bit indices, will try to demote them to 16 bit indices_ - * - _for 16 bit indices, will try to demote them to 8 bits indices_ - * - _8 bits indices are kept as-is_ - * - * The fact that 32/16/8 bits are needed for indices, depends on the number of maximumm indexable vertices within the mesh geometry: this is, the number of vertices in the mesh geometry. - * - * The function returns the same provided input `geometryCfg`, enrichened with the additional key `.preparedBukets`. - * - * @param {object} geometryCfg The mesh information containing `.positions`, `.indices`, `.edgeIndices` arrays. - * - * @returns {object} The mesh information enrichened with `.preparedBuckets` key. - */ -function prepareMeshGeometry (geometryCfg, enableVertexWelding, enableIndexRebucketing) { - let uniquePositions, uniqueIndices, uniqueEdgeIndices; - - if (enableVertexWelding) { - [ - uniquePositions, - uniqueIndices, - uniqueEdgeIndices, - ] = uniquifyPositions.uniquifyPositions ({ - positions: geometryCfg.positions, - indices: geometryCfg.indices, - edgeIndices: geometryCfg.edgeIndices - }); - } else { - uniquePositions = geometryCfg.positions; - uniqueIndices = geometryCfg.indices; - uniqueEdgeIndices = geometryCfg.edgeIndices; - } - - let buckets; - - if (enableIndexRebucketing) { - let numUniquePositions = uniquePositions.length / 3; - - buckets = rebucketPositions ( - { - positions: uniquePositions, - indices: uniqueIndices, - edgeIndices: uniqueEdgeIndices, - }, - (numUniquePositions > (1<< 16)) ? 16 : 8, - // true - ); - } else { - buckets = [{ - positions: uniquePositions, - indices: uniqueIndices, - edgeIndices: uniqueEdgeIndices, - }]; - } - - geometryCfg.preparedBuckets = buckets; - - return geometryCfg; -} - -export { prepareMeshGeometry, TrianglesDataTextureLayer }; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureRenderers.js b/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureRenderers.js similarity index 92% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureRenderers.js rename to src/viewer/scene/model/dtx/triangles/TrianglesDataTextureRenderers.js index 0e2ac1b4c..be32dc845 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureRenderers.js +++ b/src/viewer/scene/model/dtx/triangles/TrianglesDataTextureRenderers.js @@ -4,8 +4,8 @@ import {TrianglesDataTextureEdgesRenderer} from "./renderers/TrianglesDataTextur import {TrianglesDataTextureEdgesColorRenderer} from "./renderers/TrianglesDataTextureEdgesColorRenderer.js"; import {TrianglesDataTexturePickMeshRenderer} from "./renderers/TrianglesDataTexturePickMeshRenderer.js"; import {TrianglesDataTexturePickDepthRenderer} from "./renderers/TrianglesDataTexturePickDepthRenderer.js"; -import {TrianglesDataTextureVertexDepthRenderer} from "./renderers/TrianglesDataTextureVertexDepthRenderer.js"; -import {TrianglesDataTextureSnapPickZBufferInitializer} from "./renderers/TrianglesDataTextureSnapPickZBufferInitializer.js"; +import {TrianglesDataTextureSnapDepthRenderer} from "./renderers/TrianglesDataTextureSnapDepthRenderer.js"; +import {TrianglesDataTextureSnapDepthBufInitRenderer} from "./renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js"; import {TrianglesDataTexturePickNormalsRenderer} from "./renderers/TrianglesDataTexturePickNormalsRenderer.js"; import {TrianglesDataTextureOcclusionRenderer} from "./renderers/TrianglesDataTextureOcclusionRenderer.js"; import {TrianglesDataTextureDepthRenderer} from "./renderers/TrianglesDataTextureDepthRenderer.js"; @@ -80,9 +80,9 @@ class TrianglesDataTextureRenderers { this._vertexDepthRenderer.destroy(); this._vertexDepthRenderer = null; } - if (this._vertexDepthZBufferInitializer && (!this._vertexDepthZBufferInitializer.getValid())) { - this._vertexDepthZBufferInitializer.destroy(); - this._vertexDepthZBufferInitializer = null; + if (this._snapDepthBufInitRenderer && (!this._snapDepthBufInitRenderer.getValid())) { + this._snapDepthBufInitRenderer.destroy(); + this._snapDepthBufInitRenderer = null; } if (this._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) { this._pickNormalsRenderer.destroy(); @@ -195,16 +195,16 @@ class TrianglesDataTextureRenderers { get vertexDepthRenderer() { if (!this._vertexDepthRenderer) { - this._vertexDepthRenderer = new TrianglesDataTextureVertexDepthRenderer(this._scene); + this._vertexDepthRenderer = new TrianglesDataTextureSnapDepthRenderer(this._scene); } return this._vertexDepthRenderer; } - get vertexDepthZBufferInitializer() { - if (!this._vertexDepthZBufferInitializer) { - this._vertexDepthZBufferInitializer = new TrianglesDataTextureSnapPickZBufferInitializer(this._scene); + get snapDepthBufInitRenderer() { + if (!this._snapDepthBufInitRenderer) { + this._snapDepthBufInitRenderer = new TrianglesDataTextureSnapDepthBufInitRenderer(this._scene); } - return this._vertexDepthZBufferInitializer; + return this._snapDepthBufInitRenderer; } get occlusionRenderer() { @@ -264,8 +264,8 @@ class TrianglesDataTextureRenderers { if (this._vertexDepthRenderer) { this._vertexDepthRenderer.destroy(); } - if (this._vertexDepthZBufferInitializer) { - this._vertexDepthZBufferInitializer.destroy(); + if (this._snapDepthBufInitRenderer) { + this._snapDepthBufInitRenderer.destroy(); } if (this._pickNormalsRenderer) { this._pickNormalsRenderer.destroy(); diff --git a/src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js b/src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js new file mode 100644 index 000000000..293ad783e --- /dev/null +++ b/src/viewer/scene/model/dtx/triangles/calculateUniquePositions.js @@ -0,0 +1,126 @@ +/** + * @author https://github.com/tmarti, with support from https://tribia.com/ + * @license MIT + * + * This file takes a geometry given by { positionsCompressed, indices }, and returns + * equivalent { positionsCompressed, indices } arrays but which only contain unique + * positionsCompressed. + * + * The time is O(N logN) with the number of positionsCompressed due to a pre-sorting + * step, but is much more GC-friendly and actually faster than the classic O(N) + * approach based in keeping a hash-based LUT to identify unique positionsCompressed. + */ +let comparePositions = null; + +function compareVertex(a, b) { + let res; + for (let i = 0; i < 3; i++) { + if (0 !== (res = comparePositions[a * 3 + i] - comparePositions[b * 3 + i])) { + return res; + } + } + return 0; +} + +let seqInit = null; + +function setMaxNumberOfPositions(maxPositions) { + if (seqInit !== null && seqInit.length >= maxPositions) { + return; + } + seqInit = new Uint32Array(maxPositions); + for (let i = 0; i < maxPositions; i++) { + seqInit[i] = i; + } +} + +/** + * This function obtains unique positionsCompressed in the provided object + * .positionsCompressed array and calculates an index mapping, which is then + * applied to the provided object .indices and .edgeindices. + * + * The input object items are not modified, and instead new set + * of positionsCompressed, indices and edgeIndices with the applied optimization + * are returned. + * + * The algorithm, instead of being based in a hash-like LUT for + * identifying unique positionsCompressed, is based in pre-sorting the input + * positionsCompressed... + * + * (it's possible to define a _"consistent ordering"_ for the positionsCompressed + * as positionsCompressed are quantized and thus not suffer from float number + * comparison artifacts) + * + * ... so same positionsCompressed are adjacent in the sorted array, and then + * it's easy to scan linearly the sorted array. During the linear run, + * we will know that we found a different position because the comparison + * function will return != 0 between current and previous element. + * + * During this linear traversal of the array, a `unique counter` is used + * in order to calculate the mapping between original indices and unique + * indices. + * + * @param {*} mesh The input mesh to process, with `positionsCompressed`, `indices` and `edgeIndices` keys. + * + * @returns An array with 3 elements: 0 => the uniquified positionsCompressed; 1 and 2 => the remapped edges and edgeIndices arrays + */ +export function uniquifyPositions(mesh) { + const _positions = mesh.positionsCompressed; + const _indices = mesh.indices; + const _edgeIndices = mesh.edgeIndices; + + setMaxNumberOfPositions(_positions.length / 3); + + const seq = seqInit.slice(0, _positions.length / 3); + const remappings = seqInit.slice(0, _positions.length / 3); + + comparePositions = _positions; + + seq.sort(compareVertex); + + let uniqueIdx = 0 + + remappings[seq[0]] = 0; + + for (let i = 1, len = seq.length; i < len; i++) { + if (0 !== compareVertex(seq[i], seq[i - 1])) { + uniqueIdx++; + } + remappings[seq[i]] = uniqueIdx; + } + + const numUniquePositions = uniqueIdx + 1; + const newPositions = new Uint16Array(numUniquePositions * 3); + + uniqueIdx = 0 + + newPositions [uniqueIdx * 3 + 0] = _positions [seq[0] * 3 + 0]; + newPositions [uniqueIdx * 3 + 1] = _positions [seq[0] * 3 + 1]; + newPositions [uniqueIdx * 3 + 2] = _positions [seq[0] * 3 + 2]; + + for (let i = 1, len = seq.length; i < len; i++) { + if (0 !== compareVertex(seq[i], seq[i - 1])) { + uniqueIdx++; + newPositions [uniqueIdx * 3 + 0] = _positions [seq[i] * 3 + 0]; + newPositions [uniqueIdx * 3 + 1] = _positions [seq[i] * 3 + 1]; + newPositions [uniqueIdx * 3 + 2] = _positions [seq[i] * 3 + 2]; + } + remappings[seq[i]] = uniqueIdx; + } + + comparePositions = null; + + const newIndices = new Uint32Array(_indices.length); + + for (let i = 0, len = _indices.length; i < len; i++) { + newIndices[i] = remappings [_indices[i]]; + } + + const newEdgeIndices = new Uint32Array(_edgeIndices.length); + + for (let i = 0, len = _edgeIndices.length; i < len; i++) { + newEdgeIndices[i] = remappings [_edgeIndices[i]]; + } + + return [newPositions, newIndices, newEdgeIndices]; +} \ No newline at end of file diff --git a/src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js b/src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js new file mode 100644 index 000000000..e183a8ddd --- /dev/null +++ b/src/viewer/scene/model/dtx/triangles/dataTextureRamStats.js @@ -0,0 +1,54 @@ +export const dataTextureRamStats = { + sizeDataColorsAndFlags: 0, + sizeDataPositionDecodeMatrices: 0, + sizeDataTextureOffsets: 0, + sizeDataTexturePositions: 0, + sizeDataTextureIndices: 0, + sizeDataTextureEdgeIndices: 0, + sizeDataTexturePortionIds: 0, + numberOfGeometries: 0, + numberOfPortions: 0, + numberOfLayers: 0, + numberOfTextures: 0, + totalPolygons: 0, + totalPolygons8Bits: 0, + totalPolygons16Bits: 0, + totalPolygons32Bits: 0, + totalEdges: 0, + totalEdges8Bits: 0, + totalEdges16Bits: 0, + totalEdges32Bits: 0, + cannotCreatePortion: { + because10BitsObjectId: 0, + becauseTextureSize: 0, + }, + overheadSizeAlignementIndices: 0, + overheadSizeAlignementEdgeIndices: 0, +}; + +window.printDataTextureRamStats = function () { + + console.log(JSON.stringify(dataTextureRamStats, null, 4)); + + let totalRamSize = 0; + + Object.keys(dataTextureRamStats).forEach(key => { + if (key.startsWith("size")) { + totalRamSize += dataTextureRamStats[key]; + } + }); + + console.log(`Total size ${totalRamSize} bytes (${(totalRamSize / 1000 / 1000).toFixed(2)} MB)`); + console.log(`Avg bytes / triangle: ${(totalRamSize / dataTextureRamStats.totalPolygons).toFixed(2)}`); + + let percentualRamStats = {}; + + Object.keys(dataTextureRamStats).forEach(key => { + if (key.startsWith("size")) { + percentualRamStats[key] = + `${(dataTextureRamStats[key] / totalRamSize * 100).toFixed(2)} % of total`; + } + }); + + console.log(JSON.stringify({percentualRamUsage: percentualRamStats}, null, 4)); +}; diff --git a/src/viewer/scene/model/dtx/triangles/rebucketPositions.js b/src/viewer/scene/model/dtx/triangles/rebucketPositions.js new file mode 100644 index 000000000..d5193865a --- /dev/null +++ b/src/viewer/scene/model/dtx/triangles/rebucketPositions.js @@ -0,0 +1,347 @@ +/** + * @author https://github.com/tmarti, with support from https://tribia.com/ + * @license MIT + **/ + +const MAX_RE_BUCKET_FAN_OUT = 8; + +let bucketsForIndices = null; + +function compareBuckets(a, b) { + const aa = a * 3; + const bb = b * 3; + let aa1, aa2, aa3, bb1, bb2, bb3; + const minBucketA = Math.min( + aa1 = bucketsForIndices[aa], + aa2 = bucketsForIndices[aa + 1], + aa3 = bucketsForIndices[aa + 2] + ); + const minBucketB = Math.min( + bb1 = bucketsForIndices[bb], + bb2 = bucketsForIndices[bb + 1], + bb3 = bucketsForIndices[bb + 2] + ); + if (minBucketA !== minBucketB) { + return minBucketA - minBucketB; + } + const maxBucketA = Math.max(aa1, aa2, aa3); + const maxBucketB = Math.max(bb1, bb2, bb3,); + if (maxBucketA !== maxBucketB) { + return maxBucketA - maxBucketB; + } + return 0; +} + +function preSortIndices(indices, bitsPerBucket) { + const seq = new Int32Array(indices.length / 3); + for (let i = 0, len = seq.length; i < len; i++) { + seq[i] = i; + } + bucketsForIndices = new Int32Array(indices.length); + for (let i = 0, len = indices.length; i < len; i++) { + bucketsForIndices[i] = indices[i] >> bitsPerBucket; + } + seq.sort(compareBuckets); + const sortedIndices = new Int32Array(indices.length); + for (let i = 0, len = seq.length; i < len; i++) { + sortedIndices[i * 3 + 0] = indices[seq[i] * 3 + 0]; + sortedIndices[i * 3 + 1] = indices[seq[i] * 3 + 1]; + sortedIndices[i * 3 + 2] = indices[seq[i] * 3 + 2]; + } + return sortedIndices; +} + +let compareEdgeIndices = null; + +function compareIndices(a, b) { + let retVal = compareEdgeIndices[a * 2] - compareEdgeIndices[b * 2]; + if (retVal !== 0) { + return retVal; + } + return compareEdgeIndices[a * 2 + 1] - compareEdgeIndices[b * 2 + 1]; +} + +function preSortEdgeIndices(edgeIndices) { + if ((edgeIndices || []).length === 0) { + return []; + } + let seq = new Int32Array(edgeIndices.length / 2); + for (let i = 0, len = seq.length; i < len; i++) { + seq[i] = i; + } + for (let i = 0, j = 0, len = edgeIndices.length; i < len; i += 2) { + if (edgeIndices[i] > edgeIndices[i + 1]) { + let tmp = edgeIndices[i]; + edgeIndices[i] = edgeIndices[i + 1]; + edgeIndices[i + 1] = tmp; + } + } + compareEdgeIndices = new Int32Array(edgeIndices); + seq.sort(compareIndices); + const sortedEdgeIndices = new Int32Array(edgeIndices.length); + for (let i = 0, len = seq.length; i < len; i++) { + sortedEdgeIndices[i * 2 + 0] = edgeIndices[seq[i] * 2 + 0]; + sortedEdgeIndices[i * 2 + 1] = edgeIndices[seq[i] * 2 + 1]; + } + return sortedEdgeIndices; +} + +function rebucketPositions(mesh, bitsPerBucket, checkResult = false) { + const positionsCompressed = (mesh.positionsCompressed || []); + const indices = preSortIndices(mesh.indices || [], bitsPerBucket); + const edgeIndices = preSortEdgeIndices(mesh.edgeIndices || []); + + function edgeSearch(el0, el1) { // Code adapted from https://stackoverflow.com/questions/22697936/binary-search-in-javascript + if (el0 > el1) { + let tmp = el0; + el0 = el1; + el1 = tmp; + } + + function compare_fn(a, b) { + if (a !== el0) { + return el0 - a; + } + if (b !== el1) { + return el1 - b; + } + return 0; + } + + let m = 0; + let n = (edgeIndices.length >> 1) - 1; + while (m <= n) { + const k = (n + m) >> 1; + const cmp = compare_fn(edgeIndices[k * 2], edgeIndices[k * 2 + 1]); + if (cmp > 0) { + m = k + 1; + } else if (cmp < 0) { + n = k - 1; + } else { + return k; + } + } + return -m - 1; + } + + const alreadyOutputEdgeIndices = new Int32Array(edgeIndices.length / 2); + alreadyOutputEdgeIndices.fill(0); + + const numPositions = positionsCompressed.length / 3; + + if (numPositions > ((1 << bitsPerBucket) * MAX_RE_BUCKET_FAN_OUT)) { + return [mesh]; + } + + const bucketIndicesRemap = new Int32Array(numPositions); + bucketIndicesRemap.fill(-1); + + const buckets = []; + + function addEmptyBucket() { + bucketIndicesRemap.fill(-1); + + const newBucket = { + positionsCompressed: [], + indices: [], + edgeIndices: [], + maxNumPositions: (1 << bitsPerBucket) - bitsPerBucket, + numPositions: 0, + bucketNumber: buckets.length, + }; + + buckets.push(newBucket); + + return newBucket; + } + + let currentBucket = addEmptyBucket(); + + // let currentBucket = 0; + + let retVal = 0; + + for (let i = 0, len = indices.length; i < len; i += 3) { + let additonalPositionsInBucket = 0; + + const ii0 = indices[i]; + const ii1 = indices[i + 1]; + const ii2 = indices[i + 2]; + + if (bucketIndicesRemap[ii0] === -1) { + additonalPositionsInBucket++; + } + + if (bucketIndicesRemap[ii1] === -1) { + additonalPositionsInBucket++; + } + + if (bucketIndicesRemap[ii2] === -1) { + additonalPositionsInBucket++; + } + + if ((additonalPositionsInBucket + currentBucket.numPositions) > currentBucket.maxNumPositions) { + currentBucket = addEmptyBucket(); + } + + if (currentBucket.bucketNumber > MAX_RE_BUCKET_FAN_OUT) { + return [mesh]; + } + + if (bucketIndicesRemap[ii0] === -1) { + bucketIndicesRemap[ii0] = currentBucket.numPositions++; + currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3]); + currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3 + 1]); + currentBucket.positionsCompressed.push(positionsCompressed[ii0 * 3 + 2]); + } + + if (bucketIndicesRemap[ii1] === -1) { + bucketIndicesRemap[ii1] = currentBucket.numPositions++; + currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3]); + currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3 + 1]); + currentBucket.positionsCompressed.push(positionsCompressed[ii1 * 3 + 2]); + } + + if (bucketIndicesRemap[ii2] === -1) { + bucketIndicesRemap[ii2] = currentBucket.numPositions++; + currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3]); + currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3 + 1]); + currentBucket.positionsCompressed.push(positionsCompressed[ii2 * 3 + 2]); + } + + currentBucket.indices.push(bucketIndicesRemap[ii0]); + currentBucket.indices.push(bucketIndicesRemap[ii1]); + currentBucket.indices.push(bucketIndicesRemap[ii2]); + + // Check possible edge1 + let edgeIndex; + + if ((edgeIndex = edgeSearch(ii0, ii1)) >= 0) { + if (alreadyOutputEdgeIndices[edgeIndex] === 0) { + alreadyOutputEdgeIndices[edgeIndex] = 1; + + currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]); + currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]); + } + } + + if ((edgeIndex = edgeSearch(ii0, ii2)) >= 0) { + if (alreadyOutputEdgeIndices[edgeIndex] === 0) { + alreadyOutputEdgeIndices[edgeIndex] = 1; + + currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]); + currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]); + } + } + + if ((edgeIndex = edgeSearch(ii1, ii2)) >= 0) { + if (alreadyOutputEdgeIndices[edgeIndex] === 0) { + alreadyOutputEdgeIndices[edgeIndex] = 1; + + currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2]]); + currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex * 2 + 1]]); + } + } + } + + const prevBytesPerIndex = bitsPerBucket / 8 * 2; + const newBytesPerIndex = bitsPerBucket / 8; + + const originalSize = positionsCompressed.length * 2 + (indices.length + edgeIndices.length) * prevBytesPerIndex; + + let newSize = 0; + let newPositions = -positionsCompressed.length / 3; + + buckets.forEach(bucket => { + newSize += bucket.positionsCompressed.length * 2 + (bucket.indices.length + bucket.edgeIndices.length) * newBytesPerIndex; + newPositions += bucket.positionsCompressed.length / 3; + }); + if (newSize > originalSize) { + return [mesh]; + } + if (checkResult) { + doCheckResult(buckets, mesh); + } + return buckets; +} + +function unbucket(buckets) { + const positionsCompressed = []; + const indices = []; + const edgeIndices = []; + let positionsBase = 0; + buckets.forEach(bucket => { + bucket.positionsCompressed.forEach(coord => { + positionsCompressed.push(coord); + }); + bucket.indices.forEach(index => { + indices.push(index + positionsBase); + }); + bucket.edgeIndices.forEach(edgeIndex => { + edgeIndices.push(edgeIndex + positionsBase); + }); + positionsBase += positionsCompressed.length / 3; + }); + return {positionsCompressed, indices, edgeIndices}; +} + +function doCheckResult(buckets, mesh) { + const meshDict = {}; + const edgesDict = {}; + + let edgeIndicesCount = 0; + + buckets.forEach(bucket => { + const indices = bucket.indices; + const edgeIndices = bucket.edgeIndices; + const positionsCompressed = bucket.positionsCompressed; + + for (let i = 0, len = indices.length; i < len; i += 3) { + const key = positionsCompressed[indices[i] * 3] + "_" + positionsCompressed[indices[i] * 3 + 1] + "_" + positionsCompressed[indices[i] * 3 + 2] + "/" + + positionsCompressed[indices[i + 1] * 3] + "_" + positionsCompressed[indices[i + 1] * 3 + 1] + "_" + positionsCompressed[indices[i + 1] * 3 + 2] + "/" + + positionsCompressed[indices[i + 2] * 3] + "_" + positionsCompressed[indices[i + 2] * 3 + 1] + "_" + positionsCompressed[indices[i + 2] * 3 + 2]; + meshDict[key] = true; + } + + edgeIndicesCount += bucket.edgeIndices.length / 2; + + for (let i = 0, len = edgeIndices.length; i < len; i += 2) { + const key = positionsCompressed[edgeIndices[i] * 3] + "_" + positionsCompressed[edgeIndices[i] * 3 + 1] + "_" + positionsCompressed[edgeIndices[i] * 3 + 2] + "/" + + positionsCompressed[edgeIndices[i + 1] * 3] + "_" + positionsCompressed[edgeIndices[i + 1] * 3 + 1] + "_" + positionsCompressed[edgeIndices[i + 1] * 3 + 2] + "/"; + edgesDict[key] = true; + } + }); + + { + const indices = mesh.indices; + const edgeIndices = mesh.edgeIndices; + const positionsCompressed = mesh.positionsCompressed; + + for (let i = 0, len = indices.length; i < len; i += 3) { + const key = positionsCompressed[indices[i] * 3] + "_" + positionsCompressed[indices[i] * 3 + 1] + "_" + positionsCompressed[indices[i] * 3 + 2] + "/" + + positionsCompressed[indices[i + 1] * 3] + "_" + positionsCompressed[indices[i + 1] * 3 + 1] + "_" + positionsCompressed[indices[i + 1] * 3 + 2] + "/" + + positionsCompressed[indices[i + 2] * 3] + "_" + positionsCompressed[indices[i + 2] * 3 + 1] + "_" + positionsCompressed[indices[i + 2] * 3 + 2]; + + if (!(key in meshDict)) { + console.log("Not found " + key); + throw "Ohhhh!"; + } + } + + // for (var i = 0, len = edgeIndices.length; i < len; i+=2) + // { + // var key = positionsCompressed[edgeIndices[i]*3] + "_" + positionsCompressed[edgeIndices[i]*3+1] + "_" + positionsCompressed[edgeIndices[i]*3+2] + "/" + + // positionsCompressed[edgeIndices[i+1]*3] + "_" + positionsCompressed[edgeIndices[i+1]*3+1] + "_" + positionsCompressed[edgeIndices[i+1]*3+2] + "/"; + + // if (!(key in edgesDict)) { + // var key2 = edgeIndices[i] + "_" + edgeIndices[i+1]; + + // console.log (" - Not found " + key); + // console.log (" - Not found " + key2); + // // throw "Ohhhh2!"; + // } + // } + } +} + +export {rebucketPositions} \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureColorQualityRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorQualityRenderer.js similarity index 98% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureColorQualityRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorQualityRenderer.js index f40a0b8a5..a5a1a1cb5 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureColorQualityRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorQualityRenderer.js @@ -1,7 +1,7 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {math} from "../../../../../../math/math.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; +import {Program} from "../../../../webgl/Program.js"; +import {math} from "../../../../math/math.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {WEBGL_INFO} from "../../../../webglInfo.js"; const tempVec4 = math.vec4(); const tempVec3a = math.vec3(); @@ -15,7 +15,7 @@ const TEXTURE_DECODE_FUNCS = { /** * @private */ -class TrianglesDataTextureColorQualityRenderer { +export class TrianglesDataTextureColorQualityRenderer { constructor(scene, withSAO) { this._scene = scene; @@ -813,5 +813,3 @@ class TrianglesDataTextureColorQualityRenderer { this._program = null; } } - -export {TrianglesDataTextureColorQualityRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureColorRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorRenderer.js similarity index 93% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureColorRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorRenderer.js index 59f708d85..12f4ff847 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureColorRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureColorRenderer.js @@ -1,8 +1,6 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {math} from "../../../../../../math/math.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; -import { Camera } from "../../../../../../camera/Camera.js"; +import {Program} from "../../../../webgl/Program.js"; +import {math} from "../../../../math/math.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; const tempVec4 = math.vec4(); const tempVec3a = math.vec3(); @@ -10,7 +8,7 @@ const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTextureColorRenderer { +export class TrianglesDataTextureColorRenderer { constructor(scene, withSAO) { this._scene = scene; @@ -69,11 +67,11 @@ class TrianglesDataTextureColorRenderer { cameraEye = frameCtx.pickOrigin || cameraEye; } - const originCameraEye = [ + const originCameraEye = math.vec3([ cameraEye[0] - origin[0], cameraEye[1] - origin[1], cameraEye[2] - origin[2], - ]; + ]); gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); @@ -103,39 +101,33 @@ class TrianglesDataTextureColorRenderer { } } - if (state.numIndices8Bits > 0) - { + if (state.numIndices8Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, this._uTexturePerPolygonIdPortionIds, this._uTexturePerPolygonIdIndices, 8 // 8 bits indices ); - gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits); } - if (state.numIndices16Bits > 0) - { + if (state.numIndices16Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, this._uTexturePerPolygonIdPortionIds, this._uTexturePerPolygonIdIndices, 16 // 16 bits indices ); - gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits); } - if (state.numIndices32Bits > 0) - { + if (state.numIndices32Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, this._uTexturePerPolygonIdPortionIds, this._uTexturePerPolygonIdIndices, 32 // 32 bits indices ); - gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits); } @@ -210,16 +202,16 @@ class TrianglesDataTextureColorRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); } _bindProgram(frameCtx) { @@ -311,17 +303,17 @@ class TrianglesDataTextureColorRenderer { src.push("in vec3 offset;"); } - // src.push("uniform sampler2D uOcclusionTexture;"); // chipmunk + // src.push("uniform sampler2D uOcclusionTexture;"); - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); src.push("vec3 positions[3];") @@ -375,8 +367,8 @@ class TrianglesDataTextureColorRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT // renderPass = COLOR_OPAQUE @@ -396,9 +388,9 @@ class TrianglesDataTextureColorRenderer { src.push ("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); - src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); src.push("int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;"); @@ -411,9 +403,9 @@ class TrianglesDataTextureColorRenderer { src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") - src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // chipmunk + src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // get position src.push("positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") @@ -421,7 +413,7 @@ class TrianglesDataTextureColorRenderer { src.push("positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));") // get color - src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); src.push(`if (color.a == 0u) {`); src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex @@ -613,5 +605,3 @@ class TrianglesDataTextureColorRenderer { this._program = null; } } - -export {TrianglesDataTextureColorRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureDepthRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureDepthRenderer.js similarity index 76% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureDepthRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureDepthRenderer.js index 26850db46..3d6fb5b8e 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureDepthRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureDepthRenderer.js @@ -1,8 +1,6 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {math} from "../../../../../../math/math.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; -import { Camera } from "../../../../../../camera/Camera.js"; +import {Program} from "../../../../webgl/Program.js"; +import {math} from "../../../../math/math.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; const tempVec4 = math.vec4(); const tempVec3a = math.vec3(); @@ -10,7 +8,7 @@ const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTextureDepthRenderer { +export class TrianglesDataTextureDepthRenderer { constructor(scene) { this._scene = scene; @@ -46,13 +44,13 @@ class TrianglesDataTextureDepthRenderer { frameCtx.lastProgramId = this._program.id; this._bindProgram(frameCtx, state); } - - textureState.bindCommonTextures ( + + textureState.bindCommonTextures( this._program, - this._uTexturePerObjectIdPositionsDecodeMatrix, - this._uTexturePerVertexIdCoordinates, - this._uTexturePerObjectIdColorsAndFlags, - this._uTextureCameraMatrices, + this._uTexturePerObjectIdPositionsDecodeMatrix, + this._uTexturePerVertexIdCoordinates, + this._uTexturePerObjectIdColorsAndFlags, + this._uTextureCameraMatrices, this._uTextureModelMatrices, this._uTexturePerObjectIdOffsets ); @@ -60,7 +58,7 @@ class TrianglesDataTextureDepthRenderer { let cameraEye = camera.eye; if (frameCtx.pickViewMatrix) { - textureState.bindPickCameraTexture ( + textureState.bindPickCameraTexture( this._program, this._uTextureCameraMatrices ); @@ -101,36 +99,33 @@ class TrianglesDataTextureDepthRenderer { } } - if (state.numIndices8Bits > 0) - { + if (state.numIndices8Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 8 // 8 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits); } - if (state.numIndices16Bits > 0) - { + if (state.numIndices16Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 16 // 16 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits); } - - if (state.numIndices32Bits > 0) - { + + if (state.numIndices32Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 32 // 32 bits indices ); @@ -173,16 +168,16 @@ class TrianglesDataTextureDepthRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); } _bindProgram(frameCtx) { @@ -239,17 +234,17 @@ class TrianglesDataTextureDepthRenderer { src.push("in vec3 offset;"); } - // src.push("uniform sampler2D uOcclusionTexture;"); // chipmunk + // src.push("uniform sampler2D uOcclusionTexture;"); - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); src.push("vec3 positions[3];") @@ -269,7 +264,7 @@ class TrianglesDataTextureDepthRenderer { src.push("out vec4 vWorldPosition;"); src.push("flat out uint vFlags2;"); } - + src.push("void main(void) {"); // constants @@ -283,9 +278,9 @@ class TrianglesDataTextureDepthRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT // renderPass = COLOR_OPAQUE @@ -295,18 +290,18 @@ class TrianglesDataTextureDepthRenderer { src.push("} else {"); // camera matrices - src.push ("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); - src.push ("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); + src.push("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); + src.push("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); + src.push("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); // model matrices - src.push ("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); + src.push("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); + src.push("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); - src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); src.push("int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;"); @@ -315,13 +310,13 @@ class TrianglesDataTextureDepthRenderer { src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));"); src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;") - + src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") - src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // chipmunk + src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // get position src.push("positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") @@ -329,8 +324,8 @@ class TrianglesDataTextureDepthRenderer { src.push("positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));") // get color - src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); + src.push(`if (color.a == 0u) {`); src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex src.push(" return;"); @@ -346,18 +341,18 @@ class TrianglesDataTextureDepthRenderer { // when the geometry is not solid, if needed, flip the triangle winding src.push("if (solid != 1u) {"); - src.push("if (isPerspectiveMatrix(projMatrix)) {"); - src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") - src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("viewNormal = -viewNormal;"); - src.push("}"); - src.push("} else {"); - src.push("if (viewNormal.z < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("viewNormal = -viewNormal;"); - src.push("}"); - src.push("}"); + src.push("if (isPerspectiveMatrix(projMatrix)) {"); + src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") + src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("viewNormal = -viewNormal;"); + src.push("}"); + src.push("} else {"); + src.push("if (viewNormal.z < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("viewNormal = -viewNormal;"); + src.push("}"); + src.push("}"); src.push("}"); src.push("vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); @@ -392,7 +387,7 @@ class TrianglesDataTextureDepthRenderer { const sectionPlanesState = scene._sectionPlanesState; const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; - src.push ('#version 300 es'); + src.push('#version 300 es'); src.push("// Triangles dataTexture draw fragment shader"); src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); src.push("precision highp float;"); @@ -430,9 +425,9 @@ class TrianglesDataTextureDepthRenderer { src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);"); src.push("}"); } - src.push(" if (dist > 0.0) { "); - src.push(" discard;") - src.push(" }"); + src.push(" if (dist > 0.0) { "); + src.push(" discard;") + src.push(" }"); src.push("}"); } @@ -459,4 +454,3 @@ class TrianglesDataTextureDepthRenderer { } } -export {TrianglesDataTextureDepthRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureEdgesColorRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesColorRenderer.js similarity index 92% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureEdgesColorRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesColorRenderer.js index f59c57fa7..e61c0a279 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureEdgesColorRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesColorRenderer.js @@ -1,13 +1,13 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; +import {Program} from "../../../../webgl/Program.js"; +import {getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTextureEdgesColorRenderer { +export class TrianglesDataTextureEdgesColorRenderer { constructor(scene) { this._scene = scene; @@ -158,14 +158,14 @@ class TrianglesDataTextureEdgesColorRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdEdgeIndices = "uTexturePerPolygonIdEdgeIndices"; // chipmunk - this._uTexturePerEdgeIdPortionIds = "uTexturePerEdgeIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdEdgeIndices = "uTexturePerPolygonIdEdgeIndices"; + this._uTexturePerEdgeIdPortionIds = "uTexturePerEdgeIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; } _bindProgram() { @@ -218,14 +218,14 @@ class TrianglesDataTextureEdgesColorRenderer { src.push("in vec3 offset;"); } - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerEdgeIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;"); + src.push("uniform mediump usampler2D uTexturePerEdgeIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); if (scene.logarithmicDepthBufferEnabled) { @@ -263,8 +263,8 @@ class TrianglesDataTextureEdgesColorRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT @@ -275,7 +275,7 @@ class TrianglesDataTextureEdgesColorRenderer { src.push("} else {"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); src.push("ivec4 packedEdgeIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));"); @@ -290,17 +290,17 @@ class TrianglesDataTextureEdgesColorRenderer { src.push("int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;") src.push("int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // get position src.push("vec3 position = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH, indexPositionV), 0));") // get color - src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); src.push(`if (color.a == 0u) {`); src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex @@ -400,5 +400,3 @@ class TrianglesDataTextureEdgesColorRenderer { this._program = null; } } - -export {TrianglesDataTextureEdgesColorRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureEdgesRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesRenderer.js similarity index 83% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureEdgesRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesRenderer.js index c31b9d870..0007ca519 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureEdgesRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureEdgesRenderer.js @@ -1,16 +1,15 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; +import {Program} from "../../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; import {RENDER_PASSES} from "../../../RENDER_PASSES.js"; const tempVec3a = math.vec3(); -const defaultColor = new Float32Array([0,0,0,1]); +const defaultColor = new Float32Array([0, 0, 0, 1]); /** * @private */ -class TrianglesDataTextureEdgesRenderer { +export class TrianglesDataTextureEdgesRenderer { constructor(scene) { this._scene = scene; @@ -34,7 +33,7 @@ class TrianglesDataTextureEdgesRenderer { const state = dataTextureLayer._state; const textureState = state.textureState; const origin = dataTextureLayer._state.origin; - + if (!this._program) { this._allocate(dataTextureLayer); if (this.errors) { @@ -47,18 +46,18 @@ class TrianglesDataTextureEdgesRenderer { this._bindProgram(); } - textureState.bindCommonTextures ( + textureState.bindCommonTextures( this._program, - this._uTexturePerObjectIdPositionsDecodeMatrix, - this._uTexturePerVertexIdCoordinates, - this._uTexturePerObjectIdColorsAndFlags, - this._uTextureCameraMatrices, + this._uTexturePerObjectIdPositionsDecodeMatrix, + this._uTexturePerVertexIdCoordinates, + this._uTexturePerObjectIdColorsAndFlags, + this._uTextureCameraMatrices, this._uTextureModelMatrices, this._uTexturePerObjectIdOffsets ); if (frameCtx.pickViewMatrix) { - textureState.bindPickCameraTexture ( + textureState.bindPickCameraTexture( this._program, this._uTextureCameraMatrices ); @@ -115,36 +114,33 @@ class TrianglesDataTextureEdgesRenderer { } } - if (state.numEdgeIndices8Bits > 0) - { + if (state.numEdgeIndices8Bits > 0) { textureState.bindEdgeIndicesTextures( this._program, - this._uTexturePerEdgeIdPortionIds, - this._uTexturePerPolygonIdEdgeIndices, + this._uTexturePerEdgeIdPortionIds, + this._uTexturePerPolygonIdEdgeIndices, 8 // 8 bits edge indices ); gl.drawArrays(gl.LINES, 0, state.numEdgeIndices8Bits); } - if (state.numEdgeIndices16Bits > 0) - { + if (state.numEdgeIndices16Bits > 0) { textureState.bindEdgeIndicesTextures( this._program, - this._uTexturePerEdgeIdPortionIds, - this._uTexturePerPolygonIdEdgeIndices, + this._uTexturePerEdgeIdPortionIds, + this._uTexturePerPolygonIdEdgeIndices, 16 // 16 bits edge indices ); gl.drawArrays(gl.LINES, 0, state.numEdgeIndices16Bits); } - if (state.numEdgeIndices32Bits > 0) - { + if (state.numEdgeIndices32Bits > 0) { textureState.bindEdgeIndicesTextures( this._program, - this._uTexturePerEdgeIdPortionIds, - this._uTexturePerPolygonIdEdgeIndices, + this._uTexturePerEdgeIdPortionIds, + this._uTexturePerPolygonIdEdgeIndices, 32 // 32 bits edge indices ); @@ -186,14 +182,14 @@ class TrianglesDataTextureEdgesRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdEdgeIndices = "uTexturePerPolygonIdEdgeIndices"; // chipmunk - this._uTexturePerEdgeIdPortionIds = "uTexturePerEdgeIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdEdgeIndices = "uTexturePerPolygonIdEdgeIndices"; + this._uTexturePerEdgeIdPortionIds = "uTexturePerEdgeIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; } _bindProgram() { @@ -246,14 +242,14 @@ class TrianglesDataTextureEdgesRenderer { src.push("in vec3 offset;"); } - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerEdgeIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;"); + src.push("uniform mediump usampler2D uTexturePerEdgeIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); src.push("uniform vec4 color;"); @@ -275,12 +271,12 @@ class TrianglesDataTextureEdgesRenderer { src.push("void main(void) {"); // camera matrices - src.push ("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); + src.push("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); + src.push("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); // model matrices - src.push ("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); - + src.push("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); + // constants src.push("int edgeIndex = gl_VertexID / 2;") @@ -292,9 +288,9 @@ class TrianglesDataTextureEdgesRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED @@ -304,7 +300,7 @@ class TrianglesDataTextureEdgesRenderer { src.push("} else {"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); src.push("ivec4 packedEdgeIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));"); @@ -315,16 +311,16 @@ class TrianglesDataTextureEdgesRenderer { src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdEdgeIndices, ivec2(h_index, v_index), 0));"); src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;") - + src.push("int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;") src.push("int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + // get position src.push("vec3 position = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH, indexPositionV), 0));") @@ -359,7 +355,7 @@ class TrianglesDataTextureEdgesRenderer { const sectionPlanesState = scene._sectionPlanesState; const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; - src.push ('#version 300 es'); + src.push('#version 300 es'); src.push("// Batched geometry edges drawing fragment shader"); if (scene.logarithmicDepthBufferEnabled) { src.push("#extension GL_EXT_frag_depth : enable"); @@ -419,5 +415,3 @@ class TrianglesDataTextureEdgesRenderer { this._program = null; } } - -export {TrianglesDataTextureEdgesRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureNormalsRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureNormalsRenderer.js similarity index 97% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureNormalsRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureNormalsRenderer.js index 5ad92ac4c..d42f4810e 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureNormalsRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureNormalsRenderer.js @@ -1,14 +1,14 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; +import {Program} from "../../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; +import {WEBGL_INFO} from "../../../../webglInfo.js"; const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTextureNormalsRenderer { +export class TrianglesDataTextureNormalsRenderer { constructor(scene) { this._scene = scene; @@ -313,5 +313,3 @@ class TrianglesDataTextureNormalsRenderer { this._program = null; } } - -export {TrianglesDataTextureNormalsRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureOcclusionRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureOcclusionRenderer.js similarity index 95% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureOcclusionRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureOcclusionRenderer.js index a63a8b49d..4aed4e59e 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureOcclusionRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureOcclusionRenderer.js @@ -1,14 +1,14 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; +import {Program} from "../../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; +import {WEBGL_INFO} from "../../../../webglInfo.js"; const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTextureOcclusionRenderer { +export class TrianglesDataTextureOcclusionRenderer { constructor(scene) { this._scene = scene; @@ -25,7 +25,14 @@ class TrianglesDataTextureOcclusionRenderer { } drawLayer(frameCtx, dataTextureLayer, renderPass) { - return; // TODO + + return; + + /////////////////////////////////////////////////////////////////// + // TODO + //////////////////////////////////////////////////////////////////// + + const model = dataTextureLayer.model; const scene = model.scene; const gl = scene.canvas.gl; @@ -293,5 +300,3 @@ class TrianglesDataTextureOcclusionRenderer { this._program = null; } } - -export {TrianglesDataTextureOcclusionRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickDepthRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickDepthRenderer.js similarity index 77% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickDepthRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickDepthRenderer.js index 50c68f2d1..d9c5587f6 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickDepthRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickDepthRenderer.js @@ -1,13 +1,13 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; +import {Program} from "../../../../webgl/Program.js"; +import {getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTexturePickDepthRenderer { +export class TrianglesDataTexturePickDepthRenderer { constructor(scene) { this._scene = scene; @@ -40,13 +40,13 @@ class TrianglesDataTexturePickDepthRenderer { frameCtx.lastProgramId = this._program.id; this._bindProgram(); } - - textureState.bindCommonTextures ( + + textureState.bindCommonTextures( this._program, - this._uTexturePerObjectIdPositionsDecodeMatrix, - this._uTexturePerVertexIdCoordinates, - this._uTexturePerObjectIdColorsAndFlags, - this._uTextureCameraMatrices, + this._uTexturePerObjectIdPositionsDecodeMatrix, + this._uTexturePerVertexIdCoordinates, + this._uTexturePerObjectIdColorsAndFlags, + this._uTextureCameraMatrices, this._uTextureModelMatrices, this._uTexturePerObjectIdOffsets ); @@ -54,7 +54,7 @@ class TrianglesDataTexturePickDepthRenderer { let cameraEye = camera.eye; if (frameCtx.pickViewMatrix) { - textureState.bindPickCameraTexture ( + textureState.bindPickCameraTexture( this._program, this._uTextureCameraMatrices ); @@ -105,36 +105,33 @@ class TrianglesDataTexturePickDepthRenderer { } } - if (state.numIndices8Bits > 0) - { + if (state.numIndices8Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 8 // 8 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits); } - if (state.numIndices16Bits > 0) - { + if (state.numIndices16Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 16 // 16 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits); } - - if (state.numIndices32Bits > 0) - { + + if (state.numIndices32Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 32 // 32 bits indices ); @@ -179,16 +176,16 @@ class TrianglesDataTexturePickDepthRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); } _bindProgram() { @@ -232,15 +229,15 @@ class TrianglesDataTexturePickDepthRenderer { src.push("uniform bool pickInvisible;"); - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); src.push("vec3 positions[3];") @@ -262,14 +259,14 @@ class TrianglesDataTexturePickDepthRenderer { src.push("void main(void) {"); // camera matrices - src.push ("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); - src.push ("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); + src.push("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); + src.push("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); + src.push("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); // model matrices - src.push ("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); - + src.push("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); + src.push("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); + // constants src.push("int polygonIndex = gl_VertexID / 3;") @@ -281,9 +278,9 @@ class TrianglesDataTexturePickDepthRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + // flags.w = NOT_RENDERED | PICK // renderPass = PICK @@ -293,9 +290,9 @@ class TrianglesDataTexturePickDepthRenderer { src.push("} else {"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); - src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); src.push("int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;"); @@ -304,21 +301,21 @@ class TrianglesDataTexturePickDepthRenderer { src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));"); src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;") - + src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") - - src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // chipmunk + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") + + src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // get position src.push("positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") src.push("positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));") src.push("positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));") - + // get color - src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); src.push(`if (color.a == 0u) {`); src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex @@ -333,17 +330,17 @@ class TrianglesDataTexturePickDepthRenderer { // when the geometry is not solid, if needed, flip the triangle winding src.push("if (solid != 1u) {"); - src.push("if (isPerspectiveMatrix(projMatrix)) {"); - src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") - src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("}"); - src.push("} else {"); - src.push("vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*positionsDecodeMatrix)) * vec4(normal,1)).xyz);"); - src.push("if (viewNormal.z < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("}"); - src.push("}"); + src.push("if (isPerspectiveMatrix(projMatrix)) {"); + src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") + src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("}"); + src.push("} else {"); + src.push("vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*positionsDecodeMatrix)) * vec4(normal,1)).xyz);"); + src.push("if (viewNormal.z < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("}"); + src.push("}"); src.push("}"); src.push("vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); @@ -377,7 +374,7 @@ class TrianglesDataTexturePickDepthRenderer { const sectionPlanesState = scene._sectionPlanesState; const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; - src.push ('#version 300 es'); + src.push('#version 300 es'); src.push("// Triangles dataTexture pick depth fragment shader"); src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); @@ -414,8 +411,8 @@ class TrianglesDataTexturePickDepthRenderer { src.push(" res -= res.xxyz * bitMask;"); src.push(" return res;"); src.push("}"); - - src.push("out vec4 outPackedDepth;"); + + src.push("out vec4 outPackedDepth;"); src.push("void main(void) {"); if (clipping) { src.push(" bool clippable = vFlags2 > 0u;"); @@ -450,4 +447,3 @@ class TrianglesDataTexturePickDepthRenderer { } } -export {TrianglesDataTexturePickDepthRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickMeshRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickMeshRenderer.js similarity index 92% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickMeshRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickMeshRenderer.js index 6900329b6..1ccd8b513 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickMeshRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickMeshRenderer.js @@ -1,13 +1,13 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; +import {Program} from "../../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTexturePickMeshRenderer { +export class TrianglesDataTexturePickMeshRenderer { constructor(scene) { this._scene = scene; @@ -175,16 +175,16 @@ class TrianglesDataTexturePickMeshRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); } _bindProgram(frameCtx) { @@ -232,17 +232,17 @@ class TrianglesDataTexturePickMeshRenderer { } src.push("uniform bool pickInvisible;"); - // src.push("uniform sampler2D uOcclusionTexture;"); // chipmunk - - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk + // src.push("uniform sampler2D uOcclusionTexture;"); + + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); src.push("vec3 positions[3];") @@ -285,8 +285,8 @@ class TrianglesDataTexturePickMeshRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // flags.w = NOT_RENDERED | PICK // renderPass = PICK @@ -297,9 +297,9 @@ class TrianglesDataTexturePickMeshRenderer { src.push("} else {"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); - src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); src.push("int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;"); @@ -312,9 +312,9 @@ class TrianglesDataTexturePickMeshRenderer { src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") - src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // chipmunk + src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // get position src.push("positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") @@ -322,7 +322,7 @@ class TrianglesDataTexturePickMeshRenderer { src.push("positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));") // get color - src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); src.push(`if (color.a == 0u) {`); src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex @@ -441,5 +441,3 @@ class TrianglesDataTexturePickMeshRenderer { this._program = null; } } - -export {TrianglesDataTexturePickMeshRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js similarity index 92% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js index 5ea4744f6..ee8e5dae6 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsFlatRenderer.js @@ -1,14 +1,13 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; +import {Program} from "../../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTexturePickNormalsFlatRenderer { +export class TrianglesDataTexturePickNormalsFlatRenderer { constructor(scene) { this._scene = scene; @@ -55,7 +54,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 1 - ); // chipmunk + ); var rr2 = this._program.bindTexture( this._uTexturePerVertexIdCoordinates, @@ -71,7 +70,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 2 - ); // chipmunk + ); var rr3 = this._program.bindTexture( this._uTexturePerObjectIdColorsAndFlags, @@ -87,7 +86,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 3 - ); // chipmunk + ); gl.uniform1i(this._uRenderPass, renderPass); gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); @@ -146,7 +145,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 4 - ); // chipmunk + ); var rr5 = this._program.bindTexture( this._uTexturePerPolygonIdIndices, @@ -162,7 +161,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 5 - ); // chipmunk + ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits); } @@ -182,7 +181,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 4 - ); // chipmunk + ); var rr5 = this._program.bindTexture( this._uTexturePerPolygonIdIndices, @@ -198,7 +197,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 5 - ); // chipmunk + ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits); } @@ -218,7 +217,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 4 - ); // chipmunk + ); var rr5 = this._program.bindTexture( this._uTexturePerPolygonIdIndices, @@ -234,7 +233,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } }, 5 - ); // chipmunk + ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits); } @@ -280,12 +279,12 @@ class TrianglesDataTexturePickNormalsFlatRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; } _bindProgram() { @@ -332,13 +331,13 @@ class TrianglesDataTexturePickNormalsFlatRenderer { src.push("uniform mat4 worldMatrix;"); src.push("uniform mat4 viewMatrix;"); src.push("uniform mat4 projMatrix;"); - // src.push("uniform sampler2D uOcclusionTexture;"); // chipmunk - src.push("uniform sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform isampler2D uTexturePerPolygonIdNormals;"); // chipmunk - src.push("uniform usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk + // src.push("uniform sampler2D uOcclusionTexture;"); + src.push("uniform sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform isampler2D uTexturePerPolygonIdNormals;"); + src.push("uniform usampler2D uTexturePerPolygonIdPortionIds;"); if (scene.logarithmicDepthBufferEnabled) { src.push("uniform float logDepthBufFC;"); @@ -376,7 +375,7 @@ class TrianglesDataTexturePickNormalsFlatRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); src.push("int h_index = polygonIndex & 4095;") src.push("int v_index = polygonIndex >> 12;") @@ -387,11 +386,11 @@ class TrianglesDataTexturePickNormalsFlatRenderer { src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // get position src.push("vec3 position1 = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") @@ -501,4 +500,3 @@ class TrianglesDataTexturePickNormalsFlatRenderer { } } -export {TrianglesDataTexturePickNormalsFlatRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickNormalsRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsRenderer.js similarity index 78% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickNormalsRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsRenderer.js index d14ae799c..34bc81c4f 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTexturePickNormalsRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTexturePickNormalsRenderer.js @@ -1,13 +1,13 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; +import {Program} from "../../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTexturePickNormalsRenderer { +export class TrianglesDataTexturePickNormalsRenderer { constructor(scene) { this._scene = scene; @@ -41,13 +41,13 @@ class TrianglesDataTexturePickNormalsRenderer { frameCtx.lastProgramId = this._program.id; this._bindProgram(); } - - textureState.bindCommonTextures ( + + textureState.bindCommonTextures( this._program, - this._uTexturePerObjectIdPositionsDecodeMatrix, - this._uTexturePerVertexIdCoordinates, - this._uTexturePerObjectIdColorsAndFlags, - this._uTextureCameraMatrices, + this._uTexturePerObjectIdPositionsDecodeMatrix, + this._uTexturePerVertexIdCoordinates, + this._uTexturePerObjectIdColorsAndFlags, + this._uTextureCameraMatrices, this._uTextureModelMatrices, this._uTexturePerObjectIdOffsets ); @@ -55,7 +55,7 @@ class TrianglesDataTexturePickNormalsRenderer { let cameraEye = camera.eye; if (frameCtx.pickViewMatrix) { - textureState.bindPickCameraTexture ( + textureState.bindPickCameraTexture( this._program, this._uTextureCameraMatrices ); @@ -69,9 +69,9 @@ class TrianglesDataTexturePickNormalsRenderer { ]; gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); - + gl.uniform1i(this._uRenderPass, renderPass); - + gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); @@ -105,36 +105,33 @@ class TrianglesDataTexturePickNormalsRenderer { } } - if (state.numIndices8Bits > 0) - { + if (state.numIndices8Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 8 // 8 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits); } - if (state.numIndices16Bits > 0) - { + if (state.numIndices16Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 16 // 16 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits); } - - if (state.numIndices32Bits > 0) - { + + if (state.numIndices32Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 32 // 32 bits indices ); @@ -175,16 +172,16 @@ class TrianglesDataTexturePickNormalsRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); } _bindProgram() { @@ -226,15 +223,15 @@ class TrianglesDataTexturePickNormalsRenderer { } src.push("uniform bool pickInvisible;"); - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); src.push("vec3 positions[3];") @@ -258,11 +255,11 @@ class TrianglesDataTexturePickNormalsRenderer { src.push("void main(void) {"); // camera matrices - src.push ("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); + src.push("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); + src.push("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); // model matrices - src.push ("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); + src.push("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); // constants src.push("int polygonIndex = gl_VertexID / 3;") @@ -275,9 +272,9 @@ class TrianglesDataTexturePickNormalsRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + // flags.w = NOT_RENDERED | PICK // renderPass = PICK @@ -287,9 +284,9 @@ class TrianglesDataTexturePickNormalsRenderer { src.push("} else {"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); - src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); src.push("int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;"); @@ -298,13 +295,13 @@ class TrianglesDataTexturePickNormalsRenderer { src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));"); src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;") - + src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") - - src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // chipmunk + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") + + src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // get position src.push("positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") @@ -320,23 +317,23 @@ class TrianglesDataTexturePickNormalsRenderer { // when the geometry is not solid, if needed, flip the triangle winding src.push("if (solid != 1u) {"); - src.push("if (isPerspectiveMatrix(projMatrix)) {"); - src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") - src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("normal = -normal;"); - src.push("}"); - src.push("} else {"); - src.push("vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*positionsDecodeMatrix)) * vec4(normal,1)).xyz);"); - src.push("if (viewNormal.z < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("normal = -normal;"); - src.push("}"); - src.push("}"); + src.push("if (isPerspectiveMatrix(projMatrix)) {"); + src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") + src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("normal = -normal;"); + src.push("}"); + src.push("} else {"); + src.push("vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*positionsDecodeMatrix)) * vec4(normal,1)).xyz);"); + src.push("if (viewNormal.z < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("normal = -normal;"); + src.push("}"); + src.push("}"); src.push("}"); src.push("normal = -normal;"); - + src.push("vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); // get XYZ offset @@ -347,7 +344,7 @@ class TrianglesDataTexturePickNormalsRenderer { src.push("vec4 viewPosition = viewMatrix * worldPosition; "); src.push("vWorldNormal = normal.xyz;"); - + src.push("vec4 clipPos = projMatrix * viewPosition;"); if (scene.logarithmicDepthBufferEnabled) { @@ -371,7 +368,7 @@ class TrianglesDataTexturePickNormalsRenderer { const sectionPlanesState = scene._sectionPlanesState; const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; - src.push ('#version 300 es'); + src.push('#version 300 es'); src.push("// Triangles dataTexture pick normals fragment shader"); src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); src.push("precision highp float;"); @@ -431,5 +428,3 @@ class TrianglesDataTexturePickNormalsRenderer { this._program = null; } } - -export {TrianglesDataTexturePickNormalsRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureShadowRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureShadowRenderer.js similarity index 97% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureShadowRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureShadowRenderer.js index 969244130..db8b648b3 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureShadowRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureShadowRenderer.js @@ -1,6 +1,6 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {math} from "../../../../../../math/math.js"; -import {getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; +import {Program} from "../../../../webgl/Program.js"; +import {math} from "../../../../math/math.js"; +import {getPlaneRTCPos} from "../../../../math/rtcCoords.js"; const tempVec3a = math.vec3(); @@ -9,7 +9,7 @@ const tempVec3a = math.vec3(); * * @private */ -class TrianglesDataTextureShadowRenderer { +export class TrianglesDataTextureShadowRenderer { constructor(scene) { this._scene = scene; @@ -239,5 +239,3 @@ class TrianglesDataTextureShadowRenderer { this._program = null; } } - -export {TrianglesDataTextureShadowRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureSilhouetteRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSilhouetteRenderer.js similarity index 76% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureSilhouetteRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSilhouetteRenderer.js index c1d6afb73..1688b5f9e 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureSilhouetteRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSilhouetteRenderer.js @@ -1,9 +1,7 @@ -import {Program} from "../../../../../../webgl/Program.js"; +import {Program} from "../../../../webgl/Program.js"; import {RENDER_PASSES} from "../../../RENDER_PASSES.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; -import { Camera } from "../../../../../../camera/Camera.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; const defaultColor = new Float32Array([1, 1, 1]); const tempVec4 = math.vec4(); @@ -12,7 +10,7 @@ const tempVec3a = math.vec3(); /** * @private */ -class TrianglesDataTextureSilhouetteRenderer { +export class TrianglesDataTextureSilhouetteRenderer { constructor(scene, primitiveType) { this._scene = scene; @@ -49,13 +47,13 @@ class TrianglesDataTextureSilhouetteRenderer { this._bindProgram(frameCtx, state); } - - textureState.bindCommonTextures ( + + textureState.bindCommonTextures( this._program, - this._uTexturePerObjectIdPositionsDecodeMatrix, - this._uTexturePerVertexIdCoordinates, - this._uTexturePerObjectIdColorsAndFlags, - this._uTextureCameraMatrices, + this._uTexturePerObjectIdPositionsDecodeMatrix, + this._uTexturePerVertexIdCoordinates, + this._uTexturePerObjectIdColorsAndFlags, + this._uTextureCameraMatrices, this._uTextureModelMatrices, this._uTexturePerObjectIdOffsets ); @@ -63,7 +61,7 @@ class TrianglesDataTextureSilhouetteRenderer { let cameraEye = camera.eye; if (frameCtx.pickViewMatrix) { - textureState.bindPickCameraTexture ( + textureState.bindPickCameraTexture( this._program, this._uTextureCameraMatrices ); @@ -126,36 +124,33 @@ class TrianglesDataTextureSilhouetteRenderer { } } - if (state.numIndices8Bits > 0) - { + if (state.numIndices8Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 8 // 8 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits); } - if (state.numIndices16Bits > 0) - { + if (state.numIndices16Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 16 // 16 bits indices ); gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits); } - - if (state.numIndices32Bits > 0) - { + + if (state.numIndices32Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 32 // 32 bits indices ); @@ -195,16 +190,16 @@ class TrianglesDataTextureSilhouetteRenderer { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); } _bindProgram(frameCtx) { @@ -259,17 +254,17 @@ class TrianglesDataTextureSilhouetteRenderer { src.push("in vec3 offset;"); } - // src.push("uniform sampler2D uOcclusionTexture;"); // chipmunk + // src.push("uniform sampler2D uOcclusionTexture;"); - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); src.push("vec3 positions[3];") @@ -283,8 +278,6 @@ class TrianglesDataTextureSilhouetteRenderer { src.push(" return (m[2][3] == - 1.0);"); src.push("}"); - src.push("out float isPerspective;"); - if (clipping) { src.push("out vec4 vWorldPosition;"); src.push("flat out uint vFlags2;"); @@ -293,14 +286,14 @@ class TrianglesDataTextureSilhouetteRenderer { src.push("void main(void) {"); // camera matrices - src.push ("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); - src.push ("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); + src.push("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); + src.push("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); + src.push("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); // model matrices - src.push ("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); - + src.push("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); + src.push("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); + // constants src.push("int polygonIndex = gl_VertexID / 3;") @@ -312,9 +305,9 @@ class TrianglesDataTextureSilhouetteRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | SILHOUETTE_XRAYED // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED @@ -324,9 +317,9 @@ class TrianglesDataTextureSilhouetteRenderer { src.push("} else {"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); - src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); src.push("int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;"); @@ -335,13 +328,13 @@ class TrianglesDataTextureSilhouetteRenderer { src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));"); src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;") - + src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") - - src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // chipmunk + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") + + src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // get position src.push("positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") @@ -358,18 +351,18 @@ class TrianglesDataTextureSilhouetteRenderer { // when the geometry is not solid, if needed, flip the triangle winding src.push("if (solid != 1u) {"); - src.push("if (isPerspectiveMatrix(projMatrix)) {"); - src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") - src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("viewNormal = -viewNormal;"); - src.push("}"); - src.push("} else {"); - src.push("if (viewNormal.z < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("viewNormal = -viewNormal;"); - src.push("}"); - src.push("}"); + src.push("if (isPerspectiveMatrix(projMatrix)) {"); + src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") + src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("viewNormal = -viewNormal;"); + src.push("}"); + src.push("} else {"); + src.push("if (viewNormal.z < 0.0) {"); + src.push("position = positions[2 - (gl_VertexID % 3)];"); + src.push("viewNormal = -viewNormal;"); + src.push("}"); + src.push("}"); src.push("}"); src.push("vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); @@ -403,7 +396,7 @@ class TrianglesDataTextureSilhouetteRenderer { const sectionPlanesState = scene._sectionPlanesState; const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; - src.push ('#version 300 es'); + src.push('#version 300 es'); src.push("// Triangles dataTexture draw fragment shader"); src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); src.push("precision highp float;"); @@ -440,9 +433,9 @@ class TrianglesDataTextureSilhouetteRenderer { src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);"); src.push("}"); } - src.push(" if (dist > 0.0) { "); - src.push(" discard;") - src.push(" }"); + src.push(" if (dist > 0.0) { "); + src.push(" discard;") + src.push(" }"); src.push("}"); } @@ -467,5 +460,3 @@ class TrianglesDataTextureSilhouetteRenderer { this._program = null; } } - -export {TrianglesDataTextureSilhouetteRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureSnapPickZBufferInitializer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js similarity index 66% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureSnapPickZBufferInitializer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js index 81856d2f5..8b58161ae 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureSnapPickZBufferInitializer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthBufInitRenderer.js @@ -1,34 +1,12 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {math} from "../../../../../../math/math.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {WEBGL_INFO} from "../../../../../../webglInfo.js"; -import { Camera } from "../../../../../../camera/Camera.js"; +import {Program} from "../../../../webgl/Program.js"; +import {math} from "../../../../math/math.js"; -const tempVec4 = math.vec4(); const tempVec3a = math.vec3(); -/** - * Returns: - * - x != 0 => 1/x, - * - x == 1 => 1 - * - * @param {number} x - */ -function safeInv (x) { - const retVal = 1 / x; - - if (isNaN(retVal) || !isFinite(retVal)) - { - return 1; - } - - return retVal; -} - /** * @private */ -class TrianglesDataTextureSnapPickZBufferInitializer { +export class TrianglesDataTextureSnapDepthBufInitRenderer { constructor(scene) { this._scene = scene; @@ -60,21 +38,17 @@ class TrianglesDataTextureSnapPickZBufferInitializer { frameCtx._origin[1] = origin[1]; frameCtx._origin[2] = origin[2]; - // >>> Calculate the coordinate scaler const aabb = dataTextureLayer.aabb; - const MAX_INT = 2000000000; - const coordinateDivider = [ - safeInv(aabb[3] - aabb[0]) * MAX_INT, - safeInv(aabb[4] - aabb[1]) * MAX_INT, - safeInv(aabb[5] - aabb[2]) * MAX_INT, + math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT, + math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT, + math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT, ]; - frameCtx._coordinateScale[0] = safeInv(coordinateDivider[0]); - frameCtx._coordinateScale[1] = safeInv(coordinateDivider[1]); - frameCtx._coordinateScale[2] = safeInv(coordinateDivider[2]); - // <<< Calculate the coordinate scaler + frameCtx._coordinateScale[0] = math.safeInv(coordinateDivider[0]); + frameCtx._coordinateScale[1] = math.safeInv(coordinateDivider[1]); + frameCtx._coordinateScale[2] = math.safeInv(coordinateDivider[2]); if (!this._program) { this._allocate(); @@ -85,12 +59,12 @@ class TrianglesDataTextureSnapPickZBufferInitializer { this._bindProgram(); } - textureState.bindCommonTextures ( + textureState.bindCommonTextures( this._program, - this._uTexturePerObjectIdPositionsDecodeMatrix, - this._uTexturePerVertexIdCoordinates, - this._uTexturePerObjectIdColorsAndFlags, - this._uTextureCameraMatrices, + this._uTexturePerObjectIdPositionsDecodeMatrix, + this._uTexturePerVertexIdCoordinates, + this._uTexturePerObjectIdColorsAndFlags, + this._uTextureCameraMatrices, this._uTextureModelMatrices, this._uTexturePerObjectIdOffsets ); @@ -98,7 +72,7 @@ class TrianglesDataTextureSnapPickZBufferInitializer { let cameraEye = camera.eye; if (frameCtx.pickViewMatrix) { - textureState.bindPickCameraTexture ( + textureState.bindPickCameraTexture( this._program, this._uTextureCameraMatrices ); @@ -112,19 +86,13 @@ class TrianglesDataTextureSnapPickZBufferInitializer { ]; gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); - - gl.uniform2fv(this._u_vectorA, frameCtx._vectorA); - gl.uniform2fv(this._u_invVectorAB, frameCtx._invVectorAB); - gl.uniform1i(this._u_layerNumber, frameCtx._layerNumber); - gl.uniform3fv(this._u_coordinateScaler, coordinateDivider); - + gl.uniform2fv(this._uVectorA, frameCtx.snapVectorA); + gl.uniform2fv(this._uInverseVectorAB, frameCtx.snapInvVectorAB); + gl.uniform1i(this._uLayerNumber, frameCtx.layerNumber); + gl.uniform3fv(this._uCoordinateScaler, coordinateDivider); gl.uniform1i(this._uRenderPass, renderPass); - gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); - gl.uniform1f(this._uPickZNear, frameCtx.pickZNear); - gl.uniform1f(this._uPickZFar, frameCtx.pickZFar); - if (scene.logarithmicDepthBufferEnabled) { const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix? gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC); @@ -154,39 +122,33 @@ class TrianglesDataTextureSnapPickZBufferInitializer { } } - if (state.numIndices8Bits > 0) - { + if (state.numIndices8Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 8 // 8 bits indices ); - gl.drawArrays(gl.TRIANGLES, 0, state.numIndices8Bits); } - if (state.numIndices16Bits > 0) - { + if (state.numIndices16Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 16 // 16 bits indices ); - gl.drawArrays(gl.TRIANGLES, 0, state.numIndices16Bits); } - - if (state.numIndices32Bits > 0) - { + + if (state.numIndices32Bits > 0) { textureState.bindTriangleIndicesTextures( this._program, - this._uTexturePerPolygonIdPortionIds, - this._uTexturePerPolygonIdIndices, + this._uTexturePerPolygonIdPortionIds, + this._uTexturePerPolygonIdIndices, 32 // 32 bits indices ); - gl.drawArrays(gl.TRIANGLES, 0, state.numIndices32Bits); } @@ -220,28 +182,23 @@ class TrianglesDataTextureSnapPickZBufferInitializer { }); } - this._aPackedVertexId = program.getAttribute("packedVertexId"); - this._uPickZNear = program.getLocation("pickZNear"); - this._uPickZFar = program.getLocation("pickZFar"); - if (scene.logarithmicDepthBufferEnabled) { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdNormals = "uTexturePerPolygonIdNormals"; // chipmunk - this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; // chipmunk - this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk - this._u_vectorA = program.getLocation("_vectorA"); // chipmunk - this._u_invVectorAB = program.getLocation("_invVectorAB"); // chipmunk - this._u_layerNumber = program.getLocation("_layerNumber"); // chipmunk - this._u_coordinateScaler = program.getLocation("_coordinateScaler"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdIndices = "uTexturePerPolygonIdIndices"; + this._uTexturePerPolygonIdPortionIds = "uTexturePerPolygonIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); + this._uVectorA = program.getLocation("uVectorAB"); + this._uInverseVectorAB = program.getLocation("uInverseVectorAB"); + this._uLayerNumber = program.getLocation("uLayerNumber"); + this._uCoordinateScaler = program.getLocation("uCoordinateScaler"); } _bindProgram() { @@ -261,8 +218,7 @@ class TrianglesDataTextureSnapPickZBufferInitializer { const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; src.push("#version 300 es"); - src.push("// Triangles dataTexture draw vertex shader"); - + src.push("// TrianglesDataTextureSnapDepthBufInitRenderer vertex shader"); src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); src.push("precision highp float;"); src.push("precision highp int;"); @@ -283,17 +239,17 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push("in vec3 offset;"); } - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk - src.push("uniform vec2 _vectorA;"); // chipmunk - src.push("uniform vec2 _invVectorAB;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdIndices;"); + src.push("uniform mediump usampler2D uTexturePerPolygonIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); + src.push("uniform vec2 uVectorAB;"); + src.push("uniform vec2 uInverseVectorAB;"); src.push("vec3 positions[3];") @@ -308,8 +264,8 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push("}"); src.push("vec2 remapClipPos(vec2 clipPos) {"); - src.push(" float x = (clipPos.x - _vectorA.x) * _invVectorAB.x;"); - src.push(" float y = (clipPos.y - _vectorA.y) * _invVectorAB.y;"); + src.push(" float x = (clipPos.x - uVectorAB.x) * uInverseVectorAB.x;"); + src.push(" float y = (clipPos.y - uVectorAB.y) * uInverseVectorAB.y;"); src.push(" return vec2(x, y);") src.push("}"); @@ -317,19 +273,9 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push("out vec4 vWorldPosition;"); src.push("flat out uint vFlags2;"); } - src.push("out vec4 vViewPosition;"); src.push("out highp vec3 relativeToOriginPosition;"); src.push("void main(void) {"); - // camera matrices - src.push ("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); - src.push ("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); - - // model matrices - src.push ("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); - // constants src.push("int polygonIndex = gl_VertexID / 3;") @@ -341,15 +287,32 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + src.push("{"); + // get color + src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); + + src.push(`if (color.a == 0u) {`); + src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex + src.push(" return;"); + src.push("};"); + + // camera matrices + src.push("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); + src.push("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); + src.push("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); + + // model matrices + src.push("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); + src.push("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); + // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); - src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); // chipmunk + src.push("ivec4 packedIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+5, objectIndexCoords.y), 0));"); src.push("int indexBaseOffset = (packedIndexBaseOffset.r << 24) + (packedIndexBaseOffset.g << 16) + (packedIndexBaseOffset.b << 8) + packedIndexBaseOffset.a;"); @@ -358,74 +321,56 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdIndices, ivec2(h_index, v_index), 0));"); src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;") - + src.push("ivec3 indexPositionH = uniqueVertexIndexes & 4095;") src.push("ivec3 indexPositionV = uniqueVertexIndexes >> 12;") - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") - - src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // chipmunk + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") + src.push("uint solid = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+7, objectIndexCoords.y), 0).r;"); // get position src.push("positions[0] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.r, indexPositionV.r), 0));") src.push("positions[1] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.g, indexPositionV.g), 0));") src.push("positions[2] = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH.b, indexPositionV.b), 0));") - // get color - src.push("uvec4 color = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+0, objectIndexCoords.y), 0);"); // chipmunk - - src.push(`if (color.a == 0u) {`); - src.push(" gl_Position = vec4(3.0, 3.0, 3.0, 1.0);"); // Cull vertex - src.push(" return;"); - src.push("};"); - // get normal src.push("vec3 normal = normalize(cross(positions[2] - positions[0], positions[1] - positions[0]));"); - src.push("vec3 position;"); src.push("position = positions[gl_VertexID % 3];"); - src.push("vec3 viewNormal = -normalize((transpose(inverse(viewMatrix*positionsDecodeMatrix)) * vec4(normal,1)).xyz);"); // when the geometry is not solid, if needed, flip the triangle winding src.push("if (solid != 1u) {"); - src.push("if (isPerspectiveMatrix(projMatrix)) {"); - src.push("vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") - src.push("if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("viewNormal = -viewNormal;"); - src.push("}"); - src.push("} else {"); - src.push("if (viewNormal.z < 0.0) {"); - src.push("position = positions[2 - (gl_VertexID % 3)];"); - src.push("viewNormal = -viewNormal;"); - src.push("}"); - src.push("}"); + src.push(" if (isPerspectiveMatrix(projMatrix)) {"); + src.push(" vec3 uCameraEyeRtcInQuantizedSpace = (inverse(worldMatrix * positionsDecodeMatrix) * vec4(uCameraEyeRtc, 1)).xyz;") + src.push(" if (dot(position.xyz - uCameraEyeRtcInQuantizedSpace, normal) < 0.0) {"); + src.push(" position = positions[2 - (gl_VertexID % 3)];"); + src.push(" viewNormal = -viewNormal;"); + src.push(" }"); + src.push(" } else {"); + src.push(" if (viewNormal.z < 0.0) {"); + src.push(" position = positions[2 - (gl_VertexID % 3)];"); + src.push(" viewNormal = -viewNormal;"); + src.push(" }"); + src.push(" }"); src.push("}"); - src.push(" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); - - // get XYZ offset + src.push("vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); src.push("vec4 offset = vec4(texelFetch (uTexturePerObjectIdOffsets, objectIndexCoords, 0).rgb, 0.0);"); - src.push("worldPosition.xyz = worldPosition.xyz + offset.xyz;"); - src.push("relativeToOriginPosition = worldPosition.xyz;") - - src.push(" vec4 viewPosition = viewMatrix * worldPosition; "); + src.push("vec4 viewPosition = viewMatrix * worldPosition; "); if (clipping) { - src.push(" vWorldPosition = worldPosition;"); - src.push(" vFlags2 = flags2.r;"); + src.push("vWorldPosition = worldPosition;"); + src.push("vFlags2 = flags2.r;"); } - src.push("vViewPosition = viewPosition;"); src.push("vec4 clipPos = projMatrix * viewPosition;"); src.push("float tmp = clipPos.w;") src.push("clipPos.xyzw /= tmp;") src.push("clipPos.xy = remapClipPos(clipPos.xy);"); - src.push("clipPos.z += 0.001;"); // small Z offset + src.push("clipPos.z += 0.0001;"); // small Z offset src.push("clipPos.xyzw *= tmp;") - src.push("vViewPosition = clipPos;"); if (scene.logarithmicDepthBufferEnabled) { src.push("vFragDepth = 1.0 + clipPos.w;"); src.push("isPerspective = float (isPerspectiveMatrix(projMatrix));"); @@ -433,7 +378,6 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push("gl_Position = clipPos;"); src.push(" }"); src.push("}"); - return src; } @@ -442,8 +386,8 @@ class TrianglesDataTextureSnapPickZBufferInitializer { const sectionPlanesState = scene._sectionPlanesState; const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; - src.push ('#version 300 es'); - src.push("// Triangles dataTexture draw fragment shader"); + src.push('#version 300 es'); + src.push("// TrianglesDataTextureSnapDepthBufInitRenderer fragment shader"); src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); src.push("precision highp float;"); src.push("precision highp int;"); @@ -451,19 +395,13 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push("precision mediump float;"); src.push("precision mediump int;"); src.push("#endif"); - if (scene.logarithmicDepthBufferEnabled) { src.push("in float isPerspective;"); src.push("uniform float logDepthBufFC;"); src.push("in float vFragDepth;"); } - - src.push("uniform float pickZNear;"); - src.push("uniform float pickZFar;"); - - src.push("uniform int _layerNumber;"); // chipmunk - src.push("uniform vec3 _coordinateScaler;"); // chipmunk - + src.push("uniform int uLayerNumber;"); + src.push("uniform vec3 uCoordinateScaler;"); if (clipping) { src.push("in vec4 vWorldPosition;"); src.push("flat in uint vFlags2;"); @@ -474,10 +412,8 @@ class TrianglesDataTextureSnapPickZBufferInitializer { } } src.push("in highp vec3 relativeToOriginPosition;"); - - src.push("out highp ivec4 outCoords;"); + src.push("out highp ivec4 outCoords;"); src.push("void main(void) {"); - if (clipping) { src.push(" bool clippable = vFlags2 > 0u;"); src.push(" if (clippable) {"); @@ -490,14 +426,11 @@ class TrianglesDataTextureSnapPickZBufferInitializer { src.push(" if (dist > 0.0) { discard; }"); src.push(" }"); } - if (scene.logarithmicDepthBufferEnabled) { src.push(" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;"); } - - src.push("outCoords = ivec4(relativeToOriginPosition.xyz*_coordinateScaler.xyz, - _layerNumber);") + src.push("outCoords = ivec4(relativeToOriginPosition.xyz * uCoordinateScaler.xyz, - uLayerNumber);") src.push("}"); - return src; } @@ -512,5 +445,3 @@ class TrianglesDataTextureSnapPickZBufferInitializer { this._program = null; } } - -export {TrianglesDataTextureSnapPickZBufferInitializer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureVertexDepthRenderer.js b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js similarity index 70% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureVertexDepthRenderer.js rename to src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js index 74cdf07e7..145be6a1b 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/renderers/TrianglesDataTextureVertexDepthRenderer.js +++ b/src/viewer/scene/model/dtx/triangles/renderers/TrianglesDataTextureSnapDepthRenderer.js @@ -1,31 +1,13 @@ -import {Program} from "../../../../../../webgl/Program.js"; -import {createRTCViewMat, getPlaneRTCPos} from "../../../../../../math/rtcCoords.js"; -import {math} from "../../../../../../math/math.js"; +import {Program} from "../../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; +import {math} from "../../../../math/math.js"; const tempVec3a = math.vec3(); -/** - * Returns: - * - x != 0 => 1/x, - * - x == 1 => 1 - * - * @param {number} x - */ -function safeInv (x) { - const retVal = 1 / x; - - if (isNaN(retVal) || !isFinite(retVal)) - { - return 1; - } - - return retVal; -} - /** * @private */ -class TrianglesDataTextureVertexDepthRenderer { +export class TrianglesDataTextureSnapDepthRenderer { constructor(scene) { this._scene = scene; @@ -45,9 +27,6 @@ class TrianglesDataTextureVertexDepthRenderer { const model = dataTextureLayer.model; const scene = model.scene; const camera = scene.camera; - /** - * @type {WebGL2RenderingContext} - */ const gl = scene.canvas.gl; const state = dataTextureLayer._state; const textureState = state.textureState; @@ -57,21 +36,15 @@ class TrianglesDataTextureVertexDepthRenderer { frameCtx._origin[1] = origin[1]; frameCtx._origin[2] = origin[2]; - // >>> Calculate the coordinate scaler const aabb = dataTextureLayer.aabb; - - const MAX_INT = 2000000000; - const coordinateDivider = [ - safeInv(aabb[3] - aabb[0]) * MAX_INT, - safeInv(aabb[4] - aabb[1]) * MAX_INT, - safeInv(aabb[5] - aabb[2]) * MAX_INT, + math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT, + math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT, + math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT, ]; - - frameCtx._coordinateScale[0] = safeInv(coordinateDivider[0]); - frameCtx._coordinateScale[1] = safeInv(coordinateDivider[1]); - frameCtx._coordinateScale[2] = safeInv(coordinateDivider[2]); - // <<< Calculate the coordinate scaler + frameCtx._coordinateScale[0] = math.safeInv(coordinateDivider[0]); + frameCtx._coordinateScale[1] = math.safeInv(coordinateDivider[1]); + frameCtx._coordinateScale[2] = math.safeInv(coordinateDivider[2]); if (!this._program) { this._allocate(); @@ -82,12 +55,12 @@ class TrianglesDataTextureVertexDepthRenderer { this._bindProgram(); } - textureState.bindCommonTextures ( + textureState.bindCommonTextures( this._program, - this._uTexturePerObjectIdPositionsDecodeMatrix, - this._uTexturePerVertexIdCoordinates, - this._uTexturePerObjectIdColorsAndFlags, - this._uTextureCameraMatrices, + this._uTexturePerObjectIdPositionsDecodeMatrix, + this._uTexturePerVertexIdCoordinates, + this._uTexturePerObjectIdColorsAndFlags, + this._uTextureCameraMatrices, this._uTextureModelMatrices, this._uTexturePerObjectIdOffsets ); @@ -95,7 +68,7 @@ class TrianglesDataTextureVertexDepthRenderer { let cameraEye = camera.eye; if (frameCtx.pickViewMatrix) { - textureState.bindPickCameraTexture ( + textureState.bindPickCameraTexture( this._program, this._uTextureCameraMatrices ); @@ -110,18 +83,13 @@ class TrianglesDataTextureVertexDepthRenderer { gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); - gl.uniform2fv(this._u_vectorA, frameCtx._vectorA); - gl.uniform2fv(this._u_invVectorAB, frameCtx._invVectorAB); - gl.uniform1i(this._u_layerNumber, frameCtx._layerNumber); - gl.uniform3fv(this._u_coordinateScaler, coordinateDivider); - + gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA); + gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB); + gl.uniform1i(this._uLayerNumber, frameCtx.layerNumber); + gl.uniform3fv(this._uCoordinateScaler, coordinateDivider); gl.uniform1i(this._uRenderPass, renderPass); - gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); - gl.uniform1f(this._uPickZNear, frameCtx.pickZNear); - gl.uniform1f(this._uPickZFar, frameCtx.pickZFar); - if (scene.logarithmicDepthBufferEnabled) { const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix? gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC); @@ -151,41 +119,35 @@ class TrianglesDataTextureVertexDepthRenderer { } } - const glMode = (frameCtx._snapMode === "edge") ? gl.LINES : gl.POINTS; + const glMode = (frameCtx.snapMode === "edge") ? gl.LINES : gl.POINTS; - if (state.numEdgeIndices8Bits > 0) - { + if (state.numEdgeIndices8Bits > 0) { textureState.bindEdgeIndicesTextures( this._program, - this._uTexturePerEdgeIdPortionIds, - this._uTexturePerPolygonIdEdgeIndices, + this._uTexturePerEdgeIdPortionIds, + this._uTexturePerPolygonIdEdgeIndices, 8 // 8 bits edge indices ); - gl.drawArrays(glMode, 0, state.numEdgeIndices8Bits); } - if (state.numEdgeIndices16Bits > 0) - { + if (state.numEdgeIndices16Bits > 0) { textureState.bindEdgeIndicesTextures( this._program, - this._uTexturePerEdgeIdPortionIds, - this._uTexturePerPolygonIdEdgeIndices, + this._uTexturePerEdgeIdPortionIds, + this._uTexturePerPolygonIdEdgeIndices, 16 // 16 bits edge indices ); - gl.drawArrays(glMode, 0, state.numEdgeIndices16Bits); } - if (state.numEdgeIndices32Bits > 0) - { + if (state.numEdgeIndices32Bits > 0) { textureState.bindEdgeIndicesTextures( this._program, - this._uTexturePerEdgeIdPortionIds, - this._uTexturePerPolygonIdEdgeIndices, + this._uTexturePerEdgeIdPortionIds, + this._uTexturePerPolygonIdEdgeIndices, 32 // 32 bits edge indices ); - gl.drawArrays(glMode, 0, state.numEdgeIndices32Bits); } @@ -193,24 +155,17 @@ class TrianglesDataTextureVertexDepthRenderer { } _allocate() { - const scene = this._scene; const gl = scene.canvas.gl; - this._program = new Program(gl, this._buildShader()); - if (this._program.errors) { this.errors = this._program.errors; return; } - const program = this._program; - this._uRenderPass = program.getLocation("renderPass"); this._uPickInvisible = program.getLocation("pickInvisible"); - this._uSectionPlanes = []; - for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) { this._uSectionPlanes.push({ active: program.getLocation("sectionPlaneActive" + i), @@ -218,28 +173,22 @@ class TrianglesDataTextureVertexDepthRenderer { dir: program.getLocation("sectionPlaneDir" + i) }); } - - this._aPackedVertexId = program.getAttribute("packedVertexId"); - this._uPickZNear = program.getLocation("pickZNear"); - this._uPickZFar = program.getLocation("pickZFar"); - if (scene.logarithmicDepthBufferEnabled) { this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); } - - this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; // chipmunk - this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; // chipmunk - this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; // chipmunk - this._uTexturePerPolygonIdEdgeIndices = "uTexturePerPolygonIdEdgeIndices"; // chipmunk - this._uTexturePerEdgeIdPortionIds = "uTexturePerEdgeIdPortionIds"; // chipmunk - this._uTextureCameraMatrices = "uTextureCameraMatrices"; // chipmunk - this._uTextureModelMatrices = "uTextureModelMatrices"; // chipmunk - this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; // chipmunk - this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); // chipmunk - this._u_vectorA = program.getLocation("_vectorA"); // chipmunk - this._u_invVectorAB = program.getLocation("_invVectorAB"); // chipmunk - this._u_layerNumber = program.getLocation("_layerNumber"); // chipmunk - this._u_coordinateScaler = program.getLocation("_coordinateScaler"); // chipmunk + this._uTexturePerObjectIdPositionsDecodeMatrix = "uTexturePerObjectIdPositionsDecodeMatrix"; + this._uTexturePerObjectIdColorsAndFlags = "uTexturePerObjectIdColorsAndFlags"; + this._uTexturePerVertexIdCoordinates = "uTexturePerVertexIdCoordinates"; + this._uTexturePerPolygonIdEdgeIndices = "uTexturePerPolygonIdEdgeIndices"; + this._uTexturePerEdgeIdPortionIds = "uTexturePerEdgeIdPortionIds"; + this._uTextureCameraMatrices = "uTextureCameraMatrices"; + this._uTextureModelMatrices = "uTextureModelMatrices"; + this._uTexturePerObjectIdOffsets = "uTexturePerObjectIdOffsets"; + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); + this.uVectorA = program.getLocation("uSnapVectorA"); + this.uInverseVectorAB = program.getLocation("uSnapInvVectorAB"); + this._uLayerNumber = program.getLocation("uLayerNumber"); + this._uCoordinateScaler = program.getLocation("uCoordinateLayer"); } _bindProgram() { @@ -281,33 +230,33 @@ class TrianglesDataTextureVertexDepthRenderer { src.push("in vec3 offset;"); } - src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); // chipmunk - src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); // chipmunk - src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); // chipmunk - src.push("uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;"); // chipmunk - src.push("uniform mediump usampler2D uTexturePerEdgeIdPortionIds;"); // chipmunk - src.push("uniform highp sampler2D uTextureCameraMatrices;"); // chipmunk - src.push("uniform highp sampler2D uTextureModelMatrices;"); // chipmunk - src.push("uniform vec3 uCameraEyeRtc;"); // chipmunk - src.push("uniform vec2 _vectorA;"); // chipmunk - src.push("uniform vec2 _invVectorAB;"); // chipmunk + src.push("uniform highp sampler2D uTexturePerObjectIdPositionsDecodeMatrix;"); + src.push("uniform lowp usampler2D uTexturePerObjectIdColorsAndFlags;"); + src.push("uniform highp sampler2D uTexturePerObjectIdOffsets;"); + src.push("uniform mediump usampler2D uTexturePerVertexIdCoordinates;"); + src.push("uniform highp usampler2D uTexturePerPolygonIdEdgeIndices;"); + src.push("uniform mediump usampler2D uTexturePerEdgeIdPortionIds;"); + src.push("uniform highp sampler2D uTextureCameraMatrices;"); + src.push("uniform highp sampler2D uTextureModelMatrices;"); + src.push("uniform vec3 uCameraEyeRtc;"); + src.push("uniform vec2 uSnapVectorA;"); + src.push("uniform vec2 uSnapInvVectorAB;"); src.push("vec3 positions[3];") if (scene.logarithmicDepthBufferEnabled) { src.push("uniform float logDepthBufFC;"); src.push("out float vFragDepth;"); + src.push("bool isPerspectiveMatrix(mat4 m) {"); + src.push(" return (m[2][3] == - 1.0);"); + src.push("}"); src.push("out float isPerspective;"); } - src.push("bool isPerspectiveMatrix(mat4 m) {"); - src.push(" return (m[2][3] == - 1.0);"); - src.push("}"); src.push("vec2 remapClipPos(vec2 clipPos) {"); - src.push(" float x = (clipPos.x - _vectorA.x) * _invVectorAB.x;"); - src.push(" float y = (clipPos.y - _vectorA.y) * _invVectorAB.y;"); + src.push(" float x = (clipPos.x - uSnapVectorA.x) * uSnapInvVectorAB.x;"); + src.push(" float y = (clipPos.y - uSnapVectorA.y) * uSnapInvVectorAB.y;"); src.push(" return vec2(x, y);") src.push("}"); @@ -320,14 +269,14 @@ class TrianglesDataTextureVertexDepthRenderer { src.push("void main(void) {"); // camera matrices - src.push ("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); - src.push ("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); + src.push("mat4 viewMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 0), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 0), 0));"); + src.push("mat4 viewNormalMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 1), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 1), 0));"); + src.push("mat4 projMatrix = mat4 (texelFetch (uTextureCameraMatrices, ivec2(0, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(1, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(2, 2), 0), texelFetch (uTextureCameraMatrices, ivec2(3, 2), 0));"); // model matrices - src.push ("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); - src.push ("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); - + src.push("mat4 worldMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 0), 0), texelFetch (uTextureModelMatrices, ivec2(1, 0), 0), texelFetch (uTextureModelMatrices, ivec2(2, 0), 0), texelFetch (uTextureModelMatrices, ivec2(3, 0), 0));"); + src.push("mat4 worldNormalMatrix = mat4 (texelFetch (uTextureModelMatrices, ivec2(0, 1), 0), texelFetch (uTextureModelMatrices, ivec2(1, 1), 0), texelFetch (uTextureModelMatrices, ivec2(2, 1), 0), texelFetch (uTextureModelMatrices, ivec2(3, 1), 0));"); + // constants src.push("int edgeIndex = gl_VertexID / 2;") @@ -339,47 +288,33 @@ class TrianglesDataTextureVertexDepthRenderer { src.push("ivec2 objectIndexCoords = ivec2(objectIndex % 512, objectIndex / 512);"); // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); + src.push("{"); // get vertex base - src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); // chipmunk - + src.push("ivec4 packedVertexBase = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+4, objectIndexCoords.y), 0));"); src.push("ivec4 packedEdgeIndexBaseOffset = ivec4(texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+6, objectIndexCoords.y), 0));"); - src.push("int edgeIndexBaseOffset = (packedEdgeIndexBaseOffset.r << 24) + (packedEdgeIndexBaseOffset.g << 16) + (packedEdgeIndexBaseOffset.b << 8) + packedEdgeIndexBaseOffset.a;"); - src.push("int h_index = (edgeIndex - edgeIndexBaseOffset) & 4095;") src.push("int v_index = (edgeIndex - edgeIndexBaseOffset) >> 12;") - src.push("ivec3 vertexIndices = ivec3(texelFetch(uTexturePerPolygonIdEdgeIndices, ivec2(h_index, v_index), 0));"); src.push("ivec3 uniqueVertexIndexes = vertexIndices + (packedVertexBase.r << 24) + (packedVertexBase.g << 16) + (packedVertexBase.b << 8) + packedVertexBase.a;") - src.push("int indexPositionH = uniqueVertexIndexes[gl_VertexID % 2] & 4095;") src.push("int indexPositionV = uniqueVertexIndexes[gl_VertexID % 2] >> 12;") - - src.push("mat4 positionsDecodeMatrix = transpose(mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*3+2, objectIndexCoords.y), 0), vec4(0, 0, 0, 1)));") - + src.push("mat4 positionsDecodeMatrix = mat4 (texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+0, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+1, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+2, objectIndexCoords.y), 0), texelFetch (uTexturePerObjectIdPositionsDecodeMatrix, ivec2(objectIndexCoords.x*4+3, objectIndexCoords.y), 0));") // get flags & flags2 - src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); // chipmunk - src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // chipmunk - + src.push("uvec4 flags = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+2, objectIndexCoords.y), 0);"); + src.push("uvec4 flags2 = texelFetch (uTexturePerObjectIdColorsAndFlags, ivec2(objectIndexCoords.x*8+3, objectIndexCoords.y), 0);"); // get position src.push("vec3 position = vec3(texelFetch(uTexturePerVertexIdCoordinates, ivec2(indexPositionH, indexPositionV), 0));") - src.push(" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); - // get XYZ offset src.push("vec4 offset = vec4(texelFetch (uTexturePerObjectIdOffsets, objectIndexCoords, 0).rgb, 0.0);"); - src.push("worldPosition.xyz = worldPosition.xyz + offset.xyz;"); - src.push("relativeToOriginPosition = worldPosition.xyz;") - src.push(" vec4 viewPosition = viewMatrix * worldPosition; "); - if (clipping) { src.push(" vWorldPosition = worldPosition;"); src.push(" vFlags2 = flags2.r;"); @@ -398,7 +333,6 @@ class TrianglesDataTextureVertexDepthRenderer { src.push("gl_Position = clipPos;"); src.push(" }"); src.push("}"); - return src; } @@ -408,9 +342,8 @@ class TrianglesDataTextureVertexDepthRenderer { const sectionPlanesState = scene._sectionPlanesState; const clipping = sectionPlanesState.sectionPlanes.length > 0; const src = []; - src.push ('#version 300 es'); + src.push('#version 300 es'); src.push("// Triangles dataTexture pick depth fragment shader"); - src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); src.push("precision highp float;"); src.push("precision highp int;"); @@ -418,19 +351,13 @@ class TrianglesDataTextureVertexDepthRenderer { src.push("precision mediump float;"); src.push("precision mediump int;"); src.push("#endif"); - if (scene.logarithmicDepthBufferEnabled) { src.push("in float isPerspective;"); src.push("uniform float logDepthBufFC;"); src.push("in float vFragDepth;"); } - - src.push("uniform float pickZNear;"); - src.push("uniform float pickZFar;"); - - src.push("uniform int _layerNumber;"); // chipmunk - src.push("uniform vec3 _coordinateScaler;"); // chipmunk - + src.push("uniform int uLayerNumber;"); + src.push("uniform vec3 uCoordinateLayer;"); if (clipping) { src.push("in vec4 vWorldPosition;"); src.push("flat in uint vFlags2;"); @@ -441,10 +368,8 @@ class TrianglesDataTextureVertexDepthRenderer { } } src.push("in highp vec3 relativeToOriginPosition;"); - - src.push("out highp ivec4 outCoords;"); + src.push("out highp ivec4 outCoords;"); src.push("void main(void) {"); - if (clipping) { src.push(" bool clippable = vFlags2 > 0u;"); src.push(" if (clippable) {"); @@ -457,14 +382,11 @@ class TrianglesDataTextureVertexDepthRenderer { src.push(" if (dist > 0.0) { discard; }"); src.push(" }"); } - if (scene.logarithmicDepthBufferEnabled) { src.push(" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;"); } - - src.push("outCoords = ivec4(relativeToOriginPosition.xyz*_coordinateScaler.xyz, _layerNumber);") + src.push("outCoords = ivec4(relativeToOriginPosition.xyz*uCoordinateLayer.xyz, uLayerNumber);") src.push("}"); - return src; } @@ -479,5 +401,3 @@ class TrianglesDataTextureVertexDepthRenderer { this._program = null; } } - -export {TrianglesDataTextureVertexDepthRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/model/index.js b/src/viewer/scene/model/index.js new file mode 100644 index 000000000..756432d60 --- /dev/null +++ b/src/viewer/scene/model/index.js @@ -0,0 +1,3 @@ + +export * from "./PerformanceModel.js"; +export * from "./SceneModel.js"; \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/ScratchMemory.js b/src/viewer/scene/model/vbo/ScratchMemory.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/ScratchMemory.js rename to src/viewer/scene/model/vbo/ScratchMemory.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/VBOSceneModelRenderers.js b/src/viewer/scene/model/vbo/VBOSceneModelRenderers.js similarity index 85% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/VBOSceneModelRenderers.js rename to src/viewer/scene/model/vbo/VBOSceneModelRenderers.js index 5cee7a147..f5dfe2174 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/VBOSceneModelRenderers.js +++ b/src/viewer/scene/model/vbo/VBOSceneModelRenderers.js @@ -1,9 +1,9 @@ -import {createRTCViewMat, getPlaneRTCPos} from "../../../../math/rtcCoords.js"; -import {math} from "../../../../math/math.js"; -import {Program} from "../../../../webgl/Program.js"; -import {stats} from "../../../../stats.js" -import {WEBGL_INFO} from "../../../../webglInfo.js"; -import {RENDER_PASSES} from "../RENDER_PASSES.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../math/rtcCoords.js"; +import {math} from "../../math/math.js"; +import {Program} from "../../webgl/Program.js"; +import {stats} from "../../stats.js" +import {WEBGL_INFO} from "../../webglInfo.js"; +import {RENDER_PASSES} from "./../RENDER_PASSES.js"; const defaultColor = new Float32Array([1, 1, 1, 1]); const edgesDefaultColor = new Float32Array([0, 0, 0, 1]); @@ -12,7 +12,7 @@ const tempVec4 = math.vec4(); const tempVec3a = math.vec3(); class VBOSceneModelRenderer { - constructor(scene, withSAO = false, { instancing = false, edges = false } = {}) { + constructor(scene, withSAO = false, {instancing = false, edges = false} = {}) { this._scene = scene; this._withSAO = withSAO; this._instancing = instancing; @@ -21,7 +21,7 @@ class VBOSceneModelRenderer { /** * Matrices Uniform Block Buffer - * + * * In shaders, matrices in the Matrices Uniform Block MUST be set in this order: * - worldMatrix * - viewMatrix @@ -77,7 +77,6 @@ class VBOSceneModelRenderer { src.push(" mat4 viewNormalMatrix;"); } src.push("};"); - return src; } @@ -87,8 +86,8 @@ class VBOSceneModelRenderer { setSectionPlanesStateUniforms(layer) { const scene = this._scene; - const { gl } = scene.canvas; - const { model, layerIndex } = layer; + const {gl} = scene.canvas; + const {model, layerIndex} = layer; const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length; if (numSectionPlanes > 0) { @@ -225,7 +224,7 @@ class VBOSceneModelRenderer { this._aModelMatrixCol0 = program.getAttribute("modelMatrixCol0"); this._aModelMatrixCol1 = program.getAttribute("modelMatrixCol1"); this._aModelMatrixCol2 = program.getAttribute("modelMatrixCol2"); - + this._aModelNormalMatrixCol0 = program.getAttribute("modelNormalMatrixCol0"); this._aModelNormalMatrixCol1 = program.getAttribute("modelNormalMatrixCol1"); this._aModelNormalMatrixCol2 = program.getAttribute("modelNormalMatrixCol2"); @@ -258,6 +257,8 @@ class VBOSceneModelRenderer { program.bind(); + frameCtx.textureUnit = 0; + if (this._uLightAmbient) { gl.uniform4fv(this._uLightAmbient, lightsState.getAmbientColorAndIntensity()); } @@ -318,77 +319,75 @@ class VBOSceneModelRenderer { } } - _makeVAO(layerState) { + _makeVAO(state) { const gl = this._scene.canvas.gl; const vao = gl.createVertexArray(); gl.bindVertexArray(vao); - const { geometry } = layerState; - if (this._instancing) { - this._aModelMatrixCol0.bindArrayBuffer(layerState.modelMatrixCol0Buf); - this._aModelMatrixCol1.bindArrayBuffer(layerState.modelMatrixCol1Buf); - this._aModelMatrixCol2.bindArrayBuffer(layerState.modelMatrixCol2Buf); - + this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf); + this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf); + this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf); + gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1); gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1); gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1); - + if (this._aModelNormalMatrixCol0) { - this._aModelNormalMatrixCol0.bindArrayBuffer(layerState.modelNormalMatrixCol0Buf); + this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf); gl.vertexAttribDivisor(this._aModelNormalMatrixCol0.location, 1); } if (this._aModelNormalMatrixCol1) { - this._aModelNormalMatrixCol1.bindArrayBuffer(layerState.modelNormalMatrixCol1Buf); + this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf); gl.vertexAttribDivisor(this._aModelNormalMatrixCol1.location, 1); } if (this._aModelNormalMatrixCol2) { - this._aModelNormalMatrixCol2.bindArrayBuffer(layerState.modelNormalMatrixCol2Buf); + this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf); gl.vertexAttribDivisor(this._aModelNormalMatrixCol2.location, 1); } - + } - this._aPosition.bindArrayBuffer(this._instancing ? geometry.positionsBuf : layerState.positionsBuf); + this._aPosition.bindArrayBuffer(this._instancing ? state.positionsBuf : state.positionsBuf); if (this._aUV) { - this._aUV.bindArrayBuffer(this._instancing ? geometry.uvBuf : layerState.uvBuf); + this._aUV.bindArrayBuffer(this._instancing ? state.uvBuf : state.uvBuf); } if (this._aNormal) { - this._aNormal.bindArrayBuffer(this._instancing ? geometry.normalsBuf : layerState.normalsBuf); + this._aNormal.bindArrayBuffer(this._instancing ? state.normalsBuf : state.normalsBuf); } if (this._aMetallicRoughness) { - this._aMetallicRoughness.bindArrayBuffer(layerState.metallicRoughnessBuf); + this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf); if (this._instancing) { gl.vertexAttribDivisor(this._aMetallicRoughness.location, 1); } } if (this._aColor) { - this._aColor.bindArrayBuffer(layerState.colorsBuf ? layerState.colorsBuf : geometry.colorsBuf); - if (this._instancing && geometry && !geometry.colorsBuf) { + this._aColor.bindArrayBuffer(state.colorsBuf ? state.colorsBuf : state.colorsBuf); + if (this._instancing && state.geometry && state.colorsBuf) { gl.vertexAttribDivisor(this._aColor.location, 1); } } if (this._aFlags) { - this._aFlags.bindArrayBuffer(layerState.flagsBuf); + this._aFlags.bindArrayBuffer(state.flagsBuf); if (this._instancing) { gl.vertexAttribDivisor(this._aFlags.location, 1); } } if (this._aOffset) { - this._aOffset.bindArrayBuffer(layerState.offsetsBuf); + this._aOffset.bindArrayBuffer(state.offsetsBuf); if (this._instancing) { gl.vertexAttribDivisor(this._aOffset.location, 1); } } if (this._aPickColor) { - this._aPickColor.bindArrayBuffer(layerState.pickColorsBuf); + this._aPickColor.bindArrayBuffer(state.pickColorsBuf); if (this._instancing) { gl.vertexAttribDivisor(this._aPickColor.location, 1); } @@ -396,18 +395,18 @@ class VBOSceneModelRenderer { if (this._instancing) { if (this._edges) { - geometry.edgeIndicesBuf.bind(); + state.edgeIndicesBuf.bind(); } else { - if (geometry.indicesBuf) { - geometry.indicesBuf.bind(); + if (state.indicesBuf) { + state.indicesBuf.bind(); } } } else { if (this._edges) { - layerState.edgeIndicesBuf.bind(); + state.edgeIndicesBuf.bind(); } else { - if (layerState.indicesBuf) { - layerState.indicesBuf.bind(); + if (state.indicesBuf) { + state.indicesBuf.bind(); } } } @@ -415,20 +414,19 @@ class VBOSceneModelRenderer { return vao; } - drawLayer(frameCtx, layer, renderPass, { colorUniform = false, incrementDrawState = false } = {}) { + drawLayer(frameCtx, layer, renderPass, {colorUniform = false, incrementDrawState = false} = {}) { const maxTextureUnits = WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS; const scene = this._scene; const gl = scene.canvas.gl; - const { _state: state, model } = layer; - const { textureSet, geometry, origin } = state; - const { positionsDecodeMatrix } = this._instancing ? geometry : state; + const {_state: state, model} = layer; + const {textureSet, geometry, origin, positionsDecodeMatrix} = state; const lightsState = scene._lightsState; const pointsMaterial = scene.pointsMaterial; - const { camera } = model.scene; - const { viewNormalMatrix, project } = camera; + const {camera} = model.scene; + const {viewNormalMatrix, project} = camera; const viewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix - const { worldMatrix, worldNormalMatrix } = model; + const {worldMatrix, worldNormalMatrix} = model; if (!this._program) { this._allocate(); @@ -455,18 +453,18 @@ class VBOSceneModelRenderer { this._matricesUniformBlockBufferData.set( (origin) ? createRTCViewMat(viewMatrix, origin) : viewMatrix, offset += mat4Size, - ); + ); this._matricesUniformBlockBufferData.set(frameCtx.pickProjMatrix || project.matrix, offset += mat4Size); this._matricesUniformBlockBufferData.set(positionsDecodeMatrix, offset += mat4Size); this._matricesUniformBlockBufferData.set(worldNormalMatrix, offset += mat4Size); this._matricesUniformBlockBufferData.set(viewNormalMatrix, offset += mat4Size); - + gl.bindBuffer(gl.UNIFORM_BUFFER, this._matricesUniformBlockBuffer); gl.bufferData(gl.UNIFORM_BUFFER, this._matricesUniformBlockBufferData, gl.DYNAMIC_DRAW); gl.bindBufferBase( gl.UNIFORM_BUFFER, - this.matricesUniformBlockBufferBindingPoint, + this._matricesUniformBlockBufferBindingPoint, this._matricesUniformBlockBuffer); @@ -475,7 +473,7 @@ class VBOSceneModelRenderer { this.setSectionPlanesStateUniforms(layer); if (scene.logarithmicDepthBufferEnabled) { - if (this._uLogDepthBufFC ) { + if (this._uLogDepthBufFC) { const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix? gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC); } @@ -497,11 +495,11 @@ class VBOSceneModelRenderer { } if (this._uPositionsDecodeMatrix) { - gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, layer._state.positionsDecodeMatrix); + gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, state.positionsDecodeMatrix); } if (this._uUVDecodeMatrix) { - gl.uniformMatrix3fv(this._uUVDecodeMatrix, false, this._instancing ? geometry.uvDecodeMatrix : state.uvDecodeMatrix); + gl.uniformMatrix3fv(this._uUVDecodeMatrix, false, this._instancing ? state.uvDecodeMatrix : state.uvDecodeMatrix); } if (this._uIntensityRange && pointsMaterial.filterIntensity) { @@ -587,25 +585,25 @@ class VBOSceneModelRenderer { const color = material[colorKey]; const alpha = material[alphaKey]; gl.uniform4f(this._uColor, color[0], color[1], color[2], alpha); - + } else if (renderPass === RENDER_PASSES[`${this._edges ? "EDGES" : "SILHOUETTE"}_HIGHLIGHTED`]) { const material = scene.highlightMaterial._state; const color = material[colorKey]; const alpha = material[alphaKey]; gl.uniform4f(this._uColor, color[0], color[1], color[2], alpha); - + } else if (renderPass === RENDER_PASSES[`${this._edges ? "EDGES" : "SILHOUETTE"}_SELECTED`]) { const material = scene.selectedMaterial._state; const color = material[colorKey]; const alpha = material[alphaKey]; gl.uniform4f(this._uColor, color[0], color[1], color[2], alpha); - + } else { gl.uniform4fv(this._uColor, this._edges ? edgesDefaultColor : defaultColor); } } - this._draw({ geometry, state, frameCtx, incrementDrawState }); + this._draw({geometry, state, frameCtx, incrementDrawState}); gl.bindVertexArray(null); } @@ -624,12 +622,12 @@ class VBOSceneModelRenderer { } class VBOSceneModelTriangleBatchingRenderer extends VBOSceneModelRenderer { - constructor(scene, withSAO, { instancing = false, edges = false } = {}) { - super(scene, withSAO, { instancing, edges }); + constructor(scene, withSAO, {instancing = false, edges = false} = {}) { + super(scene, withSAO, {instancing, edges}); } _draw(drawCfg) { - const { gl } = this._scene.canvas; + const {gl} = this._scene.canvas; const { state, @@ -654,18 +652,18 @@ class VBOSceneModelTriangleBatchingRenderer extends VBOSceneModelRenderer { class VBOSceneModelTriangleBatchingEdgesRenderer extends VBOSceneModelTriangleBatchingRenderer { constructor(scene, withSAO) { - super(scene, withSAO, { instancing: false, edges: true }); + super(scene, withSAO, {instancing: false, edges: true}); } } class VBOSceneModelTriangleInstancingRenderer extends VBOSceneModelRenderer { - constructor(scene, withSAO, { edges = false } = {}) { - super(scene, withSAO, { instancing: true, edges }); + constructor(scene, withSAO, {edges = false} = {}) { + super(scene, withSAO, {instancing: true, edges}); } _draw(drawCfg) { - const { gl } = this._scene.canvas; + const {gl} = this._scene.canvas; const { state, @@ -675,9 +673,9 @@ class VBOSceneModelTriangleInstancingRenderer extends VBOSceneModelRenderer { } = drawCfg; if (this._edges) { - gl.drawElementsInstanced(gl.LINES, geometry.edgeIndicesBuf.numItems, geometry.edgeIndicesBuf.itemType, 0, state.numInstances); + gl.drawElementsInstanced(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances); } else { - gl.drawElementsInstanced(gl.TRIANGLES, geometry.indicesBuf.numItems, geometry.indicesBuf.itemType, 0, state.numInstances); + gl.drawElementsInstanced(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances); if (incrementDrawState) { frameCtx.drawElements++; } @@ -687,13 +685,13 @@ class VBOSceneModelTriangleInstancingRenderer extends VBOSceneModelRenderer { class VBOSceneModelTriangleInstancingEdgesRenderer extends VBOSceneModelTriangleInstancingRenderer { constructor(scene, withSAO) { - super(scene, withSAO, { instancing: true, edges: true }); + super(scene, withSAO, {instancing: true, edges: true}); } } class VBOSceneModelPointBatchingRenderer extends VBOSceneModelRenderer { _draw(drawCfg) { - const { gl } = this._scene.canvas; + const {gl} = this._scene.canvas; const { state, @@ -711,11 +709,11 @@ class VBOSceneModelPointBatchingRenderer extends VBOSceneModelRenderer { class VBOSceneModelPointInstancingRenderer extends VBOSceneModelRenderer { constructor(scene, withSAO) { - super(scene, withSAO, { instancing: true }); + super(scene, withSAO, {instancing: true}); } _draw(drawCfg) { - const { gl } = this._scene.canvas; + const {gl} = this._scene.canvas; const { state, @@ -724,7 +722,7 @@ class VBOSceneModelPointInstancingRenderer extends VBOSceneModelRenderer { incrementDrawState, } = drawCfg; - gl.drawArraysInstanced(gl.POINTS, 0, geometry.positionsBuf.numItems, state.numInstances); + gl.drawArraysInstanced(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances); if (incrementDrawState) { frameCtx.drawArrays++; @@ -734,7 +732,7 @@ class VBOSceneModelPointInstancingRenderer extends VBOSceneModelRenderer { class VBOSceneModelLineBatchingRenderer extends VBOSceneModelRenderer { _draw(drawCfg) { - const { gl } = this._scene.canvas; + const {gl} = this._scene.canvas; const { state, @@ -749,13 +747,14 @@ class VBOSceneModelLineBatchingRenderer extends VBOSceneModelRenderer { } } } + class VBOSceneModelLineInstancingRenderer extends VBOSceneModelRenderer { constructor(scene, withSAO) { - super(scene, withSAO, { instancing: true }); + super(scene, withSAO, {instancing: true}); } _draw(drawCfg) { - const { gl } = this._scene.canvas; + const {gl} = this._scene.canvas; const { state, @@ -764,7 +763,7 @@ class VBOSceneModelLineInstancingRenderer extends VBOSceneModelRenderer { incrementDrawState, } = drawCfg; - gl.drawElementsInstanced(gl.LINES, geometry.indicesBuf.numItems, geometry.indicesBuf.itemType, 0, state.numInstances); + gl.drawElementsInstanced(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances); if (incrementDrawState) { frameCtx.drawElements++; @@ -780,6 +779,6 @@ export { VBOSceneModelPointBatchingRenderer, VBOSceneModelPointInstancingRenderer, VBOSceneModelLineBatchingRenderer, - VBOSceneModelLineInstancingRenderer, + VBOSceneModelLineInstancingRenderer } diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/float16.js b/src/viewer/scene/model/vbo/float16.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/float16.js rename to src/viewer/scene/model/vbo/float16.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/LinesBatchingBuffer.js b/src/viewer/scene/model/vbo/linesBatching/LinesBatchingBuffer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/LinesBatchingBuffer.js rename to src/viewer/scene/model/vbo/linesBatching/LinesBatchingBuffer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/LinesBatchingLayer.js b/src/viewer/scene/model/vbo/linesBatching/LinesBatchingLayer.js similarity index 98% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/LinesBatchingLayer.js rename to src/viewer/scene/model/vbo/linesBatching/LinesBatchingLayer.js index 29d757330..7b974d78d 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/LinesBatchingLayer.js +++ b/src/viewer/scene/model/vbo/linesBatching/LinesBatchingLayer.js @@ -1,10 +1,10 @@ import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js'; import {RENDER_PASSES} from '../../RENDER_PASSES.js'; -import {math} from "../../../../../math/math.js"; -import {RenderState} from "../../../../../webgl/RenderState.js"; -import {ArrayBuf} from "../../../../../webgl/ArrayBuf.js"; -import {geometryCompressionUtils} from "../../../../../math/geometryCompressionUtils.js"; +import {math} from "../../../math/math.js"; +import {RenderState} from "../../../webgl/RenderState.js"; +import {ArrayBuf} from "../../../webgl/ArrayBuf.js"; +import {geometryCompressionUtils} from "../../../math/geometryCompressionUtils.js"; import {getBatchingRenderers} from "./LinesBatchingRenderers.js"; import {LinesBatchingBuffer} from "./LinesBatchingBuffer.js"; import {quantizePositions} from "../../compression.js"; @@ -292,7 +292,6 @@ class LinesBatchingLayer { finalize() { if (this._finalized) { - this.model.error("Already finalized"); return; } diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/LinesBatchingRenderers.js b/src/viewer/scene/model/vbo/linesBatching/LinesBatchingRenderers.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/LinesBatchingRenderers.js rename to src/viewer/scene/model/vbo/linesBatching/LinesBatchingRenderers.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js b/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js rename to src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js b/src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js rename to src/viewer/scene/model/vbo/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/LinesInstancingLayer.js b/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingLayer.js similarity index 97% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/LinesInstancingLayer.js rename to src/viewer/scene/model/vbo/linesInstancing/LinesInstancingLayer.js index d5569b91e..2665cc8cc 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/LinesInstancingLayer.js +++ b/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingLayer.js @@ -1,9 +1,9 @@ import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js'; import {RENDER_PASSES} from '../../RENDER_PASSES.js'; -import {math} from "../../../../../math/math.js"; -import {RenderState} from "../../../../../webgl/RenderState.js"; -import {ArrayBuf} from "../../../../../webgl/ArrayBuf.js"; +import {math} from "../../../math/math.js"; +import {RenderState} from "../../../webgl/RenderState.js"; +import {ArrayBuf} from "../../../webgl/ArrayBuf.js"; import {getInstancingRenderers} from "./LinesInstancingRenderers.js"; const tempUint8Vec4 = new Uint8Array(4); @@ -63,6 +63,14 @@ class LinesInstancingLayer { numInstances: 0, origin: null, geometry: cfg.geometry, + positionsDecodeMatrix: cfg.geometry.positionsDecodeMatrix, // So we can null the geometry for GC + positionsBuf: null, + colorsBuf: null, + flagsBuf: null, + offsetsBuf: null, + modelMatrixCol0Buf: null, + modelMatrixCol1Buf: null, + modelMatrixCol2Buf: null }); // These counts are used to avoid unnecessary render passes @@ -239,6 +247,7 @@ class LinesInstancingLayer { this._modelMatrixCol1 = []; this._modelMatrixCol2 = []; } + this._state.geometry = null; this._finalized = true; } @@ -445,7 +454,7 @@ class LinesInstancingLayer { let colorFlag; if (!visible || culled || xrayed || (highlighted && !this.model.scene.highlightMaterial.glowThrough) - || (selected && !this.model.scene.selectedMaterial.glowThrough) ) { + || (selected && !this.model.scene.selectedMaterial.glowThrough)) { colorFlag = RENDER_PASSES.NOT_RENDERED; } else { if (meshTransparent) { diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/LinesInstancingRenderers.js b/src/viewer/scene/model/vbo/linesInstancing/LinesInstancingRenderers.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/LinesInstancingRenderers.js rename to src/viewer/scene/model/vbo/linesInstancing/LinesInstancingRenderers.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js b/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js rename to src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js b/src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js rename to src/viewer/scene/model/vbo/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/PointsBatchingBuffer.js b/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingBuffer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/PointsBatchingBuffer.js rename to src/viewer/scene/model/vbo/pointsBatching/PointsBatchingBuffer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/PointsBatchingLayer.js b/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingLayer.js similarity index 98% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/PointsBatchingLayer.js rename to src/viewer/scene/model/vbo/pointsBatching/PointsBatchingLayer.js index 9f6efcbe9..7bf76322f 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/PointsBatchingLayer.js +++ b/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingLayer.js @@ -1,10 +1,10 @@ import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js'; import {RENDER_PASSES} from '../../RENDER_PASSES.js'; -import {math} from "../../../../../math/math.js"; -import {RenderState} from "../../../../../webgl/RenderState.js"; -import {ArrayBuf} from "../../../../../webgl/ArrayBuf.js"; -import {geometryCompressionUtils} from "../../../../../math/geometryCompressionUtils.js"; +import {math} from "../../../math/math.js"; +import {RenderState} from "../../../webgl/RenderState.js"; +import {ArrayBuf} from "../../../webgl/ArrayBuf.js"; +import {geometryCompressionUtils} from "../../../math/geometryCompressionUtils.js"; import {getPointsBatchingRenderers} from "./PointsBatchingRenderers.js"; import {PointsBatchingBuffer} from "./PointsBatchingBuffer.js"; import {quantizePositions} from "../../compression.js"; @@ -314,7 +314,6 @@ class PointsBatchingLayer { finalize() { if (this._finalized) { - this.model.error("Already finalized"); return; } diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/PointsBatchingRenderers.js b/src/viewer/scene/model/vbo/pointsBatching/PointsBatchingRenderers.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/PointsBatchingRenderers.js rename to src/viewer/scene/model/vbo/pointsBatching/PointsBatchingRenderers.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js b/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js rename to src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js b/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js rename to src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js b/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js rename to src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js b/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js rename to src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js b/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingShadowRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js rename to src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingShadowRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js b/src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js rename to src/viewer/scene/model/vbo/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/PointsInstancingLayer.js b/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingLayer.js similarity index 98% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/PointsInstancingLayer.js rename to src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingLayer.js index 350758361..a1250a038 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/PointsInstancingLayer.js +++ b/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingLayer.js @@ -1,9 +1,9 @@ import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js'; import {RENDER_PASSES} from '../../RENDER_PASSES.js'; -import {math} from "../../../../../math/math.js"; -import {RenderState} from "../../../../../webgl/RenderState.js"; -import {ArrayBuf} from "../../../../../webgl/ArrayBuf.js"; +import {math} from "../../../math/math.js"; +import {RenderState} from "../../../webgl/RenderState.js"; +import {ArrayBuf} from "../../../webgl/ArrayBuf.js"; import {getPointsInstancingRenderers} from "./PointsInstancingRenderers.js"; const tempUint8Vec4 = new Uint8Array(4); @@ -60,6 +60,13 @@ class PointsInstancingLayer { numInstances: 0, origin: cfg.origin ? math.vec3(cfg.origin) : null, geometry: cfg.geometry, + colorsBuf: null, + flagsBuf: null, + offsetsBuf: null, + modelMatrixCol0Buf: null, + modelMatrixCol1Buf: null, + modelMatrixCol2Buf: null, + pickColorsBuf: null }); // These counts are used to avoid unnecessary render passes @@ -224,6 +231,7 @@ class PointsInstancingLayer { this._state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._pickColors), this._pickColors.length, 4, gl.STATIC_DRAW, normalized); this._pickColors = []; // Release memory } + this._state.geometry = null; this._finalized = true; } @@ -459,7 +467,7 @@ class PointsInstancingLayer { let colorFlag; if (!visible || culled || xrayed || (highlighted && !this.model.scene.highlightMaterial.glowThrough) - || (selected && !this.model.scene.selectedMaterial.glowThrough) ) { + || (selected && !this.model.scene.selectedMaterial.glowThrough)) { colorFlag = RENDER_PASSES.NOT_RENDERED; } else { if (meshTransparent) { diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js b/src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingRenderers.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js rename to src/viewer/scene/model/vbo/pointsInstancing/PointsInstancingRenderers.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js b/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js rename to src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js b/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingDepthRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js rename to src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingDepthRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js b/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js rename to src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js b/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js rename to src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js b/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js rename to src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js b/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingShadowRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js rename to src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingShadowRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js b/src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js rename to src/viewer/scene/model/vbo/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js diff --git a/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js b/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js new file mode 100644 index 000000000..60d1bc8f1 --- /dev/null +++ b/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthBufInitRenderer.js @@ -0,0 +1,340 @@ +import {Program} from "../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../math/rtcCoords.js"; +import {math} from "../../../math/math.js"; + +const tempVec3a = math.vec3(); + +/** + * @private + */ +export class SnapBatchingDepthBufInitRenderer { + + constructor(scene) { + this._scene = scene; + this._hash = this._getHash(); + this._allocate(); + } + + getValid() { + return this._hash === this._getHash(); + }; + + _getHash() { + return this._scene._sectionPlanesState.getHash(); + } + + drawLayer(frameCtx, batchingLayer, renderPass) { + + const model = batchingLayer.model; + const scene = model.scene; + const camera = scene.camera; + const gl = scene.canvas.gl; + const state = batchingLayer._state; + const origin = batchingLayer._state.origin; + let cameraEye = camera.eye; + + frameCtx._origin[0] = origin[0]; + frameCtx._origin[1] = origin[1]; + frameCtx._origin[2] = origin[2]; + + const aabb = batchingLayer.aabb; + const coordinateDivider = [ + math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT, + math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT, + math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT, + ]; + + frameCtx._coordinateScale[0] = math.safeInv(coordinateDivider[0]); + frameCtx._coordinateScale[1] = math.safeInv(coordinateDivider[1]); + frameCtx._coordinateScale[2] = math.safeInv(coordinateDivider[2]); + + if (!this._program) { + this._allocate(); + if (this.errors) { + return; + } + } + + if (frameCtx.lastProgramId !== this._program.id) { + frameCtx.lastProgramId = this._program.id; + this._bindProgram(); + } + + if (frameCtx.pickViewMatrix) { + cameraEye = frameCtx.pickOrigin || cameraEye; + } + + const originCameraEye = [ + cameraEye[0] - origin[0], + cameraEye[1] - origin[1], + cameraEye[2] - origin[2], + ]; + + gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); + + gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA); + gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB); + gl.uniform1i(this._uLayerNumber, frameCtx.layerNumber); + gl.uniform3fv(this._uCoordinateScaler, coordinateDivider); + gl.uniform1i(this._uRenderPass, renderPass); + + gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); + gl.uniform1i(this._uSolid, batchingLayer.solid); + + const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix; + const viewMatrix = origin ? createRTCViewMat(pickViewMatrix, origin) : pickViewMatrix; + + gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix); + gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix); + gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix); + + if (scene.logarithmicDepthBufferEnabled) { + const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix? + gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC); + } + + const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length; + if (numSectionPlanes > 0) { + const sectionPlanes = scene._sectionPlanesState.sectionPlanes; + const baseIndex = batchingLayer.layerIndex * numSectionPlanes; + const renderFlags = model.renderFlags; + for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) { + const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex]; + if (sectionPlaneUniforms) { + const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex]; + gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0); + if (active) { + const sectionPlane = sectionPlanes[sectionPlaneIndex]; + if (origin) { + const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a); + gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos); + } else { + gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos); + } + gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir); + } + } + } + } + + //============================================================= + // TODO: Use drawElements count and offset to draw only one entity + //============================================================= + + gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix); + + this._aPosition.bindArrayBuffer(state.positionsBuf); + + if (this._aOffset) { + this._aOffset.bindArrayBuffer(state.offsetsBuf); + } + + if (this._aFlags) { + this._aFlags.bindArrayBuffer(state.flagsBuf); + } + + // const glMode = (frameCtx.snapMode === "edge") ? gl.LINES : gl.POINTS; + // const primsBuf = (frameCtx.snapMode === "edge") ? state.edgeIndicesBuf : state.positionsBuf; + // gl.drawArrays(glMode, 0, primsBuf.numItems); + + gl.drawArrays(gl.TRIANGLES, 0, state.indicesBuf.numItems); + } + + _allocate() { + const scene = this._scene; + const gl = scene.canvas.gl; + this._program = new Program(gl, this._buildShader()); + if (this._program.errors) { + this.errors = this._program.errors; + return; + } + const program = this._program; + this._uRenderPass = program.getLocation("renderPass"); + this._uPickInvisible = program.getLocation("pickInvisible"); + this._uSolid = program.getLocation("solid"); + this._uPositionsDecodeMatrix = program.getLocation("positionsDecodeMatrix"); + this._uWorldMatrix = program.getLocation("worldMatrix"); + this._uViewMatrix = program.getLocation("viewMatrix"); + this._uProjMatrix = program.getLocation("projMatrix"); + this._uSectionPlanes = []; + for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) { + this._uSectionPlanes.push({ + active: program.getLocation("sectionPlaneActive" + i), + pos: program.getLocation("sectionPlanePos" + i), + dir: program.getLocation("sectionPlaneDir" + i) + }); + } + this._aPosition = program.getAttribute("position"); + this._aOffset = program.getAttribute("offset"); + this._aFlags = program.getAttribute("flags"); + if (scene.logarithmicDepthBufferEnabled) { + this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); + } + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); + this.uVectorA = program.getLocation("snapVectorA"); + this.uInverseVectorAB = program.getLocation("snapInvVectorAB"); + this._uLayerNumber = program.getLocation("layerNumber"); + this._uCoordinateScaler = program.getLocation("coordinateScaler"); + } + + _bindProgram() { + this._program.bind(); + } + + _buildShader() { + return { + vertex: this._buildVertexShader(), + fragment: this._buildFragmentShader() + }; + } + + _buildVertexShader() { + const scene = this._scene; + const clipping = scene._sectionPlanesState.sectionPlanes.length > 0; + const src = []; + src.push ('#version 300 es'); + src.push("// VBO SnapBatchingDepthBufInitRenderer vertex shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("precision highp usampler2D;"); + src.push("precision highp isampler2D;"); + src.push("precision highp sampler2D;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("precision mediump usampler2D;"); + src.push("precision mediump isampler2D;"); + src.push("precision mediump sampler2D;"); + src.push("#endif"); + src.push("uniform int renderPass;"); + src.push("in vec3 position;"); + if (scene.entityOffsetsEnabled) { + src.push("in vec3 offset;"); + } + src.push("in float flags;"); + src.push("uniform bool pickInvisible;"); + src.push("uniform bool solid;"); + src.push("uniform mat4 worldMatrix;"); + src.push("uniform mat4 viewMatrix;"); + src.push("uniform mat4 projMatrix;"); + src.push("uniform mat4 positionsDecodeMatrix;"); + src.push("uniform vec3 uCameraEyeRtc;"); + src.push("uniform vec2 snapVectorA;"); + src.push("uniform vec2 snapInvVectorAB;"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("uniform float logDepthBufFC;"); + src.push("out float vFragDepth;"); + src.push("out float isPerspective;"); + } + src.push("bool isPerspectiveMatrix(mat4 m) {"); + src.push(" return (m[2][3] == - 1.0);"); + src.push("}"); + src.push("vec2 remapClipPos(vec2 clipPos) {"); + src.push(" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;"); + src.push(" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;"); + src.push(" return vec2(x, y);") + src.push("}"); + if (clipping) { + src.push("out vec4 vWorldPosition;"); + src.push("out float vFlags;"); + } + src.push("out highp vec3 relativeToOriginPosition;"); + src.push("void main(void) {"); + // pickFlag = NOT_RENDERED | PICK + // renderPass = PICK + src.push(`int pickFlag = int(flags) >> 12 & 0xF;`); + src.push(`if (pickFlag != renderPass) {`); + src.push(" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);"); // Cull vertex + src.push(" } else {"); + src.push(" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); + if (scene.entityOffsetsEnabled) { + src.push(" worldPosition.xyz = worldPosition.xyz + offset;"); + } + src.push(" relativeToOriginPosition = worldPosition.xyz;"); + src.push(" vec4 viewPosition = viewMatrix * worldPosition; "); + if (clipping) { + src.push(" vWorldPosition = worldPosition;"); + src.push(" vFlags = flags;"); + } + src.push("vec4 clipPos = projMatrix * viewPosition;"); + src.push("float tmp = clipPos.w;") + src.push("clipPos.xyzw /= tmp;") + src.push("clipPos.xy = remapClipPos(clipPos.xy);"); + src.push("clipPos.z += 0.0001;"); // small Z offset + src.push("clipPos.xyzw *= tmp;") + if (scene.logarithmicDepthBufferEnabled) { + src.push("vFragDepth = 1.0 + clipPos.w;"); + src.push("isPerspective = float (isPerspectiveMatrix(projMatrix));"); + } + src.push("gl_Position = clipPos;"); + src.push(" }"); + src.push("}"); + return src; + } + + _buildFragmentShader() { + const scene = this._scene; + const sectionPlanesState = scene._sectionPlanesState; + const clipping = sectionPlanesState.sectionPlanes.length > 0; + const src = []; + src.push ('#version 300 es'); + src.push("// VBO SnapBatchingDepthBufInitRenderer fragment shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("#endif"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("in float isPerspective;"); + src.push("uniform float logDepthBufFC;"); + src.push("in float vFragDepth;"); + } + src.push("uniform int layerNumber;"); + src.push("uniform vec3 coordinateScaler;"); + if (clipping) { + src.push("in vec4 vWorldPosition;"); + src.push("in float vFlags;"); + for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push("uniform bool sectionPlaneActive" + i + ";"); + src.push("uniform vec3 sectionPlanePos" + i + ";"); + src.push("uniform vec3 sectionPlaneDir" + i + ";"); + } + } + src.push("in highp vec3 relativeToOriginPosition;"); + src.push("out highp ivec4 outCoords;"); + src.push("void main(void) {"); + if (clipping) { + src.push(" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;"); + src.push(" if (clippable) {"); + src.push(" float dist = 0.0;"); + for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push(" if (sectionPlaneActive" + i + ") {"); + src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);"); + src.push(" }"); + } + src.push(" if (dist > 0.0) { discard; }"); + src.push(" }"); + } + if (scene.logarithmicDepthBufferEnabled) { + src.push(" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;"); + } + src.push("outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);") + src.push("}"); + return src; + } + + webglContextRestored() { + this._program = null; + } + + destroy() { + if (this._program) { + this._program.destroy(); + } + this._program = null; + } +} + diff --git a/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js b/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js new file mode 100644 index 000000000..14fe40b04 --- /dev/null +++ b/src/viewer/scene/model/vbo/snapBatching/SnapBatchingDepthRenderer.js @@ -0,0 +1,353 @@ +import {Program} from "../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../math/rtcCoords.js"; +import {math} from "../../../math/math.js"; + +const tempVec3a = math.vec3(); + +/** + * @private + */ +export class SnapBatchingDepthRenderer { + + constructor(scene) { + this._scene = scene; + this._hash = this._getHash(); + this._allocate(); + } + + getValid() { + return this._hash === this._getHash(); + }; + + _getHash() { + return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash); + } + + drawLayer(frameCtx, batchingLayer, renderPass) { + + const model = batchingLayer.model; + const scene = model.scene; + const camera = scene.camera; + const gl = scene.canvas.gl; + const state = batchingLayer._state; + const origin = batchingLayer._state.origin; + + frameCtx._origin[0] = origin[0]; + frameCtx._origin[1] = origin[1]; + frameCtx._origin[2] = origin[2]; + + const aabb = batchingLayer.aabb; + const coordinateDivider = [ + math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT, + math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT, + math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT, + ]; + + frameCtx._coordinateScale[0] = math.safeInv(coordinateDivider[0]); + frameCtx._coordinateScale[1] = math.safeInv(coordinateDivider[1]); + frameCtx._coordinateScale[2] = math.safeInv(coordinateDivider[2]); + + + if (!this._program) { + this._allocate(); + if (this.errors) { + return; + } + } + + if (frameCtx.lastProgramId !== this._program.id) { + frameCtx.lastProgramId = this._program.id; + this._bindProgram(); + } + + let cameraEye = camera.eye; + + if (frameCtx.pickViewMatrix) { + cameraEye = frameCtx.pickOrigin || cameraEye; + } + + const originCameraEye = [ + cameraEye[0] - origin[0], + cameraEye[1] - origin[1], + cameraEye[2] - origin[2], + ]; + + gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); + + gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA); + gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB); + gl.uniform1i(this._uLayerNumber, frameCtx.layerNumber); + gl.uniform3fv(this._uCoordinateScaler, coordinateDivider); + + gl.uniform1i(this._uRenderPass, renderPass); + + gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); + + const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix; + const viewMatrix = origin ? createRTCViewMat(pickViewMatrix, origin) : pickViewMatrix; + + gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix); + gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix); + gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix); + + if (scene.logarithmicDepthBufferEnabled) { + const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix? + gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC); + } + + const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length; + if (numSectionPlanes > 0) { + const sectionPlanes = scene._sectionPlanesState.sectionPlanes; + const baseIndex = batchingLayer.layerIndex * numSectionPlanes; + const renderFlags = model.renderFlags; + for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) { + const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex]; + if (sectionPlaneUniforms) { + const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex]; + gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0); + if (active) { + const sectionPlane = sectionPlanes[sectionPlaneIndex]; + if (origin) { + const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a); + gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos); + } else { + gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos); + } + gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir); + } + } + } + } + + //============================================================= + // TODO: Use drawElements count and offset to draw only one entity + //============================================================= + + gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix); + + this._aPosition.bindArrayBuffer(state.positionsBuf); + + if (this._aOffset) { + this._aOffset.bindArrayBuffer(state.offsetsBuf); + } + + if (this._aFlags) { + this._aFlags.bindArrayBuffer(state.flagsBuf); + } + + if (frameCtx.snapMode === "edge") { + state.edgeIndicesBuf.bind(); + gl.drawElements(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0); + state.edgeIndicesBuf.unbind(); // needed? + } else { + gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems); + } + } + + _allocate() { + + const scene = this._scene; + const gl = scene.canvas.gl; + + this._program = new Program(gl, this._buildShader()); + + if (this._program.errors) { + this.errors = this._program.errors; + return; + } + + const program = this._program; + + this._uRenderPass = program.getLocation("renderPass"); + this._uPickInvisible = program.getLocation("pickInvisible"); + this._uPositionsDecodeMatrix = program.getLocation("positionsDecodeMatrix"); + this._uWorldMatrix = program.getLocation("worldMatrix"); + this._uViewMatrix = program.getLocation("viewMatrix"); + this._uProjMatrix = program.getLocation("projMatrix"); + this._uSectionPlanes = []; + + for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) { + this._uSectionPlanes.push({ + active: program.getLocation("sectionPlaneActive" + i), + pos: program.getLocation("sectionPlanePos" + i), + dir: program.getLocation("sectionPlaneDir" + i) + }); + } + + this._aPosition = program.getAttribute("position"); + this._aOffset = program.getAttribute("offset"); + this._aFlags = program.getAttribute("flags"); + + if (scene.logarithmicDepthBufferEnabled) { + this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); + } + + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); + this.uVectorA = program.getLocation("snapVectorA"); + this.uInverseVectorAB = program.getLocation("snapInvVectorAB"); + this._uLayerNumber = program.getLocation("layerNumber"); + this._uCoordinateScaler = program.getLocation("coordinateScaler"); + } + + _bindProgram() { + this._program.bind(); + } + + _buildShader() { + return { + vertex: this._buildVertexShader(), + fragment: this._buildFragmentShader() + }; + } + + _buildVertexShader() { + const scene = this._scene; + const clipping = scene._sectionPlanesState.sectionPlanes.length > 0; + const pointsMaterial = scene.pointsMaterial._state; + const src = []; + src.push ('#version 300 es'); + src.push("// SnapBatchingDepthRenderer vertex shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("precision highp usampler2D;"); + src.push("precision highp isampler2D;"); + src.push("precision highp sampler2D;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("precision mediump usampler2D;"); + src.push("precision mediump isampler2D;"); + src.push("precision mediump sampler2D;"); + src.push("#endif"); + src.push("uniform int renderPass;"); + src.push("in vec3 position;"); + if (scene.entityOffsetsEnabled) { + src.push("in vec3 offset;"); + } + src.push("in float flags;"); + src.push("uniform bool pickInvisible;"); + src.push("uniform mat4 worldMatrix;"); + src.push("uniform mat4 viewMatrix;"); + src.push("uniform mat4 projMatrix;"); + src.push("uniform mat4 positionsDecodeMatrix;"); + src.push("uniform vec3 uCameraEyeRtc;"); + src.push("uniform vec2 snapVectorA;"); + src.push("uniform vec2 snapInvVectorAB;"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("uniform float logDepthBufFC;"); + src.push("out float vFragDepth;"); + src.push("bool isPerspectiveMatrix(mat4 m) {"); + src.push(" return (m[2][3] == - 1.0);"); + src.push("}"); + src.push("out float isPerspective;"); + } + src.push("vec2 remapClipPos(vec2 clipPos) {"); + src.push(" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;"); + src.push(" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;"); + src.push(" return vec2(x, y);") + src.push("}"); + if (clipping) { + src.push("out vec4 vWorldPosition;"); + src.push("out float vFlags;"); + } + src.push("out highp vec3 relativeToOriginPosition;"); + src.push("void main(void) {"); + + // pickFlag = NOT_RENDERED | PICK + // renderPass = PICK + + src.push(`int pickFlag = int(flags) >> 12 & 0xF;`); + src.push(`if (pickFlag != renderPass) {`); + src.push(" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);"); // Cull vertex + src.push(" } else {"); + src.push(" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); "); + if (scene.entityOffsetsEnabled) { + src.push(" worldPosition.xyz = worldPosition.xyz + offset;"); + } + src.push("relativeToOriginPosition = worldPosition.xyz;") + src.push(" vec4 viewPosition = viewMatrix * worldPosition; "); + if (clipping) { + src.push(" vWorldPosition = worldPosition;"); + src.push(" vFlags = flags;"); + } + src.push("vec4 clipPos = projMatrix * viewPosition;"); + src.push("float tmp = clipPos.w;") + src.push("clipPos.xyzw /= tmp;") + src.push("clipPos.xy = remapClipPos(clipPos.xy);"); + src.push("clipPos.xyzw *= tmp;"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("vFragDepth = 1.0 + clipPos.w;"); + src.push("isPerspective = float (isPerspectiveMatrix(projMatrix));"); + } + src.push("gl_Position = clipPos;"); + src.push(" }"); + src.push("}"); + return src; + } + + _buildFragmentShader() { + const scene = this._scene; + const sectionPlanesState = scene._sectionPlanesState; + const clipping = sectionPlanesState.sectionPlanes.length > 0; + const src = []; + src.push ('#version 300 es'); + src.push("// SnapBatchingDepthRenderer fragment shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("#endif"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("in float isPerspective;"); + src.push("uniform float logDepthBufFC;"); + src.push("in float vFragDepth;"); + } + src.push("uniform int layerNumber;"); + src.push("uniform vec3 coordinateScaler;"); + if (clipping) { + src.push("in vec4 vWorldPosition;"); + src.push("in float vFlags;"); + for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push("uniform bool sectionPlaneActive" + i + ";"); + src.push("uniform vec3 sectionPlanePos" + i + ";"); + src.push("uniform vec3 sectionPlaneDir" + i + ";"); + } + } + src.push("in highp vec3 relativeToOriginPosition;"); + src.push("out highp ivec4 outCoords;"); + src.push("void main(void) {"); + if (clipping) { + src.push(" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;"); + src.push(" if (clippable) {"); + src.push(" float dist = 0.0;"); + for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push(" if (sectionPlaneActive" + i + ") {"); + src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);"); + src.push(" }"); + } + src.push(" if (dist > 0.0) { discard; }"); + src.push(" }"); + } + if (scene.logarithmicDepthBufferEnabled) { + src.push(" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;"); + } + src.push("outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);") + src.push("}"); + return src; + } + + webglContextRestored() { + this._program = null; + } + + destroy() { + if (this._program) { + this._program.destroy(); + } + this._program = null; + } +} + diff --git a/src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js b/src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js new file mode 100644 index 000000000..7fca4c8b8 --- /dev/null +++ b/src/viewer/scene/model/vbo/snapBatching/SnapBatchingRenderers.js @@ -0,0 +1,71 @@ +import {SnapBatchingDepthBufInitRenderer} from "./SnapBatchingDepthBufInitRenderer.js"; +import {SnapBatchingDepthRenderer} from "./SnapBatchingDepthRenderer.js"; + +/** + * @private + */ +class SnapBatchingRenderers { + + constructor(scene) { + this._scene = scene; + } + + _compile() { + if (this._snapDepthBufInitRenderer && (!this._snapDepthBufInitRenderer.getValid())) { + this._snapDepthBufInitRenderer.destroy(); + this._snapDepthBufInitRenderer = null; + } + if (this._snapDepthRenderer && (!this._snapDepthRenderer.getValid())) { + this._snapDepthRenderer.destroy(); + this._snapDepthRenderer = null; + } + } + + get snapDepthBufInitRenderer() { + if (!this._snapDepthBufInitRenderer) { + this._snapDepthBufInitRenderer = new SnapBatchingDepthBufInitRenderer(this._scene, false); + } + return this._snapDepthBufInitRenderer; + } + + get snapDepthRenderer() { + if (!this._snapDepthRenderer) { + this._snapDepthRenderer = new SnapBatchingDepthRenderer(this._scene); + } + return this._snapDepthRenderer; + } + + _destroy() { + if (this._snapDepthBufInitRenderer) { + this._snapDepthBufInitRenderer.destroy(); + } + if (this._snapDepthRenderer) { + this._snapDepthRenderer.destroy(); + } + } +} + +const cachedRenderers = {}; + +/** + * @private + */ +function getSnapBatchingRenderers(scene) { + const sceneId = scene.id; + let batchingRenderers = cachedRenderers[sceneId]; + if (!batchingRenderers) { + batchingRenderers = new SnapBatchingRenderers(scene); + cachedRenderers[sceneId] = batchingRenderers; + batchingRenderers._compile(); + scene.on("compile", () => { + batchingRenderers._compile(); + }); + scene.on("destroyed", () => { + delete cachedRenderers[sceneId]; + batchingRenderers._destroy(); + }); + } + return batchingRenderers; +} + +export {getSnapBatchingRenderers} \ No newline at end of file diff --git a/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js b/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js new file mode 100644 index 000000000..2dad5d36d --- /dev/null +++ b/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthBufInitRenderer.js @@ -0,0 +1,366 @@ +import {Program} from "../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../math/rtcCoords.js"; +import {math} from "../../../math/math.js"; + +const tempVec3a = math.vec3(); + +/** + * @private + */ +class SnapInstancingDepthBufInitRenderer { + + constructor(scene) { + this._scene = scene; + this._hash = this._getHash(); + this._allocate(); + } + + getValid() { + return this._hash === this._getHash(); + }; + + _getHash() { + return this._scene._sectionPlanesState.getHash(); + } + + drawLayer(frameCtx, instancingLayer, renderPass) { + + const model = instancingLayer.model; + const scene = model.scene; + const gl = scene.canvas.gl; + const state = instancingLayer._state; + const origin = instancingLayer._state.origin; + const geometry = state.geometry; + + frameCtx._origin[0] = origin[0]; + frameCtx._origin[1] = origin[1]; + frameCtx._origin[2] = origin[2]; + + const aabb = instancingLayer.aabb; + const coordinateDivider = [ + math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT, + math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT, + math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT, + ]; + + frameCtx._coordinateScale[0] = math.safeInv(coordinateDivider[0]); + frameCtx._coordinateScale[1] = math.safeInv(coordinateDivider[1]); + frameCtx._coordinateScale[2] = math.safeInv(coordinateDivider[2]); + + if (!this._program) { + this._allocate(); + if (this.errors) { + return; + } + } + + if (frameCtx.lastProgramId !== this._program.id) { + frameCtx.lastProgramId = this._program.id; + this._bindProgram(); + } + + const camera = scene.camera; + let cameraEye = camera.eye; + + if (frameCtx.pickViewMatrix) { + cameraEye = frameCtx.pickOrigin || cameraEye; + } + + const originCameraEye = [ + cameraEye[0] - origin[0], + cameraEye[1] - origin[1], + cameraEye[2] - origin[2], + ]; + + gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); + + gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA); + gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB); + gl.uniform1i(this._uLayerNumber, frameCtx.layerNumber); + gl.uniform3fv(this._uCoordinateScaler, coordinateDivider); + + gl.uniform1i(this._uRenderPass, renderPass); + + gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); + + const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix; + const rtcPickViewMatrix = (origin) ? createRTCViewMat(pickViewMatrix, origin) : pickViewMatrix; + + gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix); + gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix); + gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix); + + if (scene.logarithmicDepthBufferEnabled) { + const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix + gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC); + } + + const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length; + if (numSectionPlanes > 0) { + const sectionPlanes = scene._sectionPlanesState.sectionPlanes; + const baseIndex = instancingLayer.layerIndex * numSectionPlanes; + const renderFlags = model.renderFlags; + for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) { + const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex]; + if (sectionPlaneUniforms) { + const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex]; + gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0); + if (active) { + const sectionPlane = sectionPlanes[sectionPlaneIndex]; + if (origin) { + const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a); + gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos); + } else { + gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos); + } + gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir); + } + } + } + } + + gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometry.positionsDecodeMatrix); + + this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf); + this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf); + this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf); + + gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1); + gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1); + gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1); + + this._aPosition.bindArrayBuffer(state.positionsBuf); + + if (this._aFlags) { + this._aFlags.bindArrayBuffer(state.flagsBuf); + gl.vertexAttribDivisor(this._aFlags.location, 1); + } + if (this._aOffset) { + this._aOffset.bindArrayBuffer(state.offsetsBuf); + gl.vertexAttribDivisor(this._aOffset.location, 1); + } + + // const glMode = (frameCtx.snapMode === "edge") ? gl.LINES : gl.POINTS; + // const primsBuf = (frameCtx.snapMode === "edge") ? state.edgeIndicesBuf : state.positionsBuf; + // gl.drawArraysInstanced(glMode, 0, primsBuf.numItems, state.numInstances); + + gl.drawArraysInstanced(gl.TRIANGLES, 0, state.indicesBuf.numItems, state.numInstances); + + // Cleanup + gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0); + gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0); + gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0); + if (this._aFlags) { + gl.vertexAttribDivisor(this._aFlags.location, 0); + } + if (this._aOffset) { + gl.vertexAttribDivisor(this._aOffset.location, 0); + } + } + + _allocate() { + const scene = this._scene; + const gl = scene.canvas.gl; + this._program = new Program(gl, this._buildShader()); + if (this._program.errors) { + this.errors = this._program.errors; + return; + } + const program = this._program; + this._uRenderPass = program.getLocation("renderPass"); + this._uPickInvisible = program.getLocation("pickInvisible"); + this._uPositionsDecodeMatrix = program.getLocation("positionsDecodeMatrix"); + this._uWorldMatrix = program.getLocation("worldMatrix"); + this._uViewMatrix = program.getLocation("viewMatrix"); + this._uProjMatrix = program.getLocation("projMatrix"); + this._uSectionPlanes = []; + for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) { + this._uSectionPlanes.push({ + active: program.getLocation("sectionPlaneActive" + i), + pos: program.getLocation("sectionPlanePos" + i), + dir: program.getLocation("sectionPlaneDir" + i) + }); + } + this._aPosition = program.getAttribute("position"); + this._aOffset = program.getAttribute("offset"); + this._aFlags = program.getAttribute("flags"); + this._aModelMatrixCol0 = program.getAttribute("modelMatrixCol0"); + this._aModelMatrixCol1 = program.getAttribute("modelMatrixCol1"); + this._aModelMatrixCol2 = program.getAttribute("modelMatrixCol2"); + if (scene.logarithmicDepthBufferEnabled) { + this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); + } + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); + this.uVectorA = program.getLocation("snapVectorA"); + this.uInverseVectorAB = program.getLocation("snapInvVectorAB"); + this._uLayerNumber = program.getLocation("layerNumber"); + this._uCoordinateScaler = program.getLocation("coordinateScaler"); + } + + _bindProgram() { + this._program.bind(); + + } + + _buildShader() { + return { + vertex: this._buildVertexShader(), + fragment: this._buildFragmentShader() + }; + } + + _buildVertexShader() { + const scene = this._scene; + const sectionPlanesState = scene._sectionPlanesState; + const clipping = sectionPlanesState.sectionPlanes.length > 0; + const src = []; + src.push ('#version 300 es'); + src.push("// Points instancing snap vertex shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("precision highp usampler2D;"); + src.push("precision highp isampler2D;"); + src.push("precision highp sampler2D;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("precision mediump usampler2D;"); + src.push("precision mediump isampler2D;"); + src.push("precision mediump sampler2D;"); + src.push("#endif"); + src.push("uniform int renderPass;"); + src.push("in vec3 position;"); + if (scene.entityOffsetsEnabled) { + src.push("in vec3 offset;"); + } + src.push("in float flags;"); + src.push("in vec4 modelMatrixCol0;"); // Modeling matrix + src.push("in vec4 modelMatrixCol1;"); + src.push("in vec4 modelMatrixCol2;"); + src.push("uniform bool pickInvisible;"); + src.push("uniform mat4 worldMatrix;"); + src.push("uniform mat4 viewMatrix;"); + src.push("uniform mat4 projMatrix;") + src.push("uniform mat4 positionsDecodeMatrix;"); + src.push("uniform vec3 uCameraEyeRtc;"); + src.push("uniform vec2 snapVectorA;"); + src.push("uniform vec2 snapInvVectorAB;"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("uniform float logDepthBufFC;"); + src.push("out float vFragDepth;"); + src.push("bool isPerspectiveMatrix(mat4 m) {"); + src.push(" return (m[2][3] == - 1.0);"); + src.push("}"); + src.push("out float isPerspective;"); + } + src.push("vec2 remapClipPos(vec2 clipPos) {"); + src.push(" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;"); + src.push(" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;"); + src.push(" return vec2(x, y);") + src.push("}"); + if (clipping) { + src.push("out vec4 vWorldPosition;"); + src.push("out float vFlags;"); + } + src.push("out highp vec3 relativeToOriginPosition;"); + src.push("void main(void) {"); + // pickFlag = NOT_RENDERED | PICK + // renderPass = PICK + src.push(`int pickFlag = int(flags) >> 12 & 0xF;`); + src.push(`if (pickFlag != renderPass) {`); + src.push(" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);"); // Cull vertex + src.push("} else {"); + src.push(" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); "); + src.push(" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);"); + if (scene.entityOffsetsEnabled) { + src.push(" worldPosition.xyz = worldPosition.xyz + offset;"); + } + src.push("relativeToOriginPosition = worldPosition.xyz;") + src.push(" vec4 viewPosition = viewMatrix * worldPosition; "); + if (clipping) { + src.push(" vWorldPosition = worldPosition;"); + src.push(" vFlags = flags;"); + } + src.push("vec4 clipPos = projMatrix * viewPosition;"); + src.push("float tmp = clipPos.w;") + src.push("clipPos.xyzw /= tmp;") + src.push("clipPos.xy = remapClipPos(clipPos.xy);"); + src.push("clipPos.z += 0.0001;"); // small Z offset + src.push("clipPos.xyzw *= tmp;") + if (scene.logarithmicDepthBufferEnabled) { + src.push("vFragDepth = 1.0 + clipPos.w;"); + src.push("isPerspective = float (isPerspectiveMatrix(projMatrix));"); + } + src.push("gl_Position = clipPos;"); + src.push("}"); + src.push("}"); + return src; + } + + _buildFragmentShader() { + const scene = this._scene; + const sectionPlanesState = scene._sectionPlanesState; + const clipping = sectionPlanesState.sectionPlanes.length > 0; + const src = []; + src.push ('#version 300 es'); + src.push("// Points instancing pick depth fragment shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("#endif"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("in float isPerspective;"); + src.push("uniform float logDepthBufFC;"); + src.push("in float vFragDepth;"); + } + src.push("uniform int layerNumber;"); + src.push("uniform vec3 coordinateScaler;"); + if (clipping) { + src.push("in vec4 vWorldPosition;"); + src.push("in float vFlags;"); + for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push("uniform bool sectionPlaneActive" + i + ";"); + src.push("uniform vec3 sectionPlanePos" + i + ";"); + src.push("uniform vec3 sectionPlaneDir" + i + ";"); + } + } + src.push("in highp vec3 relativeToOriginPosition;"); + src.push("out highp ivec4 outCoords;"); + src.push("void main(void) {"); + if (clipping) { + src.push(" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;"); + src.push(" if (clippable) {"); + src.push(" float dist = 0.0;"); + for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push("if (sectionPlaneActive" + i + ") {"); + src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);"); + src.push("}"); + } + src.push("if (dist > 0.0) { discard; }"); + src.push("}"); + } + if (scene.logarithmicDepthBufferEnabled) { + src.push(" gl_FragDepth = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;"); + } + src.push("outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);") + src.push("}"); + return src; + } + + webglContextRestored() { + this._program = null; + } + + destroy() { + if (this._program) { + this._program.destroy(); + } + this._program = null; + } +} + +export {SnapInstancingDepthBufInitRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js b/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js new file mode 100644 index 000000000..e0a3dd023 --- /dev/null +++ b/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingDepthRenderer.js @@ -0,0 +1,375 @@ +import {Program} from "../../../webgl/Program.js"; +import {createRTCViewMat, getPlaneRTCPos} from "../../../math/rtcCoords.js"; +import {math} from "../../../math/math.js"; + +const tempVec3a = math.vec3(); + +/** + * @private + */ +class SnapInstancingDepthRenderer { + + constructor(scene) { + this._scene = scene; + this._hash = this._getHash(); + this._allocate(); + } + + getValid() { + return this._hash === this._getHash(); + }; + + _getHash() { + return this._scene._sectionPlanesState.getHash(); + } + + drawLayer(frameCtx, instancingLayer, renderPass) { + + const model = instancingLayer.model; + const scene = model.scene; + const gl = scene.canvas.gl; + const state = instancingLayer._state; + const origin = instancingLayer._state.origin; + const geometry = state.geometry; + + frameCtx._origin[0] = origin[0]; + frameCtx._origin[1] = origin[1]; + frameCtx._origin[2] = origin[2]; + + const aabb = instancingLayer.aabb; + const coordinateDivider = [ + math.safeInv(aabb[3] - aabb[0]) * math.MAX_INT, + math.safeInv(aabb[4] - aabb[1]) * math.MAX_INT, + math.safeInv(aabb[5] - aabb[2]) * math.MAX_INT, + ]; + + frameCtx._coordinateScale[0] = math.safeInv(coordinateDivider[0]); + frameCtx._coordinateScale[1] = math.safeInv(coordinateDivider[1]); + frameCtx._coordinateScale[2] = math.safeInv(coordinateDivider[2]); + + if (!this._program) { + this._allocate(instancingLayer); + if (this.errors) { + return; + } + } + + if (frameCtx.lastProgramId !== this._program.id) { + frameCtx.lastProgramId = this._program.id; + this._bindProgram(); + } + + const camera = scene.camera; + let cameraEye = camera.eye; + + if (frameCtx.pickViewMatrix) { + cameraEye = frameCtx.pickOrigin || cameraEye; + } + + const originCameraEye = [ + cameraEye[0] - origin[0], + cameraEye[1] - origin[1], + cameraEye[2] - origin[2], + ]; + + gl.uniform3fv(this._uCameraEyeRtc, originCameraEye); + + gl.uniform2fv(this.uVectorA, frameCtx.snapVectorA); + gl.uniform2fv(this.uInverseVectorAB, frameCtx.snapInvVectorAB); + gl.uniform1i(this._uLayerNumber, frameCtx.layerNumber); + gl.uniform3fv(this._uCoordinateScaler, coordinateDivider); + + gl.uniform1i(this._uRenderPass, renderPass); + + gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible); + + const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix; + const rtcPickViewMatrix = (origin) ? createRTCViewMat(pickViewMatrix, origin) : pickViewMatrix; + + gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix); + gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix); + + gl.uniformMatrix4fv(this._uProjMatrix, false, camera.projMatrix); + + if (scene.logarithmicDepthBufferEnabled) { + const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix + gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC); + } + + const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length; + if (numSectionPlanes > 0) { + const sectionPlanes = scene._sectionPlanesState.sectionPlanes; + const baseIndex = instancingLayer.layerIndex * numSectionPlanes; + const renderFlags = model.renderFlags; + for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) { + const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex]; + if (sectionPlaneUniforms) { + const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex]; + gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0); + if (active) { + const sectionPlane = sectionPlanes[sectionPlaneIndex]; + if (origin) { + const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, origin, tempVec3a); + gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos); + } else { + gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos); + } + gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir); + } + } + } + } + + gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometry.positionsDecodeMatrix); + + this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf); + this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf); + this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf); + + gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 1); + gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 1); + gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 1); + + this._aPosition.bindArrayBuffer(geometry.positionsBuf); + + this._aFlags.bindArrayBuffer(state.flagsBuf); + gl.vertexAttribDivisor(this._aFlags.location, 1); + + if (this._aOffset) { + this._aOffset.bindArrayBuffer(state.offsetsBuf); + gl.vertexAttribDivisor(this._aOffset.location, 1); + } + + if (frameCtx.snapMode === "edge") { + state.edgeIndicesBuf.bind(); + gl.drawElementsInstanced(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances); + state.edgeIndicesBuf.unbind(); // needed? + } else { + gl.drawArraysInstanced(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances); + } + + + // Cleanup + gl.vertexAttribDivisor(this._aModelMatrixCol0.location, 0); + gl.vertexAttribDivisor(this._aModelMatrixCol1.location, 0); + gl.vertexAttribDivisor(this._aModelMatrixCol2.location, 0); + gl.vertexAttribDivisor(this._aFlags.location, 0); + if (this._aOffset) { + gl.vertexAttribDivisor(this._aOffset.location, 0); + } + } + + _allocate() { + + const scene = this._scene; + const gl = scene.canvas.gl; + + this._program = new Program(gl, this._buildShader()); + + if (this._program.errors) { + this.errors = this._program.errors; + return; + } + + const program = this._program; + + this._uRenderPass = program.getLocation("renderPass"); + this._uPickInvisible = program.getLocation("pickInvisible"); + this._uPositionsDecodeMatrix = program.getLocation("positionsDecodeMatrix"); + this._uWorldMatrix = program.getLocation("worldMatrix"); + this._uViewMatrix = program.getLocation("viewMatrix"); + this._uProjMatrix = program.getLocation("projMatrix"); + this._uSectionPlanes = []; + + for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) { + this._uSectionPlanes.push({ + active: program.getLocation("sectionPlaneActive" + i), + pos: program.getLocation("sectionPlanePos" + i), + dir: program.getLocation("sectionPlaneDir" + i) + }); + } + + this._aPosition = program.getAttribute("position"); + this._aOffset = program.getAttribute("offset"); + this._aFlags = program.getAttribute("flags"); + this._aModelMatrixCol0 = program.getAttribute("modelMatrixCol0"); + this._aModelMatrixCol1 = program.getAttribute("modelMatrixCol1"); + this._aModelMatrixCol2 = program.getAttribute("modelMatrixCol2"); + + if (scene.logarithmicDepthBufferEnabled) { + this._uLogDepthBufFC = program.getLocation("logDepthBufFC"); + } + + this._uCameraEyeRtc = program.getLocation("uCameraEyeRtc"); + this.uVectorA = program.getLocation("snapVectorA"); + this.uInverseVectorAB = program.getLocation("snapInvVectorAB"); + this._uLayerNumber = program.getLocation("layerNumber"); + this._uCoordinateScaler = program.getLocation("coordinateScaler"); + } + + _bindProgram() { + this._program.bind(); + + } + + _buildShader() { + return { + vertex: this._buildVertexShader(), + fragment: this._buildFragmentShader() + }; + } + + _buildVertexShader() { + const scene = this._scene; + const sectionPlanesState = scene._sectionPlanesState; + const clipping = sectionPlanesState.sectionPlanes.length > 0; + const src = []; + src.push ('#version 300 es'); + src.push("// Points instancing snap vertex shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("precision highp usampler2D;"); + src.push("precision highp isampler2D;"); + src.push("precision highp sampler2D;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("precision mediump usampler2D;"); + src.push("precision mediump isampler2D;"); + src.push("precision mediump sampler2D;"); + src.push("#endif"); + src.push("uniform int renderPass;"); + src.push("in vec3 position;"); + if (scene.entityOffsetsEnabled) { + src.push("in vec3 offset;"); + } + src.push("in float flags;"); + src.push("in vec4 modelMatrixCol0;"); // Modeling matrix + src.push("in vec4 modelMatrixCol1;"); + src.push("in vec4 modelMatrixCol2;"); + src.push("uniform bool pickInvisible;"); + src.push("uniform mat4 worldMatrix;"); + src.push("uniform mat4 viewMatrix;"); + src.push("uniform mat4 projMatrix;") + src.push("uniform mat4 positionsDecodeMatrix;"); + src.push("uniform vec3 uCameraEyeRtc;"); + src.push("uniform vec2 snapVectorA;"); + src.push("uniform vec2 snapInvVectorAB;"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("uniform float logDepthBufFC;"); + src.push("out float vFragDepth;"); + src.push("bool isPerspectiveMatrix(mat4 m) {"); + src.push(" return (m[2][3] == - 1.0);"); + src.push("}"); + src.push("out float isPerspective;"); + } + src.push("vec2 remapClipPos(vec2 clipPos) {"); + src.push(" float x = (clipPos.x - snapVectorA.x) * snapInvVectorAB.x;"); + src.push(" float y = (clipPos.y - snapVectorA.y) * snapInvVectorAB.y;"); + src.push(" return vec2(x, y);") + src.push("}"); + if (clipping) { + src.push("out vec4 vWorldPosition;"); + src.push("out float vFlags;"); + } + src.push("out highp vec3 relativeToOriginPosition;"); + src.push("void main(void) {"); + // pickFlag = NOT_RENDERED | PICK + // renderPass = PICK + src.push(`int pickFlag = int(flags) >> 12 & 0xF;`); + src.push(`if (pickFlag != renderPass) {`); + src.push(" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);"); // Cull vertex + src.push("} else {"); + src.push(" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); "); + src.push(" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);"); + if (scene.entityOffsetsEnabled) { + src.push(" worldPosition.xyz = worldPosition.xyz + offset;"); + } + src.push("relativeToOriginPosition = worldPosition.xyz;") + src.push(" vec4 viewPosition = viewMatrix * worldPosition; "); + if (clipping) { + src.push(" vWorldPosition = worldPosition;"); + src.push(" vFlags = flags;"); + } + src.push("vec4 clipPos = projMatrix * viewPosition;"); + src.push("float tmp = clipPos.w;") + src.push("clipPos.xyzw /= tmp;") + src.push("clipPos.xy = remapClipPos(clipPos.xy);"); + src.push("clipPos.xyzw *= tmp;") + if (scene.logarithmicDepthBufferEnabled) { + src.push("vFragDepth = 1.0 + clipPos.w;"); + src.push("isPerspective = float (isPerspectiveMatrix(projMatrix));"); + } + src.push("gl_Position = clipPos;"); + src.push("}"); + src.push("}"); + return src; + } + + _buildFragmentShader() { + const scene = this._scene; + const sectionPlanesState = scene._sectionPlanesState; + const clipping = sectionPlanesState.sectionPlanes.length > 0; + const src = []; + src.push ('#version 300 es'); + src.push("// Points instancing pick depth fragment shader"); + src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH"); + src.push("precision highp float;"); + src.push("precision highp int;"); + src.push("#else"); + src.push("precision mediump float;"); + src.push("precision mediump int;"); + src.push("#endif"); + if (scene.logarithmicDepthBufferEnabled) { + src.push("in float isPerspective;"); + src.push("uniform float logDepthBufFC;"); + src.push("in float vFragDepth;"); + } + src.push("uniform int layerNumber;"); + src.push("uniform vec3 coordinateScaler;"); + if (clipping) { + src.push("in vec4 vWorldPosition;"); + src.push("in float vFlags;"); + for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push("uniform bool sectionPlaneActive" + i + ";"); + src.push("uniform vec3 sectionPlanePos" + i + ";"); + src.push("uniform vec3 sectionPlaneDir" + i + ";"); + } + } + src.push("in highp vec3 relativeToOriginPosition;"); + src.push("out highp ivec4 outCoords;"); + src.push("void main(void) {"); + if (clipping) { + src.push(" bool clippable = (int(vFlags) >> 16 & 0xF) == 1;"); + src.push(" if (clippable) {"); + src.push(" float dist = 0.0;"); + for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) { + src.push("if (sectionPlaneActive" + i + ") {"); + src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);"); + src.push("}"); + } + src.push("if (dist > 0.0) { discard; }"); + src.push("}"); + } + if (scene.logarithmicDepthBufferEnabled) { + src.push("gl_FragDepth = log2( vFragDepth ) * logDepthBufFC * 0.5;"); + } + src.push("outCoords = ivec4(relativeToOriginPosition.xyz*coordinateScaler.xyz, layerNumber);") + src.push("}"); + return src; + } + + webglContextRestored() { + this._program = null; + } + + destroy() { + if (this._program) { + this._program.destroy(); + } + this._program = null; + } +} + +export {SnapInstancingDepthRenderer}; \ No newline at end of file diff --git a/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js b/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js new file mode 100644 index 000000000..2a973ab8e --- /dev/null +++ b/src/viewer/scene/model/vbo/snapInstancing/SnapInstancingRenderers.js @@ -0,0 +1,71 @@ +import {SnapInstancingDepthBufInitRenderer} from "./SnapInstancingDepthBufInitRenderer.js"; +import {SnapInstancingDepthRenderer} from "./SnapInstancingDepthRenderer.js"; + +/** + * @private + */ +class SnapInstancingRenderers { + + constructor(scene) { + this._scene = scene; + } + + _compile() { + if (this._snapDepthBufInitRenderer && (!this._snapDepthBufInitRenderer.getValid())) { + this._snapDepthBufInitRenderer.destroy(); + this._snapDepthBufInitRenderer = null; + } + if (this._snapDepthRenderer && (!this._snapDepthRenderer.getValid())) { + this._snapDepthRenderer.destroy(); + this._snapDepthRenderer = null; + } + } + + get snapDepthBufInitRenderer() { + if (!this._snapDepthBufInitRenderer) { + this._snapDepthBufInitRenderer = new SnapInstancingDepthBufInitRenderer(this._scene, false); + } + return this._snapDepthBufInitRenderer; + } + + get snapDepthRenderer() { + if (!this._snapDepthRenderer) { + this._snapDepthRenderer = new SnapInstancingDepthRenderer(this._scene); + } + return this._snapDepthRenderer; + } + + _destroy() { + if (this._snapDepthBufInitRenderer) { + this._snapDepthBufInitRenderer.destroy(); + } + if (this._snapDepthRenderer) { + this._snapDepthRenderer.destroy(); + } + } +} + +const cachedRenderers = {}; + +/** + * @private + */ +function getSnapInstancingRenderers(scene) { + const sceneId = scene.id; + let instancingRenderers = cachedRenderers[sceneId]; + if (!instancingRenderers) { + instancingRenderers = new SnapInstancingRenderers(scene); + cachedRenderers[sceneId] = instancingRenderers; + instancingRenderers._compile(); + scene.on("compile", () => { + instancingRenderers._compile(); + }); + scene.on("destroyed", () => { + delete cachedRenderers[sceneId]; + instancingRenderers._destroy(); + }); + } + return instancingRenderers; +} + +export {getSnapInstancingRenderers} \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js b/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingBuffer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js rename to src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingBuffer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js b/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingLayer.js similarity index 95% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js rename to src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingLayer.js index aeb1090a4..b588227a4 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js +++ b/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingLayer.js @@ -1,13 +1,14 @@ import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js'; import {RENDER_PASSES} from '../../RENDER_PASSES.js'; -import {math} from "../../../../../math/math.js"; -import {RenderState} from "../../../../../webgl/RenderState.js"; -import {ArrayBuf} from "../../../../../webgl/ArrayBuf.js"; -import {geometryCompressionUtils} from "../../../../../math/geometryCompressionUtils.js"; +import {math} from "../../../math/math.js"; +import {RenderState} from "../../../webgl/RenderState.js"; +import {ArrayBuf} from "../../../webgl/ArrayBuf.js"; +import {geometryCompressionUtils} from "../../../math/geometryCompressionUtils.js"; import {getBatchingRenderers} from "./TrianglesBatchingRenderers.js"; import {TrianglesBatchingBuffer} from "./TrianglesBatchingBuffer.js"; import {quantizePositions, transformAndOctEncodeNormals} from "../../compression.js"; +import {getSnapBatchingRenderers} from "../snapBatching/SnapBatchingRenderers"; const tempMat4 = math.mat4(); const tempMat4b = math.mat4(); @@ -44,6 +45,8 @@ class TrianglesBatchingLayer { */ constructor(cfg) { + console.log("Creating TrianglesBatchingLayer"); + /** * Owner model * @type {VBOSceneModel} @@ -70,6 +73,7 @@ class TrianglesBatchingLayer { this.layerIndex = cfg.layerIndex; this._batchingRenderers = getBatchingRenderers(cfg.model.scene); + this._snapBatchingRenderers = getSnapBatchingRenderers(cfg.model.scene); this._buffer = new TrianglesBatchingBuffer(cfg.maxGeometryBatchSize); this._scratchMemory = cfg.scratchMemory; @@ -84,7 +88,7 @@ class TrianglesBatchingLayer { flagsBuf: null, indicesBuf: null, edgeIndicesBuf: null, - positionsDecodeMatrix: math.mat4(), + positionsDecodeMatrix:null, uvDecodeMatrix: null, textureSet: cfg.textureSet, pbrSupported: false // Set in #finalize if we have enough to support quality rendering @@ -110,17 +114,14 @@ class TrianglesBatchingLayer { this._finalized = false; if (cfg.positionsDecodeMatrix) { - this._state.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix); - this._preCompressedPositionsExpected = true; - } else { - this._preCompressedPositionsExpected = false; + this._state.positionsDecodeMatrix = math.mat4(cfg.positionsDecodeMatrix); } if (cfg.uvDecodeMatrix) { this._state.uvDecodeMatrix = math.mat3(cfg.uvDecodeMatrix); - this._preCompressedNormalsExpected = true; + this._preCompressedUVsExpected = true; } else { - this._preCompressedNormalsExpected = false; + this._preCompressedUVsExpected = false; } if (cfg.origin) { @@ -173,7 +174,7 @@ class TrianglesBatchingLayer { * @param cfg.roughness Roughness factor [0..255] * @param cfg.opacity Opacity [0..255] * @param [cfg.meshMatrix] Flat float 4x4 matrix - * @param [cfg.worldMatrix] Flat float 4x4 matrix + * @param [cfg.sceneModelMatrix] Flat float 4x4 matrix * @param cfg.worldAABB Flat float AABB World-space AABB * @param cfg.pickColor Quantized pick color * @returns {number} Portion ID @@ -199,7 +200,7 @@ class TrianglesBatchingLayer { const roughness = cfg.roughness; const opacity = cfg.opacity; const meshMatrix = cfg.meshMatrix; - const worldMatrix = cfg.worldMatrix; + const sceneModelMatrix = cfg.sceneModelMatrix; const worldAABB = cfg.worldAABB; const pickColor = cfg.pickColor; @@ -210,7 +211,7 @@ class TrianglesBatchingLayer { let numVerts; - if (this._preCompressedPositionsExpected) { + if (this._state.positionsDecodeMatrix) { if (!positionsCompressed) { throw "positionsCompressed expected"; @@ -234,9 +235,9 @@ class TrianglesBatchingLayer { worldAABB[4] = max[1]; worldAABB[5] = max[2]; - if (worldMatrix) { + if (sceneModelMatrix) { math.AABB3ToOBB3(worldAABB, tempOBB3); - math.transformOBB3(worldMatrix, tempOBB3); + math.transformOBB3(sceneModelMatrix, tempOBB3); math.OBB3ToAABB3(tempOBB3, worldAABB); } @@ -272,8 +273,8 @@ class TrianglesBatchingLayer { math.expandAABB3Point3(this._modelAABB, tempVec4b); - if (worldMatrix) { - math.transformPoint4(worldMatrix, tempVec4b, tempVec4c); + if (sceneModelMatrix) { + math.transformPoint4(sceneModelMatrix, tempVec4b, tempVec4c); math.expandAABB3Point3(worldAABB, tempVec4c); } else { math.expandAABB3Point3(worldAABB, tempVec4b); @@ -290,8 +291,8 @@ class TrianglesBatchingLayer { math.expandAABB3Point3(this._modelAABB, tempVec4a); - if (worldMatrix) { - math.transformPoint4(worldMatrix, tempVec4a, tempVec4b); + if (sceneModelMatrix) { + math.transformPoint4(sceneModelMatrix, tempVec4a, tempVec4b); math.expandAABB3Point3(worldAABB, tempVec4b); } else { math.expandAABB3Point3(worldAABB, tempVec4a); @@ -369,7 +370,6 @@ class TrianglesBatchingLayer { } } - for (let i = 0, len = indices.length; i < len; i++) { buffer.indices.push(vertsBaseIndex + indices[i]); } @@ -437,7 +437,6 @@ class TrianglesBatchingLayer { finalize() { if (this._finalized) { - this.model.error("Already finalized"); return; } @@ -446,13 +445,10 @@ class TrianglesBatchingLayer { const buffer = this._buffer; if (buffer.positions.length > 0) { - - const quantizedPositions = (this._preCompressedPositionsExpected) + const quantizedPositions = (this._state.positionsDecodeMatrix) ? new Uint16Array(buffer.positions) - : quantizePositions(buffer.positions, this._modelAABB, state.positionsDecodeMatrix); // BOTTLENECK - + : quantizePositions(buffer.positions, this._modelAABB, this._state.positionsDecodeMatrix = math.mat4()); // BOTTLENECK state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, quantizedPositions.length, 3, gl.STATIC_DRAW); - if (this.model.scene.pickSurfacePrecisionEnabled) { for (let i = 0, numPortions = this._portions.length; i < numPortions; i++) { const portion = this._portions[i]; @@ -463,13 +459,13 @@ class TrianglesBatchingLayer { } } - if (buffer.normals.length > 0) { + if (buffer.normals.length > 0) { // Normals are already oct-encoded const normals = new Int8Array(buffer.normals); let normalized = true; // For oct encoded UInts state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, normals, buffer.normals.length, 3, gl.STATIC_DRAW, normalized); } - if (buffer.colors.length > 0) { + if (buffer.colors.length > 0) { // Colors are already compressed const colors = new Uint8Array(buffer.colors); let normalized = false; state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, buffer.colors.length, 4, gl.DYNAMIC_DRAW, normalized); @@ -1183,6 +1179,26 @@ class TrianglesBatchingLayer { // } } + drawSnapInitDepthBuf(renderFlags, frameCtx) { + if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { + return; + } + this._updateBackfaceCull(renderFlags, frameCtx); + if (this._snapBatchingRenderers.snapDepthBufInitRenderer) { + this._snapBatchingRenderers.snapDepthBufInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); + } + } + + drawSnapDepths(renderFlags, frameCtx) { + if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { + return; + } + this._updateBackfaceCull(renderFlags, frameCtx); + if (this._snapBatchingRenderers.snapDepthRenderer) { + this._snapBatchingRenderers.snapDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); + } + } + //------------------------------------------------------------------------------------------------ precisionRayPickSurface(portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldNormal) { diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js b/src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingRenderers.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js rename to src/viewer/scene/model/vbo/trianglesBatching/TrianglesBatchingRenderers.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingColorTextureRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingFlatColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPBRRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsFlatRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js b/src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js rename to src/viewer/scene/model/vbo/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js b/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingLayer.js similarity index 84% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingLayer.js index cca03afda..39295b18d 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js +++ b/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingLayer.js @@ -1,11 +1,11 @@ import {ENTITY_FLAGS} from '../../ENTITY_FLAGS.js'; import {RENDER_PASSES} from '../../RENDER_PASSES.js'; -import {math} from "../../../../../math/math.js"; -import {RenderState} from "../../../../../webgl/RenderState.js"; -import {ArrayBuf} from "../../../../../webgl/ArrayBuf.js"; +import {math} from "../../../math/math.js"; +import {RenderState} from "../../../webgl/RenderState.js"; +import {ArrayBuf} from "../../../webgl/ArrayBuf.js"; import {getInstancingRenderers} from "./TrianglesInstancingRenderers.js"; -import { createRTCViewMat } from '../../../../../math/rtcCoords.js'; +import {getSnapInstancingRenderers} from "../snapInstancing/SnapInstancingRenderers"; const tempUint8Vec4 = new Uint8Array(4); const tempFloat32 = new Float32Array(1); @@ -37,6 +37,8 @@ class TrianglesInstancingLayer { */ constructor(cfg) { + console.log("Creating TrianglesInstancingLayer"); + /** * Owner model * @type {VBOSceneModel} @@ -56,19 +58,30 @@ class TrianglesInstancingLayer { this.layerIndex = cfg.layerIndex; this._instancingRenderers = getInstancingRenderers(cfg.model.scene); + this._snapInstancingRenderers = getSnapInstancingRenderers(cfg.model.scene); this._aabb = math.collapseAABB3(); - const stateCfg = { + this._state = new RenderState({ numInstances: 0, obb: math.OBB3(), origin: math.vec3(), geometry: cfg.geometry, textureSet: cfg.textureSet, - pbrSupported: false // Set in #finalize if we have enough to support quality rendering - }; - - this._state = new RenderState(stateCfg); + pbrSupported: false, // Set in #finalize if we have enough to support quality rendering + positionsDecodeMatrix: cfg.geometry.positionsDecodeMatrix, // So we can null the geometry for GC + colorsBuf: null, + metallicRoughnessBuf: null, + flagsBuf: null, + offsetsBuf: null, + modelMatrixCol0Buf: null, + modelMatrixCol1Buf: null, + modelMatrixCol2Buf: null, + modelNormalMatrixCol0Buf: null, + modelNormalMatrixCol1Buf: null, + modelNormalMatrixCol2Buf: null, + pickColorsBuf: null + }); // These counts are used to avoid unnecessary render passes this._numPortions = 0; @@ -120,6 +133,12 @@ class TrianglesInstancingLayer { * @type {boolean} */ this.solid = !!cfg.solid; + + /** + * The number of indices in this layer. + * @type {number|*} + */ + this.numIndices = cfg.geometry.numIndices; } /** @@ -135,6 +154,7 @@ class TrianglesInstancingLayer { * @param cfg.roughness Roughness factor [0..255] * @param cfg.opacity Opacity [0..255]. * @param cfg.meshMatrix Flat float 4x4 matrix. + * @param [cfg.sceneModelMatrix] Flat float 4x4 matrix. * @param [cfg.worldMatrix] Flat float 4x4 matrix. * @param cfg.worldAABB Flat float AABB. * @param cfg.pickColor Quantized pick color @@ -145,9 +165,9 @@ class TrianglesInstancingLayer { const color = cfg.color; const metallic = cfg.metallic; const roughness = cfg.roughness; - const opacity = cfg.opacity; + const opacity = cfg.opacity !== null && cfg.opacity !== undefined ? cfg.opacity : 255; const meshMatrix = cfg.meshMatrix; - const worldMatrix = cfg.worldMatrix; + const sceneModelMatrix = cfg.sceneModelMatrix; const worldAABB = cfg.aabb; const pickColor = cfg.pickColor; @@ -157,10 +177,9 @@ class TrianglesInstancingLayer { // TODO: find AABB for portion by transforming the geometry local AABB by the given meshMatrix? - const r = color[0]; // Color is pre-quantized by VBOSceneModel + const r = color[0]; // Color is pre-quantized by SceneModel const g = color[1]; const b = color[2]; - const a = color[3]; this._colors.push(r); this._colors.push(g); @@ -191,7 +210,7 @@ class TrianglesInstancingLayer { this._modelMatrixCol2.push(meshMatrix[10]); this._modelMatrixCol2.push(meshMatrix[14]); - if (this._state.geometry.normalsBuf) { + if (this._state.geometry.normals) { // Note: order of inverse and transpose doesn't matter @@ -222,33 +241,18 @@ class TrianglesInstancingLayer { this._pickColors.push(pickColor[3]); // Expand AABB - math.collapseAABB3(worldAABB); - - let lenPositions; - let positions; - - if (this._state.geometry._positionsCompressed) { - lenPositions = this._state.geometry._positionsCompressed.length; - positions = this._state.geometry._positionsCompressed; - } else { - lenPositions = this._state.geometry._positions.length; - positions = this._state.geometry._positions; - } + const lenPositions = this._state.geometry.positionsCompressed.length; + const positions = this._state.geometry.positionsCompressed; + const positionsDecodeMatrix = this._state.geometry.positionsDecodeMatrix; for (let i = 0; i < lenPositions; i += 3) { - if (this._state.geometry._positionsCompressed) { - tempVec4a[0] = positions[i + 0]; - tempVec4a[1] = positions[i + 1]; - tempVec4a[2] = positions[i + 2]; - math.transformPoint4(this._state.geometry._positionsDecodeMatrix, tempVec4a, tempVec4b); - } else { - tempVec4b[0] = positions[i + 0]; - tempVec4b[1] = positions[i + 1]; - tempVec4b[2] = positions[i + 2]; - } + tempVec4a[0] = positions[i + 0]; + tempVec4a[1] = positions[i + 1]; + tempVec4a[2] = positions[i + 2]; + math.transformPoint4(positionsDecodeMatrix, tempVec4a, tempVec4b); math.transformPoint4(meshMatrix, tempVec4b, tempVec4a); - if (worldMatrix) { - math.transformPoint4(worldMatrix, tempVec4a, tempVec4c); + if (sceneModelMatrix) { + math.transformPoint4(sceneModelMatrix, tempVec4a, tempVec4c); math.expandAABB3Point3(worldAABB, tempVec4c); } else { math.expandAABB3Point3(worldAABB, tempVec4a); @@ -288,77 +292,114 @@ class TrianglesInstancingLayer { } finalize() { + if (this._finalized) { - throw "Already finalized"; + return; } + const state = this._state; const geometry = state.geometry; const textureSet = state.textureSet; const gl = this.model.scene.canvas.gl; const colorsLength = this._colors.length; const flagsLength = colorsLength / 4; + if (colorsLength > 0) { let notNormalized = false; - this._state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._colors), this._colors.length, 4, gl.DYNAMIC_DRAW, notNormalized); + state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._colors), this._colors.length, 4, gl.DYNAMIC_DRAW, notNormalized); this._colors = []; // Release memory } + if (this._metallicRoughness.length > 0) { const metallicRoughness = new Uint8Array(this._metallicRoughness); let normalized = false; - this._state.metallicRoughnessBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, metallicRoughness, this._metallicRoughness.length, 2, gl.STATIC_DRAW, normalized); + state.metallicRoughnessBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, metallicRoughness, this._metallicRoughness.length, 2, gl.STATIC_DRAW, normalized); } + if (flagsLength > 0) { // Because we only build flags arrays here, // get their length from the colors array let notNormalized = false; - this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(flagsLength), flagsLength, 1, gl.DYNAMIC_DRAW, notNormalized); + state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(flagsLength), flagsLength, 1, gl.DYNAMIC_DRAW, notNormalized); } + if (this.model.scene.entityOffsetsEnabled) { if (this._offsets.length > 0) { const notNormalized = false; - this._state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized); + state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized); this._offsets = []; // Release memory } } + + if (geometry.positionsCompressed && geometry.positionsCompressed.length > 0) { + const normalized = false; + state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, geometry.positionsCompressed, geometry.positionsCompressed.length, 3, gl.STATIC_DRAW, normalized); + state.positionsDecodeMatrix = math.mat4(geometry.positionsDecodeMatrix); + } + // if (geometry.normalsCompressed && geometry.normalsCompressed.length > 0) { + // const normalized = true; // For oct-encoded UInt8 + // state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, geometry.normalsCompressed, geometry.normalsCompressed.length, 3, gl.STATIC_DRAW, normalized); + // } + if (geometry.colorsCompressed && geometry.colorsCompressed.length > 0) { + const colorsCompressed = new Uint8Array(geometry.colorsCompressed); + const notNormalized = false; + state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized); + } + if (geometry.uvCompressed && geometry.uvCompressed.length > 0) { + const uvCompressed = geometry.uvCompressed; + state.uvDecodeMatrix = geometry.uvDecodeMatrix; + state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uvCompressed, uvCompressed.length, 2, gl.STATIC_DRAW, false); + } + if (geometry.indices && geometry.indices.length > 0) { + state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(geometry.indices), geometry.indices.length, 1, gl.STATIC_DRAW); + state.numIndices = geometry.indices.length; + } + if (geometry.primitive === "triangles" || geometry.primitive === "solid" || geometry.primitive === "surface") { + state.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(geometry.edgeIndices), geometry.edgeIndices.length, 1, gl.STATIC_DRAW); + } + if (this._modelMatrixCol0.length > 0) { const normalized = false; - this._state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized); - this._state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized); - this._state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized); + state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized); + state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized); + state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized); this._modelMatrixCol0 = []; this._modelMatrixCol1 = []; this._modelMatrixCol2 = []; - if (this._state.geometry.normalsBuf) { - this._state.modelNormalMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol0), this._modelNormalMatrixCol0.length, 4, gl.STATIC_DRAW, normalized); - this._state.modelNormalMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol1), this._modelNormalMatrixCol1.length, 4, gl.STATIC_DRAW, normalized); - this._state.modelNormalMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol2), this._modelNormalMatrixCol2.length, 4, gl.STATIC_DRAW, normalized); + if (state.normalsBuf) { + state.modelNormalMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol0), this._modelNormalMatrixCol0.length, 4, gl.STATIC_DRAW, normalized); + state.modelNormalMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol1), this._modelNormalMatrixCol1.length, 4, gl.STATIC_DRAW, normalized); + state.modelNormalMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol2), this._modelNormalMatrixCol2.length, 4, gl.STATIC_DRAW, normalized); this._modelNormalMatrixCol0 = []; this._modelNormalMatrixCol1 = []; this._modelNormalMatrixCol2 = []; } } + if (this._pickColors.length > 0) { const normalized = false; - this._state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._pickColors), this._pickColors.length, 4, gl.STATIC_DRAW, normalized); + state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._pickColors), this._pickColors.length, 4, gl.STATIC_DRAW, normalized); this._pickColors = []; // Release memory } - this._state.pbrSupported + state.pbrSupported = !!state.metallicRoughnessBuf - && !!geometry.uvBuf - && !!geometry.normalsBuf + && !!state.uvBuf + && !!state.normalsBuf && !!textureSet && !!textureSet.colorTexture && !!textureSet.metallicRoughnessTexture; - this._state.colorTextureSupported - = !!geometry.uvBuf + state.colorTextureSupported + = !!state.uvBuf && !!textureSet && !!textureSet.colorTexture; + this._state.geometry = null; + this._finalized = true; } @@ -597,7 +638,7 @@ class TrianglesInstancingLayer { let colorFlag; if (!visible || culled || xrayed || (highlighted && !this.model.scene.highlightMaterial.glowThrough) - || (selected && !this.model.scene.selectedMaterial.glowThrough) ) { + || (selected && !this.model.scene.selectedMaterial.glowThrough)) { colorFlag = RENDER_PASSES.NOT_RENDERED; } else { if (meshTransparent) { @@ -692,15 +733,15 @@ class TrianglesInstancingLayer { const offsetZ = origin[2] + offset[2]; const worldPos = tempVec4a; const portionMatrix = portion.matrix; - const modelMatrix = this.model.worldMatrix; - const positionsDecodeMatrix = geometry.positionsDecodeMatrix; + const sceneModelPatrix = this.model.sceneModelMatrix; + const positionsDecodeMatrix = state.positionsDecodeMatrix; for (let i = 0, len = positions.length; i < len; i += 3) { worldPos[0] = positions[i]; worldPos[1] = positions[i + 1]; worldPos[2] = positions[i + 2]; math.decompressPosition(worldPos, positionsDecodeMatrix); math.transformPoint3(portionMatrix, worldPos); - math.transformPoint3(modelMatrix, worldPos); + math.transformPoint3(sceneModelPatrix, worldPos); worldPos[0] += offsetX; worldPos[1] += offsetY; worldPos[2] += offsetZ; @@ -715,7 +756,6 @@ class TrianglesInstancingLayer { return; } this._updateBackfaceCull(renderFlags, frameCtx); - const geometry = this._state.geometry; if (frameCtx.withSAO && this.model.saoEnabled) { if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.pbrSupported) { if (this._instancingRenderers.pbrRendererWithSAO) { @@ -725,7 +765,7 @@ class TrianglesInstancingLayer { if (this._instancingRenderers.colorTextureRendererWithSAO) { this._instancingRenderers.colorTextureRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); } - } else if (geometry.normalsBuf) { + } else if (this._state.normalsBuf) { if (this._instancingRenderers.colorRendererWithSAO) { this._instancingRenderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); } @@ -742,7 +782,7 @@ class TrianglesInstancingLayer { if (this._instancingRenderers.colorTextureRenderer) { this._instancingRenderers.colorTextureRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); } - } else if (geometry.normalsBuf) { + } else if (this._state.normalsBuf) { if (this._instancingRenderers.colorRenderer) { this._instancingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); } @@ -948,6 +988,26 @@ class TrianglesInstancingLayer { } } + drawSnapInitDepthBuf(renderFlags, frameCtx) { + if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { + return; + } + this._updateBackfaceCull(renderFlags, frameCtx); + if (this._snapInstancingRenderers.snapDepthBufInitRenderer) { + this._snapInstancingRenderers.snapDepthBufInitRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); + } + } + + drawSnapDepths(renderFlags, frameCtx) { + if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) { + return; + } + this._updateBackfaceCull(renderFlags, frameCtx); + if (this._snapInstancingRenderers.snapDepthRenderer) { + this._snapInstancingRenderers.snapDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK); + } + } + //----------------------------------------------------------------------------------------- precisionRayPickSurface(portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldNormal) { @@ -1018,7 +1078,7 @@ class TrianglesInstancingLayer { c[1] = quantizedPositions[ic + 1]; c[2] = quantizedPositions[ic + 2]; - const { positionsDecodeMatrix } = state.geometry; + const {positionsDecodeMatrix} = state.geometry; math.decompressPosition(a, positionsDecodeMatrix); math.decompressPosition(b, positionsDecodeMatrix); @@ -1107,6 +1167,7 @@ class TrianglesInstancingLayer { state.pickColorsBuf = null; } state.destroy(); + this._state = null; } } diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js b/src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingRenderers.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js rename to src/viewer/scene/model/vbo/trianglesInstancing/TrianglesInstancingRenderers.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingColorTextureRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatColorRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingFlatNormalsRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js similarity index 99% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js index 95562649e..078d025a2 100644 --- a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js +++ b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPBRRenderer.js @@ -1,4 +1,4 @@ -import {LinearEncoding, sRGBEncoding} from "../../../../../../constants/constants.js"; +import {LinearEncoding, sRGBEncoding} from "../../../../constants/constants.js"; import {VBOSceneModelTriangleInstancingRenderer} from "../../VBOSceneModelRenderers.js"; const TEXTURE_DECODE_FUNCS = {}; diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsFlatRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js diff --git a/src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js b/src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js similarity index 100% rename from src/viewer/scene/models/VBOSceneModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js rename to src/viewer/scene/model/vbo/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js diff --git a/src/viewer/scene/models/DataTextureSceneModel/DataTextureSceneModel.js b/src/viewer/scene/models/DataTextureSceneModel/DataTextureSceneModel.js deleted file mode 100644 index 385263b52..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/DataTextureSceneModel.js +++ /dev/null @@ -1,1900 +0,0 @@ -import {Component} from "../../Component.js"; -import {math} from "../../math/math.js"; -import {buildEdgeIndices} from '../../math/buildEdgeIndices.js'; -import {WEBGL_INFO} from '../../webglInfo.js'; -import {DataTextureSceneModelMesh} from './lib/DataTextureSceneModelMesh.js'; -import {DataTextureSceneModelNode} from './lib/DataTextureSceneModelNode.js'; -import {prepareMeshGeometry, TrianglesDataTextureLayer} from './lib/layers/trianglesDataTexture/TrianglesDataTextureLayer.js'; - -import {ENTITY_FLAGS} from './lib/ENTITY_FLAGS.js'; -import {utils} from "../../utils.js"; -import {RenderFlags} from "../../webgl/RenderFlags.js"; -import {worldToRTCPositions} from "../../math/rtcCoords.js"; - -import { LodCullingManager } from "./lib/layers/trianglesDataTexture/LodCullingManager.js"; -import { ViewFrustumCullingManager } from "./lib/layers/trianglesDataTexture/ViewFrustumCullingManager.js"; - -const instancedArraysSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS["ANGLE_instanced_arrays"]; - -const tempVec3a = math.vec3(); -const tempMat4 = math.mat4(); - -const defaultScale = math.vec3([1, 1, 1]); -const defaultPosition = math.vec3([0, 0, 0]); -const defaultRotation = math.vec3([0, 0, 0]); -const defaultQuaternion = math.identityQuaternion(); - -/** - * @desc A high-performance data-texture-based model representation for efficient rendering and low memory usage. - * - * - * @implements {Drawable} - * @implements {Entity} - */ -class DataTextureSceneModel extends Component { - - /** - * @constructor - * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well. - * @param {*} [cfg] Configs - * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted. - * @param {Boolean} [cfg.isModel] Specify ````true```` if this DataTextureSceneModel represents a model, in which case the DataTextureSceneModel will be registered by {@link DataTextureSceneModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}. - * @param {Number[]} [cfg.origin=[0,0,0]] World-space double-precision 3D origin. - * @param {Number[]} [cfg.position=[0,0,0]] Local, single-precision 3D position, relative to the origin parameter. - * @param {Number[]} [cfg.scale=[1,1,1]] Local scale. - * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis. - * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters. - * @param {Boolean} [cfg.visible=true] Indicates if the DataTextureSceneModel is initially visible. - * @param {Boolean} [cfg.culled=false] Indicates if the DataTextureSceneModel is initially culled from view. - * @param {Boolean} [cfg.pickable=true] Indicates if the DataTextureSceneModel is initially pickable. - * @param {Boolean} [cfg.clippable=true] Indicates if the DataTextureSceneModel is initially clippable. - * @param {Boolean} [cfg.collidable=true] Indicates if the DataTextureSceneModel is initially included in boundary calculations. - * @param {Boolean} [cfg.xrayed=false] Indicates if the DataTextureSceneModel is initially xrayed. - * @param {Boolean} [cfg.highlighted=false] Indicates if the DataTextureSceneModel is initially highlighted. - * @param {Boolean} [cfg.selected=false] Indicates if the DataTextureSceneModel is initially selected. - * @param {Boolean} [cfg.edges=false] Indicates if the DataTextureSceneModel's edges are initially emphasized. - * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] DataTextureSceneModel's initial RGB colorize color, multiplies by the rendered fragment colors. - * @param {Number} [cfg.opacity=1.0] DataTextureSceneModel's initial opacity factor, multiplies by the rendered fragment alpha. - * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this DataTextureModel. When - * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the - * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s. - * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this DataTextureModel. SAO is configured by the Scene's {@link SAO} component. - * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn. - * @param {Number} [cfg.targetLodFps] Optional target LoD FPS. When provided, will enable LoD culling for this DataTextureModel, with the given target FPS. - * @param {Boolean} [cfg.enableViewFrustumCulling=false] When true, will enable view frustum culling for the objects within this DataTextureModel. - * @param {Boolean} [cfg.disableVertexWelding] Disable vertex welding when loading geometry into the GPU. Default is ```false```. - * @param {Boolean} [cfg.disableIndexRebucketing] Disable index rebucketing when loading geometry into the GPU. Default is ```false```. - */ - constructor(owner, cfg = {}) { - super(owner, cfg); - - if (!(this.scene.canvas.gl instanceof WebGL2RenderingContext)) { - throw "Using a DataTextureSceneModel requires the usage of webgl2"; - } - - /** - * Enable welding vertices when loading geometry into the ```TrianglesDataTextureLayer```. - * - * The welding is applied per-geometry. - * - * @type {Boolean} - */ - this._enableVertexWelding = !cfg.disableVertexWelding; - - /** - * Enable demotion of index bitness then loading geometry into the ```TrianglesDataTextureLayer```. - * - * The rebucketing is applied per-geometry. - * - * @type {Boolean} - */ - this._enableIndexRebucketing = !cfg.disableIndexRebucketing; - - this._targetLodFps = cfg.targetLodFps; - - if (cfg.enableViewFrustumCulling) { - /** - * @type {ViewFrustumCullingManager} - */ - this._vfcManager = new ViewFrustumCullingManager (this); - } - - this._aabb = math.collapseAABB3(); - this._aabbDirty = false; - - /** - * @type {Array} - */ - this._layerList = []; - - /** - * @type {Array} - */ - this._nodeList = []; - - /** - * @type {TrianglesDataTextureLayer} - */ - this._currentDataTextureLayer = null; - - this._instancingGeometries = {}; - - this._preparedInstancingGeometries = {}; - - /** - * @type {Map} - */ - this._meshes = {}; - - /** - * @type {Map} - */ - this._nodes = {}; - - /** - * @type {RenderFlags} - * @private - */ - this.renderFlags = new RenderFlags(); - - /** - * @private - */ - this.numGeometries = 0; // Number of instance-able geometries created with createGeometry() - - // These counts are used to avoid unnecessary render passes - // They are incremented or decremented exclusively by BatchingLayer and InstancingLayer - /** - * @private - */ - this.numPortions = 0; - - /** - * @private - */ - this.numVisibleLayerPortions = 0; - - /** - * @private - */ - this.numTransparentLayerPortions = 0; - - /** - * @private - */ - this.numXRayedLayerPortions = 0; - - /** - * @private - */ - this.numHighlightedLayerPortions = 0; - - /** - * @private - */ - this.numSelectedLayerPortions = 0; - - /** - * @private - */ - this.numEdgesLayerPortions = 0; - - /** - * @private - */ - this.numPickableLayerPortions = 0; - - /** - * @private - */ - this.numClippableLayerPortions = 0; - - /** - * @private - */ - this.numCulledLayerPortions = 0; - - /** @private */ - this.numEntities = 0; - - /** @private */ - this._numTriangles = 0; - - this._edgeThreshold = cfg.edgeThreshold || 10; - - /** - * True when this model has been finalized after a successful call to finalize(). - * @type {boolean} - */ - this.finalized = false; - - this.visible = cfg.visible; - this.culled = cfg.culled; - this.pickable = cfg.pickable; - this.clippable = cfg.clippable; - this.collidable = cfg.collidable; - this.castsShadow = cfg.castsShadow; - this.receivesShadow = cfg.receivesShadow; - this.xrayed = cfg.xrayed; - this.highlighted = cfg.highlighted; - this.selected = cfg.selected; - this.edges = cfg.edges; - this.colorize = cfg.colorize; - this.opacity = cfg.opacity; - this.backfaces = cfg.backfaces; - - // Build static matrix - - this._origin = math.vec3(cfg.origin || [0, 0, 0]); - this._position = math.vec3(cfg.position || [0, 0, 0]); - this._rotation = math.vec3(cfg.rotation || [0, 0, 0]); - this._quaternion = math.vec4(cfg.quaternion || [0, 0, 0, 1]); - if (cfg.rotation) { - math.eulerToQuaternion(this._rotation, "XYZ", this._quaternion); - } - this._scale = math.vec3(cfg.scale || [1, 1, 1]); - this._worldMatrix = math.mat4(); - math.composeMat4(this._position, this._quaternion, this._scale, this._worldMatrix); - this._worldNormalMatrix = math.mat4(); - math.inverseMat4(this._worldMatrix, this._worldNormalMatrix); - math.transposeMat4(this._worldNormalMatrix); - - if (cfg.matrix || cfg.position || cfg.rotation || cfg.scale || cfg.quaternion) { - this._viewMatrix = math.mat4(); - this._viewNormalMatrix = math.mat4(); - this._viewMatrixDirty = true; - this._worldMatrixNonIdentity = true; - } - - this._opacity = 1.0; - this._colorize = [1, 1, 1]; - - this._saoEnabled = (cfg.saoEnabled !== false); - - this._pbrEnabled = false; - - this._isModel = cfg.isModel; - if (this._isModel) { - this.scene._registerModel(this); - } - - this._onCameraViewMatrix = this.scene.camera.on("matrix", () => { - this._viewMatrixDirty = true; - }); - } - - //------------------------------------------------------------------------------------------------------------------ - // DataTextureSceneModel members - //------------------------------------------------------------------------------------------------------------------ - - /** - * Returns true to indicate that this Component is a DataTextureSceneModel. - * @type {Boolean} - */ - get isPerformanceModel() { - return true; - } - - /** - * Returns the {@link Entity}s in this DataTextureSceneModel. - * @returns {*|{}} - */ - get objects() { - return this._nodes; - } - - /** - * Gets the 3D World-space origin for this DataTextureSceneModel. - * - * Each geometry or mesh origin, if supplied, is relative to this origin. - * - * Default value is ````[0,0,0]````. - * - * @type {Float64Array} - * @abstract - */ - get origin() { - return this._origin; - } - - /** - * Gets the DataTextureSceneModel's local translation. - * - * Default value is ````[0,0,0]````. - * - * @type {Number[]} - */ - get position() { - return this._position; - } - - /** - * Gets the DataTextureSceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis. - * - * Default value is ````[0,0,0]````. - * - * @type {Number[]} - */ - get rotation() { - return this._rotation; - } - - /** - * Gets the PerformanceModels's local rotation quaternion. - * - * Default value is ````[0,0,0,1]````. - * - * @type {Number[]} - */ - get quaternion() { - return this._quaternion; - } - - /** - * Gets the DataTextureSceneModel's local scale. - * - * Default value is ````[1,1,1]````. - * - * @type {Number[]} - */ - get scale() { - return this._scale; - } - - /** - * Gets the DataTextureSceneModel's local modeling transform matrix. - * - * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````. - * - * @type {Number[]} - */ - get matrix() { - return this._worldMatrix; - } - - /** - * Gets the DataTextureSceneModel's World matrix. - * - * @property worldMatrix - * @type {Number[]} - */ - get worldMatrix() { - return this._worldMatrix; - } - - /** - * Gets the DataTextureSceneModel's World normal matrix. - * - * @type {Number[]} - */ - get worldNormalMatrix() { - return this._worldNormalMatrix; - } - - /** - * Called by private renderers in ./lib, returns the view matrix with which to - * render this DataTextureSceneModel. The view matrix is the concatenation of the - * Camera view matrix with the Performance model's world (modeling) matrix. - * - * @private - */ - get viewMatrix() { - if (!this._viewMatrix) { - return this.scene.camera.viewMatrix; - } - if (this._viewMatrixDirty) { - math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, this._viewMatrix); - math.inverseMat4(this._viewMatrix, this._viewNormalMatrix); - math.transposeMat4(this._viewNormalMatrix); - this._viewMatrixDirty = false; - } - return this._viewMatrix; - } - - /** - * Called by private renderers in ./lib, returns the view normal matrix with which to render this DataTextureSceneModel. - * - * @private - */ - get viewNormalMatrix() { - if (!this._viewNormalMatrix) { - return this.scene.camera.viewNormalMatrix; - } - if (this._viewMatrixDirty) { - math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, this._viewMatrix); - math.inverseMat4(this._viewMatrix, this._viewNormalMatrix); - math.transposeMat4(this._viewNormalMatrix); - this._viewMatrixDirty = false; - } - return this._viewNormalMatrix; - } - - /** - * Sets if backfaces are rendered for this DataTextureSceneModel. - * - * Default is ````false````. - * - * @type {Boolean} - */ - get backfaces() { - return this._backfaces; - } - - /** - * Sets if backfaces are rendered for this DataTextureSceneModel. - * - * Default is ````false````. - * - * When we set this ````true````, then backfaces are always rendered for this DataTextureSceneModel. - * - * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case, - * the Viewer will: - * - * * hide backfaces on watertight meshes, - * * show backfaces on open meshes, and - * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s. - * - * @type {Boolean} - */ - set backfaces(backfaces) { - backfaces = !!backfaces; - this._backfaces = backfaces; - this.glRedraw(); - } - - /** - * Gets the list of {@link Entity}s within this DataTextureSceneModel. - * - * @returns {Entity[]} - */ - get entityList() { - return this._nodeList; - } - - /** - * Returns true to indicate that DataTextureSceneModel is an {@link Entity}. - * @type {Boolean} - */ - get isEntity() { - return true; - } - - /** - * Returns ````true```` if this DataTextureSceneModel represents a model. - * - * When ````true```` the DataTextureSceneModel will be registered by {@link DataTextureSceneModel#id} in - * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}. - * - * @type {Boolean} - */ - get isModel() { - return this._isModel; - } - - //------------------------------------------------------------------------------------------------------------------ - // DataTextureSceneModel members - //------------------------------------------------------------------------------------------------------------------ - - /** - * Returns ````false```` to indicate that DataTextureSceneModel never represents an object. - * - * @type {Boolean} - */ - get isObject() { - return false; - } - - /** - * Gets the DataTextureSceneModel's World-space 3D axis-aligned bounding box. - * - * Represented by a six-element Float64Array containing the min/max extents of the - * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````. - * - * @type {Number[]} - */ - get aabb() { - if (this._aabbDirty) { - this._rebuildAABB(); - } - return this._aabb; - } - - /** - * The approximate number of triangle primitives in this DataTextureSceneModel. - * - * @type {Number} - */ - get numTriangles() { - return this._numTriangles; - } - - //------------------------------------------------------------------------------------------------------------------ - // Entity members - //------------------------------------------------------------------------------------------------------------------ - - /** - * The approximate number of line primitives in this DataTextureSceneModel. - * - * @type {Number} - */ - get numLines() { - return 0; - } - - /** - * The approximate number of point primitives in this DataTextureSceneModel. - * - * @type {Number} - */ - get numPoints() { - return 0; - } - - /** - * Gets if any {@link Entity}s in this DataTextureSceneModel are visible. - * - * The DataTextureSceneModel is only rendered when {@link DataTextureSceneModel#visible} is ````true```` and {@link DataTextureSceneModel#culled} is ````false````. - * - * @type {Boolean} - */ - get visible() { - return (this.numVisibleLayerPortions > 0); - } - - /** - * Sets if this DataTextureSceneModel is visible. - * - * The DataTextureSceneModel is only rendered when {@link DataTextureSceneModel#visible} is ````true```` and {@link DataTextureSceneModel#culled} is ````false````. - ** - * @type {Boolean} - */ - set visible(visible) { - visible = visible !== false; - this._visible = visible; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].visible = visible; - } - this.glRedraw(); - } - - /** - * Gets if any {@link Entity}s in this DataTextureSceneModel are xrayed. - * - * @type {Boolean} - */ - get xrayed() { - return (this.numXRayedLayerPortions > 0); - } - - /** - * Sets if all {@link Entity}s in this DataTextureSceneModel are xrayed. - * - * @type {Boolean} - */ - set xrayed(xrayed) { - xrayed = !!xrayed; - this._xrayed = xrayed; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].xrayed = xrayed; - } - this.glRedraw(); - } - - /** - * Gets if any {@link Entity}s in this DataTextureSceneModel are highlighted. - * - * @type {Boolean} - */ - get highlighted() { - return (this.numHighlightedLayerPortions > 0); - } - - /** - * Sets if all {@link Entity}s in this DataTextureSceneModel are highlighted. - * - * @type {Boolean} - */ - set highlighted(highlighted) { - highlighted = !!highlighted; - this._highlighted = highlighted; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].highlighted = highlighted; - } - this.glRedraw(); - } - - /** - * Gets if any {@link Entity}s in this DataTextureSceneModel are selected. - * - * @type {Boolean} - */ - get selected() { - return (this.numSelectedLayerPortions > 0); - } - - /** - * Sets if all {@link Entity}s in this DataTextureSceneModel are selected. - * - * @type {Boolean} - */ - set selected(selected) { - selected = !!selected; - this._selected = selected; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].selected = selected; - } - this.glRedraw(); - } - - /** - * Gets if any {@link Entity}s in this DataTextureSceneModel have edges emphasised. - * - * @type {Boolean} - */ - get edges() { - return (this.numEdgesLayerPortions > 0); - } - - /** - * Sets if all {@link Entity}s in this DataTextureSceneModel have edges emphasised. - * - * @type {Boolean} - */ - set edges(edges) { - edges = !!edges; - this._edges = edges; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].edges = edges; - } - this.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModel is culled from view. - * - * The DataTextureSceneModel is only rendered when {@link DataTextureSceneModel#visible} is true and {@link DataTextureSceneModel#culled} is false. - * - * @type {Boolean} - */ - get culled() { - return this._culled; - } - - /** - * Sets if this DataTextureSceneModel is culled from view. - * - * The DataTextureSceneModel is only rendered when {@link DataTextureSceneModel#visible} is true and {@link DataTextureSceneModel#culled} is false. - * - * @type {Boolean} - */ - set culled(culled) { - culled = !!culled; - this._culled = culled; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].culled = culled; - } - this.glRedraw(); - } - - /** - * Gets if {@link Entity}s in this DataTextureSceneModel are clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - */ - get clippable() { - return this._clippable; - } - - /** - * Sets if {@link Entity}s in this DataTextureSceneModel are clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - */ - set clippable(clippable) { - clippable = clippable !== false; - this._clippable = clippable; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].clippable = clippable; - } - this.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModel is collidable. - * - * @type {Boolean} - */ - get collidable() { - return this._collidable; - } - - /** - * Sets if {@link Entity}s in this DataTextureSceneModel are collidable. - * - * @type {Boolean} - */ - set collidable(collidable) { - collidable = collidable !== false; - this._collidable = collidable; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].collidable = collidable; - } - } - - /** - * Gets if this DataTextureSceneModel is pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - */ - get pickable() { - return (this.numPickableLayerPortions > 0); - } - - /** - * Sets if {@link Entity}s in this DataTextureSceneModel are pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - */ - set pickable(pickable) { - pickable = pickable !== false; - this._pickable = pickable; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].pickable = pickable; - } - } - - /** - * Gets the RGB colorize color for this DataTextureSceneModel. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - */ - get colorize() { - return this._colorize; - } - - /** - * Sets the RGB colorize color for this DataTextureSceneModel. - * - * Multiplies by rendered fragment colors. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - */ - set colorize(colorize) { - this._colorize = colorize; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].colorize = colorize; - } - } - - /** - * Gets this DataTextureSceneModel's opacity factor. - * - * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. - * - * @type {Number} - */ - get opacity() { - return this._opacity; - } - - /** - * Sets the opacity factor for this DataTextureSceneModel. - * - * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. - * - * @type {Number} - */ - set opacity(opacity) { - this._opacity = opacity; - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i].opacity = opacity; - } - } - - /** - * Gets if this DataTextureSceneModel casts a shadow. - * - * @type {Boolean} - */ - get castsShadow() { - return this._castsShadow; - } - - /** - * Sets if this DataTextureSceneModel casts a shadow. - * - * @type {Boolean} - */ - set castsShadow(castsShadow) { - castsShadow = (castsShadow !== false); - if (castsShadow !== this._castsShadow) { - this._castsShadow = castsShadow; - this.glRedraw(); - } - } - - /** - * Sets if this DataTextureSceneModel can have shadow cast upon it. - * - * @type {Boolean} - */ - get receivesShadow() { - return this._receivesShadow; - } - - /** - * Sets if this DataTextureSceneModel can have shadow cast upon it. - * - * @type {Boolean} - */ - set receivesShadow(receivesShadow) { - receivesShadow = (receivesShadow !== false); - if (receivesShadow !== this._receivesShadow) { - this._receivesShadow = receivesShadow; - this.glRedraw(); - } - } - - /** - * Gets if Scalable Ambient Obscurance (SAO) will apply to this DataTextureSceneModel. - * - * SAO is configured by the Scene's {@link SAO} component. - * - * Only works when {@link SAO#enabled} is also true. - * - * @type {Boolean} - */ - get saoEnabled() { - return this._saoEnabled; - } - - /** - * Gets if physically-based rendering (PBR) is enabled for this DataTextureSceneModel. - * - * This will always be ````false````. - * - * @type {Boolean} - */ - get pbrEnabled() { - return this._pbrEnabled; - } - - /** - * Returns true to indicate that DataTextureSceneModel is implements {@link Drawable}. - * - * @type {Boolean} - */ - get isDrawable() { - return true; - } - - /** @private */ - get isStateSortable() { - return false - } - - /** - * Configures the appearance of xrayed {@link Entity}s within this DataTextureSceneModel. - * - * This is the {@link Scene#xrayMaterial}. - * - * @type {EmphasisMaterial} - */ - get xrayMaterial() { - return this.scene.xrayMaterial; - } - - /** - * Configures the appearance of highlighted {@link Entity}s within this DataTextureSceneModel. - * - * This is the {@link Scene#highlightMaterial}. - * - * @type {EmphasisMaterial} - */ - get highlightMaterial() { - return this.scene.highlightMaterial; - } - - /** - * Configures the appearance of selected {@link Entity}s within this DataTextureSceneModel. - * - * This is the {@link Scene#selectedMaterial}. - * - * @type {EmphasisMaterial} - */ - get selectedMaterial() { - return this.scene.selectedMaterial; - } - - /** - * Configures the appearance of edges of {@link Entity}s within this DataTextureSceneModel. - * - * This is the {@link Scene#edgeMaterial}. - * - * @type {EdgeMaterial} - */ - get edgeMaterial() { - return this.scene.edgeMaterial; - } - - //------------------------------------------------------------------------------------------------------------------ - // Drawable members - //------------------------------------------------------------------------------------------------------------------ - - /** - * Called by private renderers in ./lib, returns the picking view matrix with which to - * ray-pick on this DataTextureSceneModel. - * - * @private - */ - getPickViewMatrix(pickViewMatrix) { - if (!this._viewMatrix) { - return pickViewMatrix; - } - return this._viewMatrix; - } - - /** - * Creates a reusable geometry within this DataTextureSceneModel. - * - * We can then supply the geometry ID to {@link DataTextureSceneModel#createMesh} when we want to create meshes that instance the geometry. - * - * If provide a ````positionsDecodeMatrix```` , then ````createGeometry()```` will assume - * that the ````positions```` and ````normals```` arrays are compressed. When compressed, ````positions```` will be - * quantized and in World-space, and ````normals```` will be oct-encoded and in World-space. - * - * Note that ````positions````, ````normals```` and ````indices```` are all required together. - * - * @param {*} cfg Geometry properties. - * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link DataTextureSceneModel#createMesh}. - * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'. - * @param {Number[]} cfg.positions Flat array of positions. - * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with 'triangles' primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals. - * @param {Number[]} [cfg.colors] Flat array of RGBA vertex colors as float values in range ````[0..1]````. Ignored when ````geometryId```` is given, overidden by ````color```` and ````colorsCompressed````. - * @param {Number[]} [cfg.colorsCompressed] Flat array of RGBA vertex colors as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given, overrides ````colors```` and is overriden by ````color````. - * @param {Number[]} [cfg.indices] Array of indices. Not required for `points` primitives. - * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only for Required for 'triangles' primitives. These are automatically generated internally if not supplied, using the ````edgeThreshold```` given to the ````DataTextureSceneModel```` constructor. - * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positions````. - * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link DataTextureSceneModel#origin}. When this is given, then every mesh created with {@link DataTextureSceneModel#createMesh} that uses this geometry will - * be transformed relative to this origin. - */ - createGeometry(cfg) { - if (cfg.positionsCompressed && !cfg.positions) - { - cfg.positions = cfg.positionsCompressed; - } - - const geometryId = cfg.id; - - if (geometryId === undefined || geometryId === null) { - this.error("Config missing: id"); - return; - } - if (geometryId in this._instancingGeometries) { - this.error("Geometry already created: " + geometryId); - return; - } - - const primitive = cfg.primitive; - - if (primitive === undefined || primitive === null) { - this.error("Config missing: primitive"); - return; - } - - const cfgOrigin = cfg.origin || cfg.rtcCenter; - const origin = (cfgOrigin) ? math.addVec3(this._origin, cfgOrigin, tempVec3a) : this._origin; - - switch (primitive) { - case "triangles": - case "solid": - case "surface": - - this._instancingGeometries [cfg.id] = utils.apply( - { - origin, - layerIndex: 0, - }, - cfg - ); - this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0); - break; - case "lines": - throw "Not supported at the moment"; - break; - case "points": - throw "Not supported at the moment"; - break; - } - - this.numGeometries++; - } - - /** - * Creates a mesh within this DataTextureSceneModel. - * - * A mesh can either share geometry with other meshes, or have its own unique geometry. - * - * To share a geometry with other meshes, provide the ID of a geometry created earlier - * with {@link DataTextureSceneModel#createGeometry}. - * - * To create unique geometry for the mesh, provide geometry data arrays. - * - * Internally, DataTextureSceneModel will batch all unique mesh geometries into the same arrays, which improves - * rendering performance. - * - * If you accompany the arrays with a ````positionsDecodeMatrix```` , then ````createMesh()```` will assume - * that the ````positions```` and ````normals```` arrays are compressed. When compressed, ````positions```` will be - * quantized and in World-space, and ````normals```` will be oct-encoded and in World-space. - * - * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume - * that the ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the origin of their - * RTC coordinate system. - * - * When providing either ````positionsDecodeMatrix```` or ````origin````, ````createMesh()```` will start a new - * batch each time either of those two parameters change since the last call. Therefore, to combine arrays into the - * minimum number of batches, it's best for performance to create your shared meshes in runs that have the same value - * for ````positionsDecodeMatrix```` and ````origin````. - * - * Note that ````positions````, ````normals```` and ````indices```` are all required together. - * - * @param {object} cfg Object properties. - * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}. - * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link DataTextureSceneModel#createGeometry:method"}}createMesh(){{/crossLink}}. Overrides all other geometry parameters given to this method. - * @param {String} [cfg.primitive="triangles"] Geometry primitive type. Ignored when ````geometryId```` is given. Accepted values are 'points', 'lines' and 'triangles'. - * @param {Number[]} [cfg.positions] Flat array of vertex positions. Ignored when ````geometryId```` is given. - * @param {Number[]} [cfg.colors] Flat array of RGB vertex colors as float values in range ````[0..1]````. Ignored when ````geometryId```` is given, overriden by ````color```` and ````colorsCompressed````. - * @param {Number[]} [cfg.colorsCompressed] Flat array of RGB vertex colors as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given, overrides ````colors```` and is overriden by ````color````. - * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with 'triangles' primitives. When no normals are given, the mesh will be flat shaded using auto-generated face-aligned normals. - * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positions````. - * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link DataTextureSceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this. - * @param {Number[]} [cfg.indices] Array of triangle indices. Ignored when ````geometryId```` is given. - * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. If ````geometryId```` is not given, edge line indices are - * automatically generated internally if not given, using the ````edgeThreshold```` given to the ````DataTextureSceneModel```` - * constructor. This parameter is ignored when ````geometryId```` is given. - * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position. of the mesh - * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. - * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. - * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. - * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..`, 0..1]````. Overrides ````colors```` and ````colorsCompressed````. - * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. - */ - createMesh(cfg) { - if (cfg.positionsCompressed && !cfg.positions) - { - cfg.positions = cfg.positionsCompressed; - } - - if (this._vfcManager && !this._vfcManager.finalized) { - if (cfg.color) { - cfg.color = cfg.color.slice (); - } - - if (cfg.positionsDecodeMatrix) { - cfg.positionsDecodeMatrix = cfg.positionsDecodeMatrix.slice (); - } - - this._vfcManager.addMesh (cfg); - - return; - } - - let id = cfg.id; - if (id === undefined || id === null) { - this.error("Config missing: id"); - return; - } - if (this._meshes[id]) { - this.error("DataTextureSceneModel already has a Mesh with this ID: " + id + ""); - return; - } - - const geometryId = cfg.geometryId; - const instancing = (geometryId !== undefined); - - let geometryCfg = null; - - if (instancing) { - geometryCfg = this._instancingGeometries[geometryId]; - } else { - geometryCfg = cfg; - } - - /** - * This will be the prepared mesh geometry, with index rebucketting applied. - */ - let preparedGeometryCfg = null; - - if (!instancing || !(geometryId in this._preparedInstancingGeometries)) - { - let primitive = geometryCfg.primitive || "triangles"; - - if (primitive !== "triangles" && primitive !== "solid" && primitive !== "surface") { - this.error(`Unsupported value for 'primitive': '${primitive}' - supported values are 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`); - primitive = "triangles"; - } - - let positions = geometryCfg.positions; - - if (!positions) { - this.error("Config missing: positions (no meshIds provided, so expecting geometry arrays instead)"); - return null; - } - - let indices = geometryCfg.indices; - let edgeIndices = geometryCfg.edgeIndices; - - if (!geometryCfg.indices && primitive === "triangles") { - this.error("Config missing for triangles primitive: indices (no meshIds provided, so expecting geometry arrays instead)"); - return null; - } - - if (!edgeIndices) { - edgeIndices = buildEdgeIndices(positions, indices, null, this._edgeThreshold); - } - - geometryCfg.edgeIndices = edgeIndices; - - preparedGeometryCfg = prepareMeshGeometry ( - geometryCfg, - this._enableVertexWelding, - this._enableIndexRebucketing - ); - - if (instancing) { - this._preparedInstancingGeometries[geometryId] = preparedGeometryCfg; - } - } else { - preparedGeometryCfg = this._preparedInstancingGeometries[geometryId]; - } - - let layer = this._currentDataTextureLayer; - - if (null !== layer && !layer.canCreatePortion(preparedGeometryCfg, instancing ? geometryId : null)) - { - layer.finalize(); - delete this._currentDataTextureLayer; - layer = null; - } - - if (!layer) - { - layer = new TrianglesDataTextureLayer(this, { - layerIndex: 0, // This is set in #finalize() - - // chipmunk - // positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined - - // chipmunk: allow to have different origins per-mesh - origin: cfg.origin, - }); - this._layerList.push(layer); - this._currentDataTextureLayer = layer; - } - - let portionId; - - const color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : [255, 255, 255]; - const opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255; - const metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0; - const roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255; - - const mesh = new DataTextureSceneModelMesh(this, id, color, opacity); - - const pickId = mesh.pickId; - - const a = pickId >> 24 & 0xFF; - const b = pickId >> 16 & 0xFF; - const g = pickId >> 8 & 0xFF; - const r = pickId & 0xFF; - - const pickColor = new Uint8Array([r, g, b, a]); // Quantized pick color - - const aabb = math.collapseAABB3(); - - preparedGeometryCfg.solid = preparedGeometryCfg.primitive == "solid"; - - if (instancing) { - - let meshMatrix; - let worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null; - - if (cfg.matrix) { - meshMatrix = cfg.matrix; - } else { - const scale = cfg.scale || defaultScale; - const position = cfg.position || defaultPosition; - const rotation = cfg.rotation || defaultRotation; - math.eulerToQuaternion(rotation, "XYZ", defaultQuaternion); - meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4); - } - - portionId = layer.createPortion( - preparedGeometryCfg, - { - origin: cfg.origin, - geometryId: geometryId, - color: color, - metallic: metallic, - roughness: roughness, - opacity: opacity, - meshMatrix: meshMatrix, - worldMatrix: worldMatrix, - aabb: aabb, - pickColor: pickColor - } - ); - - math.expandAABB3(this._aabb, aabb); - - this._numTriangles += preparedGeometryCfg.indices.length / 3; - mesh.numTriangles = preparedGeometryCfg.indices.length / 3; - - mesh.origin = preparedGeometryCfg.origin; - } else { // Batching - let origin = null; - - if (!cfg.positionsDecodeMatrix) { // TODO: Assumes we never quantize double-precision coordinates - const rtcCenter = math.vec3(); - const rtcPositions = []; - const rtcNeeded = worldToRTCPositions(positions, rtcPositions, rtcCenter); - if (rtcNeeded) { - positions = rtcPositions; - origin = math.addVec3(this._origin, rtcCenter, rtcCenter); - } - } - - const cfgOrigin = cfg.origin || cfg.rtcCenter; - if (cfgOrigin) { - if (!origin) { - origin = cfgOrigin; - } else { - origin = math.addVec3(this._origin, cfgOrigin, tempVec3a); - } - } else { - origin = this._origin; - } - - // TODO: treat the possibility of different origins - - const worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null; - let meshMatrix; - - if (!cfg.positionsDecodeMatrix) { - if (cfg.matrix) { - meshMatrix = cfg.matrix; - } else { - const scale = cfg.scale || defaultScale; - const position = cfg.position || defaultPosition; - const rotation = cfg.rotation || defaultRotation; - math.eulerToQuaternion(rotation, "XYZ", defaultQuaternion); - meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4); - } - } - - let primitive = cfg.primitive || "triangles"; - - switch (primitive) { - - case "triangles": - case "solid": - case "surface": - portionId = layer.createPortion(utils.apply ( - { - origin: origin, - color: color, - metallic: metallic, - roughness: roughness, - colors: cfg.colors, - colorsCompressed: cfg.colorsCompressed, - opacity: opacity, - meshMatrix: meshMatrix, - worldMatrix: worldMatrix, - aabb: aabb, - pickColor: pickColor - }, - preparedGeometryCfg - )); - - const numTriangles = Math.round(preparedGeometryCfg.indices.length / 3); - - this._numTriangles += numTriangles; - - mesh.numTriangles = numTriangles; - break; - case "lines": - throw "Not supported at the moment"; - break; - case "points": - throw "Not supported at the moment"; - break; - } - - math.expandAABB3(this._aabb, aabb); - - this.numGeometries++; - - mesh.origin = origin; - } - - mesh.parent = null; // Will be set within PerformanceModelNode constructor - mesh._layer = layer; - mesh._portionId = portionId; - mesh.aabb = aabb; - - this._meshes[id] = mesh; - } - - /** - * Creates an {@link Entity} within this DataTextureSceneModel, giving it one or more meshes previously created with {@link DataTextureSceneModel#createMesh}. - * - * A mesh can only belong to one {@link Entity}, so you'll get an error if you try to reuse a mesh among multiple {@link Entity}s. - * - * @param {Object} cfg Entity configuration. - * @param {String} cfg.id Optional ID for the new Entity. Must not clash with any existing components within the {@link Scene}. - * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link DataTextureSceneModel@createMesh}. - - * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link Entity} represents an object, in which case it will be registered by {@link Entity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}. - * @param {Boolean} [cfg.visible=true] Indicates if the Entity is initially visible. - * @param {Boolean} [cfg.culled=false] Indicates if the Entity is initially culled from view. - * @param {Boolean} [cfg.pickable=true] Indicates if the Entity is initially pickable. - * @param {Boolean} [cfg.clippable=true] Indicates if the Entity is initially clippable. - * @param {Boolean} [cfg.collidable=true] Indicates if the Entity is initially included in boundary calculations. - * @param {Boolean} [cfg.castsShadow=true] Indicates if the Entity initially casts shadows. - * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Entity initially receives shadows. - * @param {Boolean} [cfg.xrayed=false] Indicates if the Entity is initially xrayed. XRayed appearance is configured by {@link DataTextureSceneModel#xrayMaterial}. - * @param {Boolean} [cfg.highlighted=false] Indicates if the Entity is initially highlighted. Highlighted appearance is configured by {@link DataTextureSceneModel#highlightMaterial}. - * @param {Boolean} [cfg.selected=false] Indicates if the Entity is initially selected. Selected appearance is configured by {@link DataTextureSceneModel#selectedMaterial}. - * @param {Boolean} [cfg.edges=false] Indicates if the Entity's edges are initially emphasized. Edges appearance is configured by {@link DataTextureSceneModel#edgeMaterial}. - * @returns {Entity} - */ - createEntity(cfg) { - - if (this._vfcManager && !this._vfcManager.finalized) { - this._vfcManager.addEntity (cfg); - return; - } - - // Validate or generate Entity ID - let id = cfg.id; - if (id === undefined) { - id = math.createUUID(); - } else if (this.scene.components[id]) { - this.error("Scene already has a Component with this ID: " + id + " - will assign random ID"); - id = math.createUUID(); - } - // Collect PerformanceModelNode's PerformanceModelMeshes - const meshIds = cfg.meshIds; - if (meshIds === undefined) { - this.error("Config missing: meshIds"); - return; - } - let meshes = []; - for (let i = 0, len = meshIds.length; i < len; i++) { - const meshId = meshIds[i]; - const mesh = this._meshes[meshId]; - if (!mesh) { - this.error("Mesh with this ID not found: " + meshId + " - ignoring this mesh"); - continue; - } - if (mesh.parent) { - this.error("Mesh with ID " + meshId + " already belongs to object with ID " + mesh.parent.id + " - ignoring this mesh"); - continue; - } - meshes.push(mesh); - } - // Create PerformanceModelNode flags - let flags = 0; - if (this._visible && cfg.visible !== false) { - flags = flags | ENTITY_FLAGS.VISIBLE; - } - if (this._pickable && cfg.pickable !== false) { - flags = flags | ENTITY_FLAGS.PICKABLE; - } - if (this._culled && cfg.culled !== false) { - flags = flags | ENTITY_FLAGS.CULLED; - } - if (this._clippable && cfg.clippable !== false) { - flags = flags | ENTITY_FLAGS.CLIPPABLE; - } - if (this._collidable && cfg.collidable !== false) { - flags = flags | ENTITY_FLAGS.COLLIDABLE; - } - if (this._edges && cfg.edges !== false) { - flags = flags | ENTITY_FLAGS.EDGES; - } - if (this._xrayed && cfg.xrayed !== false) { - flags = flags | ENTITY_FLAGS.XRAYED; - } - if (this._highlighted && cfg.highlighted !== false) { - flags = flags | ENTITY_FLAGS.HIGHLIGHTED; - } - if (this._selected && cfg.selected !== false) { - flags = flags | ENTITY_FLAGS.SELECTED; - } - - // Create PerformanceModelNode AABB - let aabb; - if (meshes.length === 1) { - aabb = meshes[0].aabb; - } else { - aabb = math.collapseAABB3(); - for (let i = 0, len = meshes.length; i < len; i++) { - math.expandAABB3(aabb, meshes[i].aabb); - } - } - - const node = new DataTextureSceneModelNode(this, cfg.isObject, id, meshes, flags, aabb); // Internally sets PerformanceModelMesh#parent to this PerformanceModelNode - this._nodeList.push(node); - this._nodes[id] = node; - this.numEntities++; - return node; - } - - /** - * Finalizes this DataTextureSceneModel. - * - * Immediately creates the DataTextureSceneModel's {@link Entity}s within the {@link Scene}. - * - * Once finalized, you can't add anything more to this DataTextureSceneModel. - */ - finalize() { - if (this.destroyed) { - return; - } - - if (this._vfcManager) { - this._vfcManager.finalize ( - function () { - if (!this._currentDataTextureLayer) { - return; - } - - this._currentDataTextureLayer.finalize(); - delete this._currentDataTextureLayer; - this._currentDataTextureLayer = null; - } - ); - } - - if (this._currentDataTextureLayer) { - this._currentDataTextureLayer.finalize (); - } - - for (let i = 0, len = this._nodeList.length; i < len; i++) { - const node = this._nodeList[i]; - node._finalize(); - } - - for (let i = 0, len = this._nodeList.length; i < len; i++) { - const node = this._nodeList[i]; - node._finalize2(); - } - - // Sort layers to reduce WebGL shader switching when rendering them - this._layerList.sort((a, b) => { - if (a.sortId < b.sortId) { - return -1; - } - if (a.sortId > b.sortId) { - return 1; - } - return 0; - }); - - for (let i = 0, len = this._layerList.length; i < len; i++) { - const layer = this._layerList[i]; - layer.layerIndex = i; - } - - this.glRedraw(); - - this.scene._aabbDirty = true; - - this._instancingGeometries = {}; - this._preparedInstancingGeometries = {}; - - if (this._targetLodFps) { - this.lodCullingManager = new LodCullingManager ( - this, - [ 2000, 600, 150, 80, 20 ], - this._targetLodFps - ); - } - - for (let i = 0, len = this._layerList.length; i < len; i++) { - const layer = this._layerList[i]; - layer.attachToRenderingEvent(); - } - - this.finalized = true; - } - - _rebuildAABB() { - math.collapseAABB3(this._aabb); - for (let i = 0, len = this._nodeList.length; i < len; i++) { - const node = this._nodeList[i]; - math.expandAABB3(this._aabb, node.aabb); - } - this._aabbDirty = false; - } - - /** @private */ - stateSortCompare(drawable1, drawable2) { - } - - /** @private */ - rebuildRenderFlags() { - this.renderFlags.reset(); - this._updateRenderFlagsVisibleLayers(); - if (this.renderFlags.numLayers > 0 && this.renderFlags.numVisibleLayers === 0) { - this.renderFlags.culled = true; - return; - } - this._updateRenderFlags(); - } - - /** - * @private - */ - _updateRenderFlagsVisibleLayers() { - const renderFlags = this.renderFlags; - renderFlags.numLayers = this._layerList.length; - renderFlags.numVisibleLayers = 0; - for (let layerIndex = 0, len = this._layerList.length; layerIndex < len; layerIndex++) { - const layer = this._layerList[layerIndex]; - const layerVisible = this._getActiveSectionPlanesForLayer(layer); - if (layerVisible) { - renderFlags.visibleLayers[renderFlags.numVisibleLayers++] = layerIndex; - } - } - } - - /** @private */ - _getActiveSectionPlanesForLayer(layer) { - - const renderFlags = this.renderFlags; - const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes; - const numSectionPlanes = sectionPlanes.length; - const baseIndex = layer.layerIndex * numSectionPlanes; - - if (numSectionPlanes > 0) { - for (let i = 0; i < numSectionPlanes; i++) { - - const sectionPlane = sectionPlanes[i]; - - if (!sectionPlane.active) { - renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = false; - - } else { - renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = true; - renderFlags.sectioned = true; - } - } - } - - return true; - } - - /** @private */ - _updateRenderFlags() { - - if (this.numVisibleLayerPortions === 0) { - return; - } - - if (this.numCulledLayerPortions === this.numPortions) { - return; - } - - const renderFlags = this.renderFlags; - - renderFlags.colorOpaque = (this.numTransparentLayerPortions < this.numPortions); - - if (this.numTransparentLayerPortions > 0) { - renderFlags.colorTransparent = true; - } - - if (this.numXRayedLayerPortions > 0) { - const xrayMaterial = this.scene.xrayMaterial._state; - if (xrayMaterial.fill) { - if (xrayMaterial.fillAlpha < 1.0) { - renderFlags.xrayedSilhouetteTransparent = true; - } else { - renderFlags.xrayedSilhouetteOpaque = true; - } - } - if (xrayMaterial.edges) { - if (xrayMaterial.edgeAlpha < 1.0) { - renderFlags.xrayedEdgesTransparent = true; - } else { - renderFlags.xrayedEdgesOpaque = true; - } - } - } - - if (this.numEdgesLayerPortions > 0) { - const edgeMaterial = this.scene.edgeMaterial._state; - if (edgeMaterial.edges) { - renderFlags.edgesOpaque = (this.numTransparentLayerPortions < this.numPortions); - if (this.numTransparentLayerPortions > 0) { - renderFlags.edgesTransparent = true; - } - } - } - - if (this.numSelectedLayerPortions > 0) { - const selectedMaterial = this.scene.selectedMaterial._state; - if (selectedMaterial.fill) { - if (selectedMaterial.fillAlpha < 1.0) { - renderFlags.selectedSilhouetteTransparent = true; - } else { - renderFlags.selectedSilhouetteOpaque = true; - } - } - if (selectedMaterial.edges) { - if (selectedMaterial.edgeAlpha < 1.0) { - renderFlags.selectedEdgesTransparent = true; - } else { - renderFlags.selectedEdgesOpaque = true; - } - } - } - - if (this.numHighlightedLayerPortions > 0) { - const highlightMaterial = this.scene.highlightMaterial._state; - if (highlightMaterial.fill) { - if (highlightMaterial.fillAlpha < 1.0) { - renderFlags.highlightedSilhouetteTransparent = true; - } else { - renderFlags.highlightedSilhouetteOpaque = true; - } - } - if (highlightMaterial.edges) { - if (highlightMaterial.edgeAlpha < 1.0) { - renderFlags.highlightedEdgesTransparent = true; - } else { - renderFlags.highlightedEdgesOpaque = true; - } - } - } - } - - // -------------- RENDERING --------------------------------------------------------------------------------------- - - /** @private */ - drawColorOpaque(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawColorOpaque(renderFlags, frameCtx); - } - } - - /** @private */ - drawColorTransparent(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawColorTransparent(renderFlags, frameCtx); - } - } - - /** @private */ - drawDepth(frameCtx) { // Dedicated to SAO because it skips transparent objects - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawDepth(renderFlags, frameCtx); - } - } - - /** @private */ - drawNormals(frameCtx) { // Dedicated to SAO because it skips transparent objects - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawNormals(renderFlags, frameCtx); - } - } - - /** @private */ - drawSilhouetteXRayed(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawSilhouetteXRayed(renderFlags, frameCtx); - } - } - - /** @private */ - drawSilhouetteHighlighted(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawSilhouetteHighlighted(renderFlags, frameCtx); - } - } - - /** @private */ - drawSilhouetteSelected(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawSilhouetteSelected(renderFlags, frameCtx); - } - } - - /** @private */ - drawEdgesColorOpaque(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawEdgesColorOpaque(renderFlags, frameCtx); - } - } - - /** @private */ - drawEdgesColorTransparent(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawEdgesColorTransparent(renderFlags, frameCtx); - } - } - - /** @private */ - drawEdgesXRayed(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawEdgesXRayed(renderFlags, frameCtx); - } - } - - /** @private */ - drawEdgesHighlighted(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawEdgesHighlighted(renderFlags, frameCtx); - } - } - - /** @private */ - drawEdgesSelected(frameCtx) { - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawEdgesSelected(renderFlags, frameCtx); - } - } - - /** - * @private - */ - drawOcclusion(frameCtx) { - if (this.numVisibleLayerPortions === 0) { - return; - } - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawOcclusion(renderFlags, frameCtx); - } - } - - /** - * @private - */ - drawShadow(frameCtx) { - if (this.numVisibleLayerPortions === 0) { - return; - } - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawShadow(renderFlags, frameCtx); - } - } - - /** @private */ - drawPickMesh(frameCtx) { - if (this.numVisibleLayerPortions === 0) { - return; - } - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawPickMesh(renderFlags, frameCtx); - } - } - - /** - * Called by DataTextureSceneModelMesh.drawPickDepths() - * @private - */ - drawPickDepths(frameCtx) { - if (this.numVisibleLayerPortions === 0) { - return; - } - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawPickDepths(renderFlags, frameCtx); - } - } - - drawVertexDepths(frameCtx) { - if (this.numVisibleLayerPortions === 0) { - return; - } - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawVertexDepths(renderFlags, frameCtx); - } - } - - drawVertexZBufferInitializer(frameCtx) { - if (this.numVisibleLayerPortions === 0) { - return; - } - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawVertexZBufferInitializer(renderFlags, frameCtx); - } - } - - /** - * Called by DataTextureSceneModelMesh.drawPickNormals() - * @private - */ - drawPickNormals(frameCtx) { - if (this.numVisibleLayerPortions === 0) { - return; - } - const renderFlags = this.renderFlags; - for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) { - const layerIndex = renderFlags.visibleLayers[i]; - this._layerList[layerIndex].drawPickNormals(renderFlags, frameCtx); - } - } - - //------------------------------------------------------------------------------------------------------------------ - // Component members - //------------------------------------------------------------------------------------------------------------------ - - /** - * Destroys this DataTextureSceneModel. - */ - destroy() { - this.scene.camera.off(this._onCameraViewMatrix); - for (let i = 0, len = this._layerList.length; i < len; i++) { - this._layerList[i].destroy(); - } - for (let i = 0, len = this._nodeList.length; i < len; i++) { - this._nodeList[i]._destroy(); - } - this.scene._aabbDirty = true; - if (this._isModel) { - this.scene._deregisterModel(this); - } - super.destroy(); - } -} - -export {DataTextureSceneModel}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelMesh.js b/src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelMesh.js deleted file mode 100644 index 0d68bc5fa..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelMesh.js +++ /dev/null @@ -1,276 +0,0 @@ -import {math} from "../../../math/math.js"; - -/** - * @private - * @implements Pickable - */ -class DataTextureSceneModelMesh { - - constructor(model, id, color, opacity, layer = null, portionId = 0) { - - /** - * The VBOSceneModel that contains this PerformanceModelMesh. - * - * A PerformanceModelMesh always belongs to exactly one VBOSceneModel. - * - * @property model - * @type {VBOSceneModel} - * @final - */ - this.model = model; - - /** - * The DataTextureSceneModelNode that contains this PerformanceModelMesh. - * - * A PerformanceModelMesh always belongs to exactly one DataTextureSceneModelNode. - * - * @property object - * @type {VBOSceneModelNode} - * @final - */ - this.object = null; - - /** - * The DataTextureSceneModelNode that contains this PerformanceModelMesh. - * - * A PerformanceModelMesh always belongs to exactly one DataTextureSceneModelNode. - * - * @property object - * @type {VBOSceneModelNode} - * @final - */ - this.parent = null; - - /** - * ID of this PerformanceModelMesh, unique within the xeokit.Scene. - * - * @property id - * @type {String} - * @final - */ - this.id = id; - - /** - * - * @type {Number} - * @private - */ - this.pickId = this.model.scene._renderer.getPickID(this); - - /** - * World-space 3D axis-aligned bounding box (AABB). - * - * Represented by a six-element Float64Array containing the min/max extents of the - * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````. - * - * @property aabb - * @final - * @type {Float64Array} - */ - this.aabb = math.AABB3(); - - this._layer = layer; - this._portionId = portionId; - - this._color = [color[0], color[1], color[2], opacity]; // [0..255] - this._colorize = [color[0], color[1], color[2], opacity]; // [0..255] - this._colorizing = false; - - this._transparent = (opacity < 255); - - this.numTriangles = 0; - - /** - * 3D origin of the DataTextureSceneModelMesh's vertex positions, if they are in relative-to-center (RTC) coordinates. - * - * When this is defined, then the positions are RTC, which means that they are relative to this position. - * - * @property origin - * @type {Float64Array} - */ - this.origin = null; - } - - /** - * @private - */ - _finalize(entityFlags) { - this._layer.initFlags(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _finalize2() { - if (this._layer.flushInitFlags) { - this._layer.flushInitFlags(); - } - } - - /** - * @private - */ - _setVisible(entityFlags) { - this._layer.setVisible(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setColor(color) { - this._color[0] = color[0]; - this._color[1] = color[1]; - this._color[2] = color[2]; - if (!this._colorizing) { - this._layer.setColor(this._portionId, this._color, false); - } - } - - /** @private */ - _setColorize(colorize) { - const setOpacity = false; - if (colorize) { - this._colorize[0] = colorize[0]; - this._colorize[1] = colorize[1]; - this._colorize[2] = colorize[2]; - this._layer.setColor(this._portionId, this._colorize, setOpacity); - this._colorizing = true; - } else { - this._layer.setColor(this._portionId, this._color, setOpacity); - this._colorizing = false; - } - } - - /** @private */ - _setOpacity(opacity, entityFlags) { - const newTransparent = (opacity < 255); - const lastTransparent = this._transparent; - const changingTransparency = (lastTransparent !== newTransparent); - this._color[3] = opacity; - this._colorize[3] = opacity; - this._transparent = newTransparent; - if (this._colorizing) { - this._layer.setColor(this._portionId, this._colorize); - } else { - this._layer.setColor(this._portionId, this._color); - } - if (changingTransparency) { - this._layer.setTransparent(this._portionId, entityFlags, newTransparent); - } - } - - /** - * @private - */ - _setOffset(offset) { - this._layer.setOffset(this._portionId, offset); - } - - /** - * @private - */ - _setHighlighted(entityFlags) { - this._layer.setHighlighted(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setXRayed(entityFlags) { - this._layer.setXRayed(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setSelected(entityFlags) { - this._layer.setSelected(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setEdges(entityFlags) { - this._layer.setEdges(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setClippable(entityFlags) { - this._layer.setClippable(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setCollidable(entityFlags) { - this._layer.setCollidable(this._portionId, entityFlags); - } - - /** - * @private - */ - _setPickable(flags) { - this._layer.setPickable(this._portionId, flags, this._transparent); - } - - /** - * @private - */ - _setCulled(flags) { - this._layer.setCulled(this._portionId, flags, this._transparent); - } - - /** @private */ - canPickTriangle() { - return false; - } - - /** @private */ - drawPickTriangles(renderFlags, frameCtx) { - // NOP - } - - /** @private */ - pickTriangleSurface(pickResult) { - // NOP - } - - /** @private */ - precisionRayPickSurface(worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) { - return this._layer.precisionRayPickSurface ? this._layer.precisionRayPickSurface(this._portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) : false; - } - - /** @private */ - canPickWorldPos() { - return true; - } - - /** @private */ - drawPickDepths(frameCtx) { - this.model.drawPickDepths(frameCtx); - } - - /** @private */ - drawPickNormals(frameCtx) { - this.model.drawPickNormals(frameCtx); - } - - /** - * @private - * @returns {VBOSceneModelNode} - */ - delegatePickedEntity() { - return this.parent; - } - - /** - * @private - */ - _destroy() { - this.model.scene._renderer.putPickID(this.pickId); - } -} - -export {DataTextureSceneModelMesh}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelNode.js b/src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelNode.js deleted file mode 100644 index 3a19ecbf7..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/DataTextureSceneModelNode.js +++ /dev/null @@ -1,736 +0,0 @@ -import {ENTITY_FLAGS} from './ENTITY_FLAGS.js'; -import {math} from "../../../math/math.js"; - -const tempFloatRGB = new Float32Array([0, 0, 0]); -const tempIntRGB = new Uint16Array([0, 0, 0]); - -/** - * @private - */ -class DataTextureSceneModelNode { - - /** - * @private - */ - constructor(model, isObject, id, meshes, flags, aabb) { - - this._isObject = isObject; - - /** - * The {@link Scene} that contains this DataTextureSceneModelNode. - * - * @property scene - * @type {Scene} - * @final - */ - this.scene = model.scene; - - /** - * The VBOSceneModel that contains this DataTextureSceneModelNode. - * @property model - * @type {VBOSceneModel} - * @final - */ - this.model = model; - - /** - * The PerformanceModelMesh instances contained by this DataTextureSceneModelNode - * @property meshes - * @type {{Array of PerformanceModelMesh}} - * @final - */ - this.meshes = meshes; - - this._numTriangles = 0; - - for (var i = 0, len = this.meshes.length; i < len; i++) { // TODO: tidier way? Refactor? - const mesh = this.meshes[i]; - mesh.parent = this; - this._numTriangles += mesh.numTriangles; - } - - /** - * ID of this DataTextureSceneModelNode, unique within the {@link Scene}. - * @property id - * @type {String|Number} - * @final - */ - this.id = id; - - /** - * ID of the corresponding object within the originating system. - * - * @type {String} - * @abstract - */ - this.originalSystemId = math.unglobalizeObjectId(model.id, id); - - this._flags = flags; - this._aabb = aabb; - this._offsetAABB = math.AABB3(aabb); - - this._offset = math.vec3(); - this._colorizeUpdated = false; - this._opacityUpdated = false; - - this._culled = false; - this._culledVFC = false; - this._culledLOD = false; - - - if (this._isObject) { - model.scene._registerObject(this); - } - } - - //------------------------------------------------------------------------------------------------------------------ - // Entity members - //------------------------------------------------------------------------------------------------------------------ - - /** - * Returns true to indicate that DataTextureSceneModelNode is an {@link Entity}. - * @type {Boolean} - */ - get isEntity() { - return true; - } - - /** - * Always returns ````false```` because a DataTextureSceneModelNode can never represent a model. - * - * @type {Boolean} - */ - get isModel() { - return false; - } - - /** - * Returns ````true```` if this DataTextureSceneModelNode represents an object. - * - * When ````true```` the DataTextureSceneModelNode will be registered by {@link DataTextureSceneModelNode#id} in - * {@link Scene#objects} and may also have a {@link MetaObject} with matching {@link MetaObject#id}. - * - * @type {Boolean} - */ - get isObject() { - return this._isObject; - } - - /** - * World-space 3D axis-aligned bounding box (AABB) of this DataTextureSceneModelNode. - * - * Represented by a six-element Float64Array containing the min/max extents of the - * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````. - * - * @type {Float64Array} - */ - get aabb() { - return this._offsetAABB; - } - - /** - * The approximate number of triangles in this DataTextureSceneModelNode. - * - * @type {Number} - */ - get numTriangles() { - return this._numTriangles; - } - - /** - * Gets if this DataTextureSceneModelNode is visible. - * - * Only rendered when {@link DataTextureSceneModelNode#visible} is ````true```` and {@link DataTextureSceneModelNode#culled} is ````false````. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#visible} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#visibleObjects}. - * - * @type {Boolean} - */ - get visible() { - return this._getFlag(ENTITY_FLAGS.VISIBLE); - } - - /** - * Sets if this DataTextureSceneModelNode is visible. - * - * Only rendered when {@link DataTextureSceneModelNode#visible} is ````true```` and {@link DataTextureSceneModelNode#culled} is ````false````. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#visible} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#visibleObjects}. - * - * @type {Boolean} - */ - set visible(visible) { - if (!!(this._flags & ENTITY_FLAGS.VISIBLE) === visible) { - return; // Redundant update - } - if (visible) { - this._flags = this._flags | ENTITY_FLAGS.VISIBLE; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.VISIBLE; - } - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setVisible(this._flags); - } - if (this._isObject) { - this.model.scene._objectVisibilityUpdated(this, visible); - } - this.model.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModelNode is highlighted. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#highlighted} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#highlightedObjects}. - * - * @type {Boolean} - */ - get highlighted() { - return this._getFlag(ENTITY_FLAGS.HIGHLIGHTED); - } - - /** - * Sets if this DataTextureSceneModelNode is highlighted. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#highlighted} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#highlightedObjects}. - * - * @type {Boolean} - */ - set highlighted(highlighted) { - if (!!(this._flags & ENTITY_FLAGS.HIGHLIGHTED) === highlighted) { - return; // Redundant update - } - if (highlighted) { - this._flags = this._flags | ENTITY_FLAGS.HIGHLIGHTED; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.HIGHLIGHTED; - } - for (var i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setHighlighted(this._flags); - } - if (this._isObject) { - this.model.scene._objectHighlightedUpdated(this, highlighted); - } - this.model.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModelNode is xrayed. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#xrayed} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#xrayedObjects}. - * - * @type {Boolean} - */ - get xrayed() { - return this._getFlag(ENTITY_FLAGS.XRAYED); - } - - /** - * Sets if this DataTextureSceneModelNode is xrayed. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#xrayed} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#xrayedObjects}. - * - * @type {Boolean} - */ - set xrayed(xrayed) { - if (!!(this._flags & ENTITY_FLAGS.XRAYED) === xrayed) { - return; // Redundant update - } - if (xrayed) { - this._flags = this._flags | ENTITY_FLAGS.XRAYED; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.XRAYED; - } - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setXRayed(this._flags); - } - if (this._isObject) { - this.model.scene._objectXRayedUpdated(this, xrayed); - } - this.model.glRedraw(); - } - - /** - * Sets if this DataTextureSceneModelNode is selected. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#selected} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#selectedObjects}. - * - * @type {Boolean} - */ - get selected() { - return this._getFlag(ENTITY_FLAGS.SELECTED); - } - - /** - * Gets if this DataTextureSceneModelNode is selected. - * - * When both {@link DataTextureSceneModelNode#isObject} and {@link DataTextureSceneModelNode#selected} are ````true```` the DataTextureSceneModelNode will be - * registered by {@link DataTextureSceneModelNode#id} in {@link Scene#selectedObjects}. - * - * @type {Boolean} - */ - set selected(selected) { - if (!!(this._flags & ENTITY_FLAGS.SELECTED) === selected) { - return; // Redundant update - } - if (selected) { - this._flags = this._flags | ENTITY_FLAGS.SELECTED; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.SELECTED; - } - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setSelected(this._flags); - } - if (this._isObject) { - this.model.scene._objectSelectedUpdated(this, selected); - } - this.model.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModelNode's edges are enhanced. - * - * @type {Boolean} - */ - get edges() { - return this._getFlag(ENTITY_FLAGS.EDGES); - } - - /** - * Sets if this DataTextureSceneModelNode's edges are enhanced. - * - * @type {Boolean} - */ - set edges(edges) { - if (!!(this._flags & ENTITY_FLAGS.EDGES) === edges) { - return; // Redundant update - } - if (edges) { - this._flags = this._flags | ENTITY_FLAGS.EDGES; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.EDGES; - } - for (var i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setEdges(this._flags); - } - this.model.glRedraw(); - } - - get culledVFC() { - return !!(this._culledVFC); - } - - set culledVFC(culled) { - this._culledVFC = culled; - this.internalSetCulled (); - } - - get culledLOD() { - return !!(this._culledLOD); - } - - set culledLOD(culled) { - this._culledLOD = culled; - this.internalSetCulled (); - } - - /** - * Gets if this DataTextureSceneModelNode is culled. - * - * Only rendered when {@link DataTextureSceneModelNode#visible} is ````true```` and {@link DataTextureSceneModelNode#culled} is ````false````. - * - * @type {Boolean} - */ - get culled() { - return !!(this._culled); - // return this._getFlag(ENTITY_FLAGS.CULLED); - } - - /** - * Sets if this DataTextureSceneModelNode is culled. - * - * Only rendered when {@link DataTextureSceneModelNode#visible} is ````true```` and {@link DataTextureSceneModelNode#culled} is ````false````. - * - * @type {Boolean} - */ - set culled(culled) { - this._culled = culled; - this.internalSetCulled (); - } - - internalSetCulled() - { - let culled = !!(this._culled) || !!(this._culledLOD) || !!(this._culledVFC); - - if (!!(this._flags & ENTITY_FLAGS.CULLED) === culled) { - return; // Redundant update - } - if (culled) { - this._flags = this._flags | ENTITY_FLAGS.CULLED; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.CULLED; - } - for (var i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setCulled(this._flags); - } - this.model.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModelNode is clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - */ - get clippable() { - return this._getFlag(ENTITY_FLAGS.CLIPPABLE); - } - - /** - * Sets if this DataTextureSceneModelNode is clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - */ - set clippable(clippable) { - if ((!!(this._flags & ENTITY_FLAGS.CLIPPABLE)) === clippable) { - return; // Redundant update - } - if (clippable) { - this._flags = this._flags | ENTITY_FLAGS.CLIPPABLE; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.CLIPPABLE; - } - for (var i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setClippable(this._flags); - } - this.model.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModelNode is included in boundary calculations. - * - * @type {Boolean} - */ - get collidable() { - return this._getFlag(ENTITY_FLAGS.COLLIDABLE); - } - - /** - * Sets if this DataTextureSceneModelNode is included in boundary calculations. - * - * @type {Boolean} - */ - set collidable(collidable) { - if (!!(this._flags & ENTITY_FLAGS.COLLIDABLE) === collidable) { - return; // Redundant update - } - if (collidable) { - this._flags = this._flags | ENTITY_FLAGS.COLLIDABLE; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.COLLIDABLE; - } - for (var i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setCollidable(this._flags); - } - } - - /** - * Gets if this DataTextureSceneModelNode is pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - */ - get pickable() { - return this._getFlag(ENTITY_FLAGS.PICKABLE); - } - - /** - * Sets if this DataTextureSceneModelNode is pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - */ - set pickable(pickable) { - if (!!(this._flags & ENTITY_FLAGS.PICKABLE) === pickable) { - return; // Redundant update - } - if (pickable) { - this._flags = this._flags | ENTITY_FLAGS.PICKABLE; - } else { - this._flags = this._flags & ~ENTITY_FLAGS.PICKABLE; - } - for (var i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setPickable(this._flags); - } - } - - /** - * Gets the DataTextureSceneModelNode's RGB colorize color. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - */ - get colorize() { // [0..1, 0..1, 0..1] - if (this.meshes.length === 0) { - return null; - } - const colorize = this.meshes[0]._colorize; - tempFloatRGB[0] = colorize[0] / 255.0; // Unquantize - tempFloatRGB[1] = colorize[1] / 255.0; - tempFloatRGB[2] = colorize[2] / 255.0; - return tempFloatRGB; - } - - /** - * Sets the DataTextureSceneModelNode's RGB colorize color. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - */ - set colorize(color) { // [0..1, 0..1, 0..1] - if (color) { - tempIntRGB[0] = Math.floor(color[0] * 255.0); // Quantize - tempIntRGB[1] = Math.floor(color[1] * 255.0); - tempIntRGB[2] = Math.floor(color[2] * 255.0); - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setColorize(tempIntRGB); - } - } else { - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setColorize(null); - } - } - if (this._isObject) { - const colorized = (!!color); - this.scene._objectColorizeUpdated(this, colorized); - this._colorizeUpdated = colorized; - } - this.model.glRedraw(); - } - - /** - * Gets the DataTextureSceneModelNode's opacity factor. - * - * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. - * - * @type {Number} - */ - get opacity() { - if (this.meshes.length > 0) { - return (this.meshes[0]._colorize[3] / 255.0); - } else { - return 1.0; - } - } - - /** - * Sets the DataTextureSceneModelNode's opacity factor, multiplies by the DataTextureSceneModelNode's rendered fragment alphas. - * - * This is a factor in range ````[0..1]````. - * - * @type {Number} - */ - set opacity(opacity) { - if (this.meshes.length === 0) { - return; - } - const opacityUpdated = (opacity !== null && opacity !== undefined); - const lastOpacityQuantized = this.meshes[0]._colorize[3]; - let opacityQuantized = 255; - if (opacityUpdated) { - if (opacity < 0) { - opacity = 0; - } else if (opacity > 1) { - opacity = 1; - } - opacityQuantized = Math.floor(opacity * 255.0); // Quantize - if (lastOpacityQuantized === opacityQuantized) { - return; - } - } else { - opacityQuantized = 255.0; - if (lastOpacityQuantized === opacityQuantized) { - return; - } - } - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setOpacity(opacityQuantized, this._flags); - } - if (this._isObject) { - this.scene._objectOpacityUpdated(this, opacityUpdated); - this._opacityUpdated = opacityUpdated; - } - this.model.glRedraw(); - } - - /** - * Gets the DataTextureSceneModelNode's 3D World-space offset. - * - * Default value is ````[0,0,0]````. - * - * @type {Number[]} - */ - get offset() { - return this._offset; - } - - /** - * Sets the DataTextureSceneModelNode's 3D World-space offset. - * - * The offset dynamically translates the DataTextureSceneModelNode in World-space. - * - * Default value is ````[0, 0, 0]````. - * - * Provide a null or undefined value to reset to the default value. - * - * @type {Number[]} - */ - set offset(offset) { - if (offset) { - this._offset[0] = offset[0]; - this._offset[1] = offset[1]; - this._offset[2] = offset[2]; - } else { - this._offset[0] = 0; - this._offset[1] = 0; - this._offset[2] = 0; - } - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._setOffset(this._offset); - } - this._offsetAABB[0] = this._aabb[0] + this._offset[0]; - this._offsetAABB[1] = this._aabb[1] + this._offset[1]; - this._offsetAABB[2] = this._aabb[2] + this._offset[2]; - this._offsetAABB[3] = this._aabb[3] + this._offset[0]; - this._offsetAABB[4] = this._aabb[4] + this._offset[1]; - this._offsetAABB[5] = this._aabb[5] + this._offset[2]; - this.scene._aabbDirty = true; - this.scene._objectOffsetUpdated(this, offset); - this.model._aabbDirty = true; - this.model.glRedraw(); - } - - /** - * Gets if this DataTextureSceneModelNode casts shadows. - * - * @type {Boolean} - */ - get castsShadow() { // TODO - return false; - } - - /** - * Sets if to this DataTextureSceneModelNode casts shadows. - * - * @type {Boolean} - */ - set castsShadow(pickable) { // TODO - - } - - /** - * Whether or not this DataTextureSceneModelNode can have shadows cast upon it - * - * @type {Boolean} - */ - get receivesShadow() { // TODO - return false; - } - - /** - * Whether or not this DataTextureSceneModelNode can have shadows cast upon it - * - * @type {Boolean} - */ - set receivesShadow(pickable) { // TODO - - } - - /** - * Gets if Scalable Ambient Obscurance (SAO) will apply to this DataTextureSceneModelNode. - * - * SAO is configured by the Scene's {@link SAO} component. - * - * @type {Boolean} - * @abstract - */ - get saoEnabled() { - return this.model.saoEnabled; - } - - _getFlag(flag) { - return !!(this._flags & flag); - } - - _finalize() { - const scene = this.model.scene; - if (this._isObject) { - if (this.visible) { - scene._objectVisibilityUpdated(this, true); - } - if (this.highlighted) { - scene._objectHighlightedUpdated(this, true); - } - if (this.xrayed) { - scene._objectXRayedUpdated(this, true); - } - if (this.selected) { - scene._objectSelectedUpdated(this, true); - } - } - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._finalize(this._flags); - } - } - - _finalize2() { - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._finalize2(); - } - } - - _destroy() { // Called by VBOSceneModel - const scene = this.model.scene; - if (this._isObject) { - scene._deregisterObject(this); - if (this.visible) { - scene._objectVisibilityUpdated(this, false, false); - } - if (this.xrayed) { - scene._objectXRayedUpdated(this, false); - } - if (this.selected) { - scene._objectSelectedUpdated(this, false); - } - if (this.highlighted) { - scene._objectHighlightedUpdated(this, false); - } - if (this._opacityUpdated) { - this.scene._objectColorizeUpdated(this, false); - this.scene._objectOpacityUpdated(this, false); - } - if (this.offset.some((v) => v !== 0)) - this.scene._objectOffsetUpdated(this, false); - } - for (let i = 0, len = this.meshes.length; i < len; i++) { - this.meshes[i]._destroy(); - } - scene._aabbDirty = true; - } - -} - -export {DataTextureSceneModelNode}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/DataTextureState.js b/src/viewer/scene/models/DataTextureSceneModel/lib/layers/DataTextureState.js deleted file mode 100644 index 8fc47fe58..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/DataTextureState.js +++ /dev/null @@ -1,1493 +0,0 @@ -import { createRTCViewMat } from "../../../../math/rtcCoords.js"; - -// Imports used to complete the JSDocs arguments to methods -import { Program } from "../../../../webgl/Program.js" -import { Camera } from "../../../../camera/Camera.js" -import { Scene } from "../../../../scene/Scene.js" -import { math } from "../../../../math/math.js"; - -const identityMatrix = [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ]; - -const dataTextureRamStats = { - sizeDataColorsAndFlags: 0, - sizeDataPositionDecodeMatrices: 0, - sizeDataTextureOffsets: 0, - sizeDataTexturePositions: 0, - sizeDataTextureIndices: 0, - sizeDataTextureEdgeIndices: 0, - sizeDataTexturePortionIds: 0, - numberOfGeometries: 0, - numberOfPortions: 0, - numberOfLayers: 0, - numberOfTextures: 0, - totalPolygons: 0, - totalPolygons8Bits: 0, - totalPolygons16Bits: 0, - totalPolygons32Bits: 0, - totalEdges: 0, - totalEdges8Bits: 0, - totalEdges16Bits: 0, - totalEdges32Bits: 0, - cannotCreatePortion: { - because10BitsObjectId: 0, - becauseTextureSize: 0, - }, - overheadSizeAlignementIndices: 0, - overheadSizeAlignementEdgeIndices: 0, -}; - -window.printDataTextureRamStats = function () { - console.log (JSON.stringify(dataTextureRamStats, null, 4)); - - let totalRamSize = 0; - - Object.keys(dataTextureRamStats).forEach (key => { - if (key.startsWith ("size")) { - totalRamSize+=dataTextureRamStats[key]; - } - }); - - console.log (`Total size ${totalRamSize} bytes (${(totalRamSize/1000/1000).toFixed(2)} MB)`); - console.log (`Avg bytes / triangle: ${(totalRamSize / dataTextureRamStats.totalPolygons).toFixed(2)}`); - - let percentualRamStats = {}; - - Object.keys(dataTextureRamStats).forEach (key => { - if (key.startsWith ("size")) { - percentualRamStats[key] = - `${(dataTextureRamStats[key] / totalRamSize * 100).toFixed(2)} % of total`; - } - }); - - console.log (JSON.stringify({percentualRamUsage: percentualRamStats}, null, 4)); -}; - -class BindableDataTexture -{ - /** - * - * @param {WebGL2RenderingContext} gl - * @param {WebGLTexture} texture - * @param {int} textureWidth - * @param {int} textureHeight - * @param {TypedArray} textureData - */ - constructor(gl, texture, textureWidth, textureHeight, textureData = null) - { - /** - * The WebGL context. - * - * @type WebGL2RenderingContext - * @private - */ - this._gl = gl; - - /** - * The WebGLTexture handle. - * - * @type {WebGLTexture} - * @private - */ - this._texture = texture; - - /** - * The texture width. - * - * @type {number} - * @private - */ - this._textureWidth = textureWidth; - - /** - * The texture height. - * - * @type {number} - * @private - */ - this._textureHeight = textureHeight; - - /** - * (nullable) When the texture data array is kept in the JS side, it will be stored here. - * - * @type {TypedArray} - * @private - */ - this._textureData = textureData; - } - - /** - * Convenience method to be used by the renderers to bind the texture before draw calls. - * - * @param {Program} glProgram - * @param {string} shaderName The name of the shader attribute - * @param {number} glTextureUnit The WebGL texture unit - * - * @returns {bool} - */ - bindTexture (glProgram, shaderName, glTextureUnit) { - return glProgram.bindTexture (shaderName, this, glTextureUnit); - } - - /** - * - * Used internally by the `program` passed to `bindTexture` in order to bind the texture to an active `texture-unit`. - * - * @param {number} unit The WebGL texture unit - * - * @returns {bool} - * @private - */ - bind (unit) { - this._gl.activeTexture(this._gl["TEXTURE" + unit]); - this._gl.bindTexture(this._gl.TEXTURE_2D, this._texture); - return true; - } - - /** - * Used internally by the `program` passed to `bindTexture` in order to bind the texture to an active `texture-unit`. - * - * @param {number} unit The WebGL texture unit - * @private - */ - unbind (unit) { - // This `unbind` method is ignored at the moment to allow avoiding to rebind same texture already bound to a texture unit. - - // this._gl.activeTexture(this.state.gl["TEXTURE" + unit]); - // this._gl.bindTexture(this.state.gl.TEXTURE_2D, null); - } -} - -class DataTextureBuffer -{ - constructor () - { - this.positions = []; - this.indices8Bits = []; - this.indices16Bits = []; - this.indices32Bits = []; - this.edgeIndices8Bits = []; - this.edgeIndices16Bits = []; - this.edgeIndices32Bits = []; - this.edgeIndices = []; - this._objectDataColors = []; - this._objectDataPickColors = []; - this._vertexBasesForObject = []; - this._indexBaseOffsetsForObject = []; - this._edgeIndexBaseOffsetsForObject = []; - this._objectDataPositionsMatrices = []; - this._objectDataInstanceGeometryMatrices = []; - this._objectDataInstanceNormalsMatrices = []; - this._portionIdForIndices8Bits = []; - this._portionIdForIndices16Bits = []; - this._portionIdForIndices32Bits = []; - this._portionIdForEdges8Bits = []; - this._portionIdForEdges16Bits = []; - this._portionIdForEdges32Bits = []; - this._portionIdFanOut = []; - } -} - -class DataTextureState -{ - constructor () - { - /** - * Texture that holds colors/pickColors/flags/flags2 per-object: - * - columns: one concept per column => color / pick-color / ... - * - row: the object Id - * - * @type BindableDataTexture - */ - this.texturePerObjectIdColorsAndFlags = null; - - /** - * Texture that holds the XYZ offsets per-object: - * - columns: just 1 column with the XYZ-offset - * - row: the object Id - * - * @type BindableDataTexture - */ - this.texturePerObjectIdOffsets = null; - - /** - * Texture that holds the positionsDecodeMatrix per-object: - * - columns: each column is one column of the matrix - * - row: the object Id - * - * @type BindableDataTexture - */ - this.texturePerObjectIdPositionsDecodeMatrix = null; - - /** - * Texture that holds all the `different-vertices` used by the layer. - * - * @type BindableDataTexture - */ - this.texturePerVertexIdCoordinates = null; - - /** - * Texture that holds the PortionId that corresponds to a given polygon-id. - * - * Variant of the texture for 8-bit based polygon-ids. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdPortionIds8Bits = null; - - /** - * Texture that holds the PortionId that corresponds to a given polygon-id. - * - * Variant of the texture for 16-bit based polygon-ids. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdPortionIds16Bits = null; - - /** - * Texture that holds the PortionId that corresponds to a given polygon-id. - * - * Variant of the texture for 32-bit based polygon-ids. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdPortionIds32Bits = null; - - /** - * Texture that holds the PortionId that corresponds to a given edge-id. - * - * Variant of the texture for 8-bit based polygon-ids. - * - * @type BindableDataTexture - */ - this.texturePerEdgeIdPortionIds8Bits = null; - - /** - * Texture that holds the PortionId that corresponds to a given edge-id. - * - * Variant of the texture for 16-bit based polygon-ids. - * - * @type BindableDataTexture - */ - this.texturePerEdgeIdPortionIds16Bits = null; - - /** - * Texture that holds the PortionId that corresponds to a given edge-id. - * - * Variant of the texture for 32-bit based polygon-ids. - * - * @type BindableDataTexture - */ - this.texturePerEdgeIdPortionIds32Bits = null; - - /** - * Texture that holds the unique-vertex-indices for 8-bit based indices. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdIndices8Bits = null; - - /** - * Texture that holds the unique-vertex-indices for 16-bit based indices. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdIndices16Bits = null; - - /** - * Texture that holds the unique-vertex-indices for 32-bit based indices. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdIndices32Bits = null; - - /** - * Texture that holds the unique-vertex-indices for 8-bit based edge indices. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdEdgeIndices8Bits = null; - - /** - * Texture that holds the unique-vertex-indices for 16-bit based edge indices. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdEdgeIndices16Bits = null; - - /** - * Texture that holds the unique-vertex-indices for 32-bit based edge indices. - * - * @type BindableDataTexture - */ - this.texturePerPolygonIdEdgeIndices32Bits = null; - - /** - * Texture that holds the camera matrices - * - columns: each column in the texture is a camera matrix column. - * - row: each row is a different camera matrix. - * - * @type BindableDataTexture - */ - this.textureCameraMatrices = null; - - /** - * Texture that holds the camera matrices, specific to ray-picking - * - columns: each column in the texture is a camera matrix column. - * - row: each row is a different camera matrix. - * - * @type BindableDataTexture - */ - this.texturePickCameraMatrices = null; - - /** - * Texture that holds the model matrices - * - columns: each column in the texture is a model matrix column. - * - row: each row is a different model matrix. - * - * @type BindableDataTexture - */ - this.textureModelMatrices = null; - } - - finalize() - { - this.indicesPerBitnessTextures = { - 8: this.texturePerPolygonIdIndices8Bits, - 16: this.texturePerPolygonIdIndices16Bits, - 32: this.texturePerPolygonIdIndices32Bits, - }; - - this.indicesPortionIdsPerBitnessTextures = { - 8: this.texturePerPolygonIdPortionIds8Bits, - 16: this.texturePerPolygonIdPortionIds16Bits, - 32: this.texturePerPolygonIdPortionIds32Bits, - }; - - this.edgeIndicesPerBitnessTextures = { - 8: this.texturePerPolygonIdEdgeIndices8Bits, - 16: this.texturePerPolygonIdEdgeIndices16Bits, - 32: this.texturePerPolygonIdEdgeIndices32Bits, - }; - - this.edgeIndicesPortionIdsPerBitnessTextures = { - 8: this.texturePerEdgeIdPortionIds8Bits, - 16: this.texturePerEdgeIdPortionIds16Bits, - 32: this.texturePerEdgeIdPortionIds32Bits, - }; - } - - /** - * - * @param {Program} glProgram - * @param {string} objectMatricesTextureShaderName - * @param {string} vertexTextureShaderName - * @param {string} objectAttributesTextureShaderName - * @param {string} cameraMatricesShaderName - * @param {string} modelMatricesShaderName - */ - bindCommonTextures ( - glProgram, - objectMatricesTextureShaderName, - vertexTextureShaderName, - objectAttributesTextureShaderName, - cameraMatricesShaderName, - modelMatricesShaderName, - objectOffsetsShaderName - ) { - this.texturePerObjectIdPositionsDecodeMatrix.bindTexture ( - glProgram, - objectMatricesTextureShaderName, - 1 // webgl texture unit - ); - - this.texturePerVertexIdCoordinates.bindTexture ( - glProgram, - vertexTextureShaderName, - 2 // webgl texture unit - ); - - this.texturePerObjectIdColorsAndFlags.bindTexture ( - glProgram, - objectAttributesTextureShaderName, - 3 // webgl texture unit - ); - - this.textureCameraMatrices.bindTexture ( - glProgram, - cameraMatricesShaderName, - 4 // webgl texture unit - ); - - this.textureModelMatrices.bindTexture ( - glProgram, - modelMatricesShaderName, - 5 // webgl texture unit - ); - - this.texturePerObjectIdOffsets.bindTexture ( - glProgram, - objectOffsetsShaderName, - 6 // webgl texture unit - ); - } - - /** - * - * @param {Program} glProgram - * @param {string} cameraMatricesShaderName - */ - bindPickCameraTexture (glProgram, cameraMatricesShaderName) - { - this.texturePickCameraMatrices.bindTexture ( - glProgram, - cameraMatricesShaderName, - 4 // webgl texture unit - ); - } - - /** - * - * @param {Program} glProgram - * @param {string} portionIdsShaderName - * @param {string} polygonIndicesShaderName - * @param {8|16|32} textureBitness - */ - bindTriangleIndicesTextures ( - glProgram, - portionIdsShaderName, - polygonIndicesShaderName, - textureBitness, - ) { - this.indicesPortionIdsPerBitnessTextures[textureBitness].bindTexture ( - glProgram, - portionIdsShaderName, - 7 // webgl texture unit - ); - - this.indicesPerBitnessTextures[textureBitness].bindTexture ( - glProgram, - polygonIndicesShaderName, - 8 // webgl texture unit - ); - } - - /** - * - * @param {Program} glProgram - * @param {string} edgePortionIdsShaderName - * @param {string} edgeIndicesShaderName - * @param {8|16|32} textureBitness - */ - bindEdgeIndicesTextures ( - glProgram, - edgePortionIdsShaderName, - edgeIndicesShaderName, - textureBitness, - ) { - this.edgeIndicesPortionIdsPerBitnessTextures[textureBitness].bindTexture ( - glProgram, - edgePortionIdsShaderName, - 7 // webgl texture unit - ); - - this.edgeIndicesPerBitnessTextures[textureBitness].bindTexture ( - glProgram, - edgeIndicesShaderName, - 8 // webgl texture unit - ); - } -} - -class DataTextureGenerator -{ - /** - * Enables the currently binded ````WebGLTexture```` to be used as a data texture. - * - * @param {WebGL2RenderingContext} gl - * - * @private - */ - disableBindedTextureFiltering (gl) - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - } - - /** - * Generate and return a `camera data texture`. - * - * The texture will automatically update its contents before each render when the camera matrix is dirty, - * and to do so will use the following events: - * - * - `scene.rendering` event will be used to know that the camera texture should be updated - * - `camera.matrix` event will be used to know that the camera matices changed - * - * @param {WebGL2RenderingContext} gl - * @param {Camera} camera - * @param {Scene} scene - * @param {null|number[3]} origin - * - * @returns {BindableDataTexture} - */ - generateCameraDataTexture (gl, camera, scene, origin, followCameraUpdate = true) - { - const textureWidth = 4; - const textureHeight = 3; // space for 3 matrices - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture (gl.TEXTURE_2D, null); - - const cameraTexture = new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - - let cameraDirty = true; - - cameraTexture._updateViewMatrix = (viewMatrix, projMatrix) => { - gl.bindTexture (gl.TEXTURE_2D, cameraTexture._texture); - - // Camera's "view matrix" - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, // 1st matrix: camera view matrix - 4, - 1, - gl.RGBA, - gl.FLOAT, - new Float32Array ((origin) ? createRTCViewMat(viewMatrix, origin) : viewMatrix) - ); - - // Camera's "view normal matrix" - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 1, // 2nd matrix: camera view normal matrix - 4, - 1, - gl.RGBA, - gl.FLOAT, - new Float32Array (camera.viewNormalMatrix) - ); - - // Camera's "project matrix" - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 2, // 3rd matrix: camera project matrix - 4, - 1, - gl.RGBA, - gl.FLOAT, - new Float32Array (projMatrix) - ); - }; - - if (followCameraUpdate) - { - const onCameraMatrix = () => { - if (!cameraDirty) { - return; - } - - cameraDirty = false; - - cameraTexture._updateViewMatrix (camera.viewMatrix, camera.project.matrix); - }; - - camera.on ("matrix", () => cameraDirty = true); - - scene.on ("rendering", onCameraMatrix); - - onCameraMatrix (); - } - - return cameraTexture; - } - - /** - * Generate and return a `model data texture`. - * - * @param {WebGL2RenderingContext} gl - * @param {PerformanceModel} model - * - * @returns {BindableDataTexture} - */ - generatePeformanceModelDataTexture (gl, model) - { - const textureWidth = 4; - const textureHeight = 2; // space for 2 matrices - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, // x-offset - 0, // y-offset (model world matrix) - 4, // data width (4x4 values) - 1, // data height (1 matrix) - gl.RGBA, - gl.FLOAT, - new Float32Array (model.worldMatrix) - ); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, // x-offset - 1, // y-offset (model normal matrix) - 4, // data width (4x4 values) - 1, // data height (1 matrix) - gl.RGBA, - gl.FLOAT, - new Float32Array (model.worldNormalMatrix) - ); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture (gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * This will generate an RGBA texture for: - * - colors - * - pickColors - * - flags - * - flags2 - * - vertex bases - * - vertex base offsets - * - * The texture will have: - * - 4 RGBA columns per row: for each object (pick) color and flags(2) - * - N rows where N is the number of objects - * - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike>} colors Array of colors for all objects in the layer - * @param {ArrayLike>} pickColors Array of pickColors for all objects in the layer - * @param {ArrayLike} vertexBases Array of position-index-bases foteh all objects in the layer - * @param {ArrayLike} indexBaseOffsets For triangles: array of offests between the (gl_VertexID / 3) and the position where the indices start in the texture layer - * @param {ArrayLike} edgeIndexBaseOffsets For edges: Array of offests between the (gl_VertexID / 2) and the position where the edge indices start in the texture layer - * @param {ArrayLike} solid Array is-solid flag for all objects in the layer - * - * @returns {BindableDataTexture} - */ - generateTextureForColorsAndFlags (gl, colors, pickColors, vertexBases, indexBaseOffsets, edgeIndexBaseOffsets, solid) { - const numPortions = colors.length; - - // The number of rows in the texture is the number of - // objects in the layer. - - this.numPortions = numPortions; - - const textureWidth = 512 * 8; - const textureHeight = Math.ceil (numPortions / (textureWidth / 8)); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - // 8 columns per texture row: - // - col0: (RGBA) object color RGBA - // - col1: (packed Uint32 as RGBA) object pick color - // - col2: (packed 4 bytes as RGBA) object flags - // - col3: (packed 4 bytes as RGBA) object flags2 - // - col4: (packed Uint32 bytes as RGBA) vertex base - // - col5: (packed Uint32 bytes as RGBA) index base offset - // - col6: (packed Uint32 bytes as RGBA) edge index base offset - // - col7: (packed 4 bytes as RGBA) is-solid flag for objects - - const texArray = new Uint8Array (4 * textureWidth * textureHeight); - - dataTextureRamStats.sizeDataColorsAndFlags += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - for (let i = 0; i < numPortions; i++) - { - // object color - texArray.set ( - colors [i], - i * 32 + 0 - ); - - // object pick color - texArray.set ( - pickColors [i], - i * 32 + 4 - ); - - // object flags - texArray.set ( - [ - 0, 0, 0, 0 - ], - i * 32 + 8 - ); - - // object flags2 - texArray.set ( - [ - 0, 0, 0, 0 - ], - i * 32 + 12 - ); - - // vertex base - texArray.set ( - [ - (vertexBases[i] >> 24) & 255, - (vertexBases[i] >> 16) & 255, - (vertexBases[i] >> 8) & 255, - (vertexBases[i]) & 255, - ], - i * 32 + 16 - ); - - // triangles index base offset - texArray.set ( - [ - (indexBaseOffsets[i] >> 24) & 255, - (indexBaseOffsets[i] >> 16) & 255, - (indexBaseOffsets[i] >> 8) & 255, - (indexBaseOffsets[i]) & 255, - ], - i * 32 + 20 - ); - - // edge index base offset - texArray.set ( - [ - (edgeIndexBaseOffsets[i] >> 24) & 255, - (edgeIndexBaseOffsets[i] >> 16) & 255, - (edgeIndexBaseOffsets[i] >> 8) & 255, - (edgeIndexBaseOffsets[i]) & 255, - ], - i * 32 + 24 - ); - - // is-solid flag - texArray.set ( - [ - solid[i] ? 1 : 0, - 0, - 0, - 0, - ], - i * 32 + 28 - ); - } - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA8UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RGBA_INTEGER, - gl.UNSIGNED_BYTE, - texArray, - 0 - ); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight, - texArray - ); - } - - /** - * This will generate a texture for all object offsets. - * - * @param {WebGL2RenderingContext} gl - * @param {int[]} offsets Array of int[3], one XYZ offset array for each object - * - * @returns {BindableDataTexture} - */ - generateTextureForObjectOffsets (gl, numOffsets) { - const textureWidth = 512; - const textureHeight = Math.ceil (numOffsets / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - var texArray = new Float32Array(3 * textureWidth * textureHeight).fill(0); - - dataTextureRamStats.sizeDataTextureOffsets += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32F, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RGB, - gl.FLOAT, - texArray, - 0 - ); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight, - texArray - ); - } - /** - * This will generate a texture for all positions decode matrices in the layer. - * - * The texture will have: - * - 4 RGBA columns per row (each column will contain 4 packed half-float (16 bits) components). - * Thus, each row will contain 16 packed half-floats corresponding to a complete positions decode matrix) - * - N rows where N is the number of objects - * - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} positionDecodeMatrices Array of positions decode matrices for all objects in the layer - * @param {ArrayLike} instanceMatrices Array of geometry instancing matrices for all objects in the layer. Null if the objects are not instanced. - * - * @returns {BindableDataTexture} - */ - generateTextureForPositionsDecodeMatrices (gl, positionDecodeMatrices, instanceMatrices) { - const numMatrices = positionDecodeMatrices.length; - - if (numMatrices == 0) - { - throw "num decode+entity matrices == 0"; - } - - // in one row we can fit 512 matrices - const textureWidth = 512 * 3; - const textureHeight = Math.ceil (numMatrices / (textureWidth / 3)); - - var texArray = new Float32Array(4 * textureWidth * textureHeight); - - dataTextureRamStats.sizeDataPositionDecodeMatrices += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - const tmpMatrix = math.mat4(); - const tmpMatrix2 = math.mat4(); - - for (var i = 0; i < positionDecodeMatrices.length; i++) - { - // 4x4 values - texArray.set ( - math.transposeMat4( - math.mulMat4( - instanceMatrices[i], - positionDecodeMatrices[i], - tmpMatrix - ), - tmpMatrix2 - ).slice(0, 12), - i * 12 - ); - } - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGBA32F, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RGBA, - gl.FLOAT, - texArray, - 0 - ); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} indices - * - * @returns {BindableDataTexture} - */ - generateTextureFor8BitIndices (gl, indices) { - if (indices.length == 0) { - return { - texture: null, - textureHeight: 0, - }; - } - - const textureWidth = 4096; - const textureHeight = Math.ceil (indices.length / 3 / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight * 3; - const texArray = new Uint8Array (texArraySize); - - dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - texArray.fill(0); - texArray.set(indices, 0) - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB8UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RGB_INTEGER, - gl.UNSIGNED_BYTE, - texArray, - 0 - ); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} indices - * - * @returns {BindableDataTexture} - */ - generateTextureFor16BitIndices (gl, indices) { - if (indices.length == 0) { - return { - texture: null, - textureHeight: 0, - }; - } - const textureWidth = 4096; - const textureHeight = Math.ceil (indices.length / 3 / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight * 3; - const texArray = new Uint16Array (texArraySize); - - dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - texArray.fill(0); - texArray.set(indices, 0) - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RGB_INTEGER, - gl.UNSIGNED_SHORT, - texArray, - 0 - ); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} indices - * - * @returns {BindableDataTexture} - */ - generateTextureFor32BitIndices (gl, indices) { - if (indices.length == 0) { - return { - texture: null, - textureHeight: 0, - }; - } - - const textureWidth = 4096; - const textureHeight = Math.ceil (indices.length / 3 / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight * 3; - const texArray = new Uint32Array (texArraySize); - - dataTextureRamStats.sizeDataTextureIndices += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - texArray.fill(0); - texArray.set(indices, 0) - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB32UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RGB_INTEGER, - gl.UNSIGNED_INT, - texArray, - 0 - ); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} edgeIndices - * - * @returns {BindableDataTexture} - */ - generateTextureFor8BitsEdgeIndices (gl, edgeIndices) { - if (edgeIndices.length == 0) { - return { - texture: null, - textureHeight: 0, - }; - } - - const textureWidth = 4096; - const textureHeight = Math.ceil (edgeIndices.length / 2 / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight * 2; - const texArray = new Uint8Array (texArraySize); - - dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - texArray.fill(0); - texArray.set(edgeIndices, 0) - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG8UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RG_INTEGER, - gl.UNSIGNED_BYTE, - texArray, - 0 - ); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} edgeIndices - * - * @returns {BindableDataTexture} - */ - generateTextureFor16BitsEdgeIndices (gl, edgeIndices) { - if (edgeIndices.length == 0) { - return { - texture: null, - textureHeight: 0, - }; - } - - const textureWidth = 4096; - const textureHeight = Math.ceil (edgeIndices.length / 2 / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight * 2; - const texArray = new Uint16Array (texArraySize); - - dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - texArray.fill(0); - texArray.set(edgeIndices, 0) - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG16UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RG_INTEGER, - gl.UNSIGNED_SHORT, - texArray, - 0 - ); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} edgeIndices - * - * @returns {BindableDataTexture} - */ - generateTextureFor32BitsEdgeIndices (gl, edgeIndices) { - if (edgeIndices.length == 0) { - return { - texture: null, - textureHeight: 0, - }; - } - - const textureWidth = 4096; - const textureHeight = Math.ceil (edgeIndices.length / 2 / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight * 2; - const texArray = new Uint32Array (texArraySize); - - dataTextureRamStats.sizeDataTextureEdgeIndices += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - texArray.fill(0); - texArray.set(edgeIndices, 0) - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RG32UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RG_INTEGER, - gl.UNSIGNED_INT, - texArray, - 0 - ); - - this.disableBindedTextureFiltering (gl); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} positions Array of (uniquified) quantized positions in the layer - * - * This will generate a texture for positions in the layer. - * - * The texture will have: - * - 1024 columns, where each pixel will be a 16-bit-per-component RGB texture, corresponding to the XYZ of the position - * - a number of rows R where R*1024 is just >= than the number of vertices (positions / 3) - * - * @returns {BindableDataTexture} - */ - generateTextureForPositions (gl, positions) { - const numVertices = positions.length / 3; - const textureWidth = 4096; - const textureHeight = Math.ceil (numVertices / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight * 3; - const texArray = new Uint16Array (texArraySize); - - dataTextureRamStats.sizeDataTexturePositions += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - texArray.fill(0); - - texArray.set (positions, 0); - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.RGB16UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RGB_INTEGER, - gl.UNSIGNED_SHORT, - texArray, - 0 - ); - - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } - - /** - * @param {WebGL2RenderingContext} gl - * @param {ArrayLike} portionIdsArray - * - * @returns {BindableDataTexture} - */ - generateTextureForPackedPortionIds (gl, portionIdsArray) { - if (portionIdsArray.length == 0) { - return { - texture: null, - textureHeight: 0, - }; - } - const lenArray = portionIdsArray.length; - const textureWidth = 4096; - const textureHeight = Math.ceil (lenArray / textureWidth); - - if (textureHeight == 0) - { - throw "texture height == 0"; - } - - const texArraySize = textureWidth * textureHeight; - const texArray = new Uint16Array (texArraySize); - - texArray.set ( - portionIdsArray, - 0 - ); - - dataTextureRamStats.sizeDataTexturePortionIds += texArray.byteLength; - dataTextureRamStats.numberOfTextures++; - - const texture = gl.createTexture(); - - gl.bindTexture (gl.TEXTURE_2D, texture); - - gl.texStorage2D(gl.TEXTURE_2D, 1, gl.R16UI, textureWidth, textureHeight); - - gl.texSubImage2D( - gl.TEXTURE_2D, - 0, - 0, - 0, - textureWidth, - textureHeight, - gl.RED_INTEGER, - gl.UNSIGNED_SHORT, - texArray, - 0 - ); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE); - - gl.bindTexture(gl.TEXTURE_2D, null); - - return new BindableDataTexture( - gl, - texture, - textureWidth, - textureHeight - ); - } -} - -export { - dataTextureRamStats, - DataTextureState, - DataTextureBuffer, - DataTextureGenerator, -} \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/LodCullingManager.js b/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/LodCullingManager.js deleted file mode 100644 index a96d06cf3..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/LodCullingManager.js +++ /dev/null @@ -1,398 +0,0 @@ -import { DataTextureSceneModel } from "../../../DataTextureSceneModel.js" - -// For JSDoc autocompletion -import { DataTextureSceneModelNode } from "../../DataTextureSceneModelNode.js" -import { Scene } from "../../../../../scene/Scene.js" - -/** - * Wheter the FPS tracker was already installed. - */ -let _attachedFPSTracker = false; - -/** - * The list of ````LodCullingManager````'s subscribed to FPS tracking. - * - * @type {Array } - */ -const _fpsTrackingManagers = []; - -/** - * - * @param {Scene} scene - * @param {LodCullingManager} cullingManager - */ -function attachFPSTracker (scene, cullingManager) { - if (!_attachedFPSTracker) { - _attachedFPSTracker = true; - - const MAX_NUM_TICKS = 4; - let tickTimeArray = new Array (MAX_NUM_TICKS); - let numTick = 0; - - let currentFPS = -1; - - let preRenderTime = Date.now(); - let deltaTime = 0; - - // Apply LOD-culling before rendering the scene - scene.on("rendering", function () { - if (currentFPS == -1) - { - return; - } - - // Call LOD-culling tasks - for (let i = 0, len = _fpsTrackingManagers.length; i < len; i++) - { - _fpsTrackingManagers[i].applyLodCulling (currentFPS); - } - }); - - // Once the scene has dispached the GL draw* commands, the rendering will - // happen in asynchornous mode. - - // A way to measure the frame-rate, is the time that passes: - // - since all render commands are sent to the GPU - // (the "scene.rendered" event) - // - until the next animation-frame callback is called - // (when the callback passed to "requestAnimationFrame" is called) - - // One advantqage of this method is that the frame-rate tracking will - // track mostly the GPU-time: if traditional mechanisms based on xeokit events - // were used instead, the frame-rate counter would also measure possibly - // the user-side code during dispatching of events. - - // This mechanism here is not ideal but at least makes sure to track the - // frame-rate in such a way that is directly proportional to the time spent - // drawing geometry on the GPU. And this makes the metric quite good for the - // prupose of the LOD mechanism! - scene.on("rendered", function () { - preRenderTime = Date.now (); - - window.requestAnimationFrame(function () { - numTick++; - - const newTime = Date.now(); - deltaTime = newTime - preRenderTime; - - preRenderTime = newTime; - - tickTimeArray[numTick % MAX_NUM_TICKS] = deltaTime; - - let sumTickTimes = 0; - - if (numTick > MAX_NUM_TICKS) - { - for (let i = 0; i < MAX_NUM_TICKS; i++) - { - sumTickTimes += tickTimeArray[i]; - } - - currentFPS = MAX_NUM_TICKS / sumTickTimes * 1000; - } - }); - }); - - // If the camera stays quiet for more than 3 scene ticks, completely - // reset the LOD culling mechanism - { - let sceneTick = 0; - - let lastTickCameraMoved = sceneTick ; - - scene.camera.on ("matrix", function () { - lastTickCameraMoved = sceneTick ; - }); - - scene.on ("tick", function () { - if ((sceneTick - lastTickCameraMoved) > 3) - { - // Call LOD-culling tasks - for (let i = 0, len = _fpsTrackingManagers.length; i < len; i++) - { - _fpsTrackingManagers[i].resetLodCulling (); - } - } - - sceneTick++; - }); - } - } - - _fpsTrackingManagers.push (cullingManager); -} - -/** - * Data structure containing pre-initialized `LOD` data. - * - * Will be used by the rest of `LOD` related code. - */ - class LodState { - /** - * @param {Array} lodLevels The triangle counts for the LOD levels, for example ```[ 2000, 600, 150, 80, 20 ]``` - * @param {number} targetFps The target FPS (_Frames Per Second_) for the dynamic culling of objects in the different LOD levels. - */ - constructor (lodLevels, targetFps) { - /** - * An array ordered DESC with the number of triangles allowed in each LOD bucket. - * - * @type {Array} - */ - this.triangleLODLevels = lodLevels; - - /** - * A computed dictionary for `triangle-number-buckets` where: - * - key: the number of triangles allowed for the objects in the bucket. - * - value: all PerformanceNodes that have the number of triangles or more. - * - * @type {Map>} - */ - this.nodesInLOD = {}; - - /** - * A computed dictionary for `triangle-number-buckets` where: - * - key: the number of triangles allowed for the objects in the bucket. - * - value: the sum of triangles counts for all PeformanceNodes in the bucket. - * - * @type {Map} - */ - this.triangleCountInLOD = {}; - - /** - * The target FPS for the `LOD` mechanism: - * - if real FPS are below this number, the next `LOD` level will be applied. - * - * - if real FPS are... - * - above this number plus a margin - * - and for some consecutive frames - * ... then the previous `LOD` level will be applied. - * - * @type {number} - */ - this.targetFps = targetFps; - - // /** - // * Not used at the moment. - // */ - // this.restoreTime = LOD_RESTORE_TIME; - - /** - * Current `LOD` level. Starts at 0. - * - * @type {number} - */ - this.lodLevelIndex = 0; - - /** - * Number of consecutive frames in current `LOD` level where FPS was above `targetFps` - * - * @type {number} - */ - this.consecutiveFramesWithTargetFps = 0; - - /** - * Number of consecutive frames in current `LOD` level where FPS was below `targetFps` - * - * @type {number} - */ - this.consecutiveFramesWithoutTargetFps = 0; - } - - /** - * @param {DataTextureSceneModel} model - */ - initializeLodState (model) { - if (model._nodeList.length == 0) - { - return; - } - - // const LOD_LEVELS = [ 2000, 600, 150, 80, 20 ]; - // const LOD_RESTORE_TIME = 600; - // const LOD_TARGET_FPS = 20; - const nodeList = model._nodeList; - - let nodesInLOD = {}; - let triangleCountInLOD = {}; - - for (let i = 0, len = nodeList.length; i < len; i++) - { - const node = nodeList[i]; - - let lodLevel, len; - - for (lodLevel = 0, len = this.triangleLODLevels.length; lodLevel < len; lodLevel++) - { - if (node.numTriangles >= this.triangleLODLevels [lodLevel]) - { - break; - } - } - - var lodPolys = this.triangleLODLevels [lodLevel] || 0; - - if (!(lodPolys in nodesInLOD)) - { - nodesInLOD [lodPolys] = []; - } - - nodesInLOD [lodPolys].push (node); - - if (!(lodPolys in triangleCountInLOD)) - { - triangleCountInLOD [lodPolys] = 0; - } - - triangleCountInLOD [lodPolys] += node.numTriangles; - } - - this.nodesInLOD = nodesInLOD; - this.triangleCountInLOD = triangleCountInLOD; - } -} - -class LodCullingManager { - /** - * @param {DataTextureSceneModel} model - * @param {Array} lodLevels - * @param {number} targetFps - */ - constructor (model, lodLevels, targetFps) { - /** - * @type {DataTextureSceneModel} - */ - this.model = model; - - /** - * @private - */ - this.lodState = new LodState ( - lodLevels, - targetFps - ); - - console.time ("initializeLodState"); - - this.lodState.initializeLodState (model); - - console.timeEnd ("initializeLodState"); - - attachFPSTracker (this.model.scene, this); - } - - /** - * Cull any objects belonging to the current `LOD` level, and increase the `LOD` level. - * - * @private - */ - _increaseLODLevelIndex () - { - const lodState = this.lodState; - - if (lodState.lodLevelIndex == lodState.triangleLODLevels.length) - { - return false; - } - - const nodesInLOD = lodState.nodesInLOD [lodState.triangleLODLevels[lodState.lodLevelIndex]] || []; - - for (let i = 0, len = nodesInLOD.length; i < len; i++) - { - nodesInLOD[i].culledLOD = true; - } - - lodState.lodLevelIndex++; - - return true; - } - - /** - * Un-cull any objects belonging to the current `LOD` level, and decrease the `LOD` level. - * - * @private - */ - _decreaseLODLevelIndex () - { - const lodState = this.lodState; - - if (lodState.lodLevelIndex == 0) - { - return false; - } - - const nodesInLOD = lodState.nodesInLOD [lodState.triangleLODLevels[lodState.lodLevelIndex - 1]] || []; - - for (let i = 0, len = nodesInLOD.length; i < len; i++) - { - nodesInLOD[i].culledLOD = false; - } - - lodState.lodLevelIndex--; - - return true; - } - - /** - * Apply LOD culling. - * - * Will update LOD level, if needed, based in... - * - current FPS - * - target FPS - * - * ... and then will cull/uncull the needed objects according to the LOD level. - * - * @param {number} currentFPS The current FPS (frames per second) - * @returns {boolean} Whether the LOD level was changed. This is, if some object was culled/unculled - */ - applyLodCulling (currentFPS) - { - let lodState = this.lodState; - const model = this.model; - - let retVal = false; - - if (currentFPS < lodState.targetFps) - { - if (++lodState.consecutiveFramesWithoutTargetFps > 0) - { - lodState.consecutiveFramesWithoutTargetFps = 0; - retVal = this._increaseLODLevelIndex(); - } - } - else if (currentFPS > (lodState.targetFps + 4)) - { - if (++lodState.consecutiveFramesWithTargetFps > 1) - { - lodState.consecutiveFramesWithTargetFps = 0; - retVal = this._decreaseLODLevelIndex(); - } - } - - if (retVal) { - console.log ("LOD level = " + lodState.lodLevelIndex); - } - - return retVal; - } - - resetLodCulling () - { - const model = this.model; - - let retVal = false; - - let decreasedLevel = false; - - do { - retVal |= (decreasedLevel = this._decreaseLODLevelIndex()); - } while (decreasedLevel); - - if (retVal) { - console.log ("LOD resetted"); - } - - return retVal; - } -} - -export { LodCullingManager } \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureBuffer.js b/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureBuffer.js deleted file mode 100644 index c52bc6205..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/TrianglesDataTextureBuffer.js +++ /dev/null @@ -1,45 +0,0 @@ -import {WEBGL_INFO} from "../../../../../webglInfo.js"; - -const bigIndicesSupported = WEBGL_INFO.SUPPORTED_EXTENSIONS["OES_element_index_uint"]; - -/** - * @private - */ -class TrianglesDataTextureBuffer { - - constructor() { - - this.positions = []; - this.metallicRoughness = []; - - this.indices8Bits = []; - this.indices16Bits = []; - this.indices32Bits = []; - this.edgeIndices8Bits = []; - this.edgeIndices16Bits = []; - this.edgeIndices32Bits = []; - - this.perObjectColors = []; - this.perObjectPickColors = []; - - this.perObjectSolid = []; - - this.perObjectOffsets = []; - - this.perObjectPositionsDecodeMatrices = []; // chipmunk - this.perObjectInstancePositioningMatrices = []; - - this.perObjectVertexBases = []; - this.perObjectIndexBaseOffsets = []; - this.perObjectEdgeIndexBaseOffsets = []; - - this.perTriangleNumberPortionId8Bits = []; // chipmunk - this.perTriangleNumberPortionId16Bits = []; // chipmunk - this.perTriangleNumberPortionId32Bits = []; // chipmunk - this.perEdgeNumberPortionId8Bits = []; // chipmunk - this.perEdgeNumberPortionId16Bits = []; // chipmunk - this.perEdgeNumberPortionId32Bits = []; // chipmunk - } -} - -export {TrianglesDataTextureBuffer}; \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/ViewFrustumCullingManager.js b/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/ViewFrustumCullingManager.js deleted file mode 100644 index 9bd31b7dd..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/ViewFrustumCullingManager.js +++ /dev/null @@ -1,749 +0,0 @@ -import { clusterizeV2 } from "./cluster-helper.js"; -import { math } from "../../../../../math/math.js"; - -// For JSDoc autocompletion -import { DataTextureSceneModel } from "../../../DataTextureSceneModel.js" -import { RBush3D } from "./rbush3d.js"; -import { DataTextureSceneModelNode } from "../../DataTextureSceneModelNode.js"; - -let tempVec3 = math.vec3 (); - -/** - * Number of bits per-dimension in the 2-dimensional LUT fast atan table - */ -const ATAN2_LUT_BITS = 9; - -const ATAN2_FACTOR = 1 << (ATAN2_LUT_BITS - 1); - -/** - * Constant for quick conversion of radians to degrees - */ -const _180_DIV_MATH_PI = 180 / Math.PI; - -const atan2LUT = new Float32Array ((1 << ATAN2_LUT_BITS) * (1 << ATAN2_LUT_BITS)); - -// Initialize the Look Up Table -for (let i = -ATAN2_FACTOR; i < ATAN2_FACTOR; i++) -{ - for (let j = -ATAN2_FACTOR; j < ATAN2_FACTOR; j++) - { - const index = ((i+ATAN2_FACTOR) << ATAN2_LUT_BITS) + (j+ATAN2_FACTOR); - - const max = Math.max ( - Math.abs (i), - Math.abs (j) - ); - - atan2LUT [index] = Math.atan2 ( - i/max, - j/max - ); - } -} - -/** - * Fast ````Math.atan2```` implementation based in Look Up Tables. - * - * @param {number} x - * @param {number} y - * - * @returns {number} - */ -function fastAtan2(x, y) -{ - const max_factor = ATAN2_FACTOR / Math.max ( - Math.abs (x), - Math.abs (y) - ); - - const xx = Math.round ( - x * max_factor - ) + (ATAN2_FACTOR - 1); - - const yy = Math.round ( - y * max_factor - ) + (ATAN2_FACTOR - 1); - - return atan2LUT [(xx << ATAN2_LUT_BITS) + yy]; -} - -const VISIBILITY_CHECK_ALL_D = (1 << 0); -const VISIBILITY_CHECK_NONE_D = (1 << 1); -const VISIBILITY_CHECK_D_LESS = (1 << 2); -const VISIBILITY_CHECK_D_MORE = (1 << 3); - -const VISIBILITY_CHECK_ALL_H = (1 << 4); -const VISIBILITY_CHECK_NONE_H = (1 << 5); -const VISIBILITY_CHECK_H_LESS = (1 << 6); -const VISIBILITY_CHECK_H_MORE = (1 << 7); - -const VISIBILITY_CHECK_ALL_V = (1 << 8); -const VISIBILITY_CHECK_NONE_V = (1 << 9); -const VISIBILITY_CHECK_V_LESS = (1 << 10); -const VISIBILITY_CHECK_V_MORE = (1 << 11); - -const VISIBILITY_CHECK_ENVOLVES_D = (1 << 12); -const VISIBILITY_CHECK_ENVOLVES_H = (1 << 13); -const VISIBILITY_CHECK_ENVOLVES_V = (1 << 14); - -/** - * Data structure containing pre-initialized `View Frustum Culling` data. - * - * Will be used by the rest of `View Frustum Culling` related code. - */ - class ViewFrustumCullingState { - constructor () { - /** - * The pre-computed AABB tree that will be used for efficient View Frustum Culling. - * - * @type {RBush3D} - * @private - */ - this._aabbTree = null; - - /** - * @type {Array<{mesh: object, clusterNumber: number}>} - * @private - */ - this._orderedMeshList = []; - - /** - * @type {Array} - * @private - */ - this._orderedEntityList = []; - - /** - * @private - */ - this._frustumProps = { - dirty: true, - wMultiply: 1.0, - hMultiply: 1.0, - }; - - /** - * @private - */ - this._cullFrame = 0; - - /** - * @type {boolean} - * @private - */ - this.finalized = false; - } - - /** - * - * @param {Array} entityList - * @param {Array} meshList - */ - initializeVfcState (entityList, meshList) { - if (this.finalized) { - throw "Already finalized"; - } - - const clusterResult = clusterizeV2 (entityList, meshList); - - this._aabbTree = clusterResult.rTreeBasedAabbTree; - - for (let i = 0, len = clusterResult.orderedClusteredIndexes.length; i < len; i++) - { - const entityIndex = clusterResult.orderedClusteredIndexes[i]; - - const clusterNumber = clusterResult.entityIdToClusterIdMapping[entityIndex]; - - const entity = entityList[entityIndex]; - - const newMeshIds = []; - - for (let j = 0, len2 = entity.meshIds.length; j < len2; j++) - { - const meshIndex = entity.meshIds[j]; - - meshList[meshIndex].id = this._orderedMeshList.length; - - newMeshIds.push (this._orderedMeshList.length); - - this._orderedMeshList.push ({ - clusterNumber: clusterNumber, - mesh: meshList[meshIndex] - }); - } - - entity.meshIds = newMeshIds; - - this._orderedEntityList.push ( - entity - ); - } - - for (let i = 0, len = clusterResult.instancedIndexes.length; i < len; i++) { - const entityIndex = clusterResult.instancedIndexes[i]; - - let entity = entityList[entityIndex]; - - const newMeshIds = []; - - for (let j = 0, len2 = entity.meshIds.length; j < len2; j++) - { - const meshIndex = entity.meshIds[j]; - - meshList[meshIndex].id = this._orderedMeshList.length; - - newMeshIds.push (this._orderedMeshList.length); - - this._orderedMeshList.push ({ - clusterNumber: 99999, - mesh: meshList[meshIndex] - }); - } - - entity.meshIds = newMeshIds; - - this._orderedEntityList.push ( - entity - ); - } - } - - /** - * @param {DataTextureSceneModel} model - * @param {*} fnForceFinalizeLayer - */ - finalize (model, fnForceFinalizeLayer) { - if (this.finalized) { - throw "Already finalized"; - } - - let lastClusterNumber = -1; - - for (let i = 0, len = this._orderedMeshList.length; i < len; i++) { - const { clusterNumber, mesh } = this._orderedMeshList [i]; - - if (lastClusterNumber != -1 && lastClusterNumber != clusterNumber) { - fnForceFinalizeLayer.call (model); - } - - model.createMesh (mesh); - - lastClusterNumber = clusterNumber; - } - - // fnForceFinalizeLayer (); - - for (let i = 0, len = this._orderedEntityList.length; i < len; i++) { - model.createEntity (this._orderedEntityList[i]) - } - - // Free memory - this._orderedMeshList = []; - this._orderedEntityList = []; - - this.finalized = true; - } - - /** - * @param {DataTextureSceneModel} model - */ - applyViewFrustumCulling (model) { - if (!this.finalized) { - throw "Not finalized"; - } - - if (!this._aabbTree) { - return; - } - - if (!this._canvasElement) { - /** - * @type {HTMLCanvasElement} - * @private - */ - this._canvasElement = model.scene.canvas.canvas; - } - - if (!this._camera) { - this._camera = model.scene.camera; - } - - this._ensureFrustumPropsUpdated (model); - - this._initializeCullingDataIfNeeded (model); - - const visibleNodes = this._searchVisibleNodesWithFrustumCulling (); - - // console.log (`visibleNodes: ${visibleNodes.length} / ${this._internalNodesList.length}`); - - this._cullFrame++; - - this._markVisibleFrameOfVisibleNodes ( - visibleNodes, - this._cullFrame - ); - - this._cullNonVisibleNodes ( - model, - this._cullFrame - ); - - // console.log (`${numIntersectionChecks} intersection checks`); - } - - _initializeCullingDataIfNeeded (model) { - if (this._internalNodesList) - { - return; - } - - if (!this._aabbTree) { - return; - } - - const allAabbNodes = this._aabbTree.all(); - - let maxEntityId = 0; - - allAabbNodes.forEach (aabbbNode => { - maxEntityId = Math.max ( - maxEntityId, - aabbbNode.entity.id - ) - }); - - const internalNodesList = new Array(maxEntityId + 1); - - allAabbNodes.forEach (aabbbNode => { - internalNodesList [ - aabbbNode.entity.id - ] = model._nodes[aabbbNode.entity.xeokitId]; - }); - - /** - * @type {Array} - * @private - */ - this._internalNodesList = internalNodesList; - - /** - * @private - */ - this._lastVisibleFrameOfNodes = new Array (internalNodesList.length); - - this._lastVisibleFrameOfNodes.fill(0); - } - - _searchVisibleNodesWithFrustumCulling() { - return this._aabbTree.searchCustom( - (bbox, isLeaf) => this._aabbIntersectsCameraFrustum (bbox, isLeaf), - (bbox) => this._aabbContainedInCameraFrustum (bbox) - ) - } - - _markVisibleFrameOfVisibleNodes (visibleNodes, cullFrame) { - const lastVisibleFrameOfNodes = this._lastVisibleFrameOfNodes; - - for (let i = 0, len = visibleNodes.length; i < len; i++) - { - lastVisibleFrameOfNodes [visibleNodes[i].entity.id] = cullFrame; - } - } - - _cullNonVisibleNodes (model, cullFrame) { - const internalNodesList = this._internalNodesList; - const lastVisibleFrameOfNodes = this._lastVisibleFrameOfNodes; - - for (let i = 0, len = internalNodesList.length; i < len; i++) - { - if (internalNodesList[i]) { - internalNodesList[i].culledVFC = lastVisibleFrameOfNodes[i] !== cullFrame; - } - } - } - - /** - * Returns all 8 coordinates of an AABB. - * - * @param {Array} bbox An AABB - * - * @private - */ - _getPointsForBBox (bbox) { - var retVal = []; - - for (var i = 0; i < 8; i++) - { - retVal.push ([ - (i & 1) ? bbox.maxX : bbox.minX, - (i & 2) ? bbox.maxY : bbox.minY, - (i & 4) ? bbox.maxZ : bbox.minZ, - ]); - } - - return retVal; - } - - /** - * @param {*} bbox - * @param {*} isLeaf - * @returns - * - * @private - */ - _aabbIntersectsCameraFrustum (bbox, isLeaf) - { - if (isLeaf) { - return true; - } - - if (this._camera.projection == "ortho") { - // TODO: manage ortho views - this._frustumProps.dirty = false; - return true; - } - - // numIntersectionChecks++; - - var check = this._aabbIntersectsCameraFrustum_internal (bbox); - - var interD = !(check & VISIBILITY_CHECK_ALL_D) && !(check & VISIBILITY_CHECK_NONE_D); - var interH = !(check & VISIBILITY_CHECK_ALL_H) && !(check & VISIBILITY_CHECK_NONE_H); - var interV = !(check & VISIBILITY_CHECK_ALL_V) && !(check & VISIBILITY_CHECK_NONE_V); - - if (((check & VISIBILITY_CHECK_ENVOLVES_D) || interD || (check & VISIBILITY_CHECK_ALL_D)) && - ((check & VISIBILITY_CHECK_ENVOLVES_H) || interH || (check & VISIBILITY_CHECK_ALL_H)) && - ((check & VISIBILITY_CHECK_ENVOLVES_V) || interV || (check & VISIBILITY_CHECK_ALL_V))) - { - return true; - } - - return false; - } - - /** - * @param {*} bbox - * @returns - * - * @private - */ - _aabbContainedInCameraFrustum (bbox) - { - if (this._camera.projection == "ortho") { - // TODO: manage ortho views - this._frustumProps.dirty = false; - return true; - } - - var check = bbox._check; - - return (check & VISIBILITY_CHECK_ALL_D) && - (check & VISIBILITY_CHECK_ALL_H) && - (check & VISIBILITY_CHECK_ALL_V); - } - - /** - * @param {DataTextureSceneModel} model - * - * @private - */ - _ensureFrustumPropsUpdated (model) - { - // Assuming "min" for fovAxis - const min = Math.min ( - this._canvasElement.width, - this._canvasElement.height - ); - - this._frustumProps.wMultiply = this._canvasElement.width / min; - this._frustumProps.hMultiply = this._canvasElement.height / min; - - const aspect = this._canvasElement.width / this._canvasElement.height; - - let fov = this._camera.perspective.fov; - - if (aspect < 1) - { - fov = fov / aspect; - } - - fov = Math.min (fov, 120); - - this._frustumProps.fov = fov; - - // if (!this._frustumProps.dirty) - // { - // return; - // } - - // Adjust camera eye/look to take into account the `model.worldMatrix`: - // - the entities' AABBs don't take it into account - // - and they can't, since `model.worldMatrix` is dynamic - // So, instead of transformating the positions of the r*tree's AABBs, - // apply the inverse transform to the camera eye/look, since the culling - // result is equivalent. - const invWorldMatrix = math.inverseMat4( - model.worldMatrix, - math.mat4() - ); - - const modelCamEye = math.transformVec3( - this._camera.eye, - invWorldMatrix, - [ 0, 0, 0 ] - ); - - const modelCamLook = math.transformVec3( - this._camera.look, - invWorldMatrix, - [ 0, 0, 0 ] - ); - - this._frustumProps.forward = math.normalizeVec3 ( - math.subVec3 ( - modelCamLook, - modelCamEye, - [ 0, 0, 0] - ), - [ 0, 0, 0] - ); - - this._frustumProps.up = math.normalizeVec3( - this._camera.up, - [ 0, 0, 0 ] - ); - - this._frustumProps.right = math.normalizeVec3 ( - math.cross3Vec3 ( - this._frustumProps.forward, - this._frustumProps.up, - [ 0, 0, 0] - ), - [ 0, 0, 0 ] - ); - - this._frustumProps.eye = modelCamEye.slice (); - - this._frustumProps.CAM_FACTOR_1 = this._frustumProps.fov / 2 * this._frustumProps.wMultiply / _180_DIV_MATH_PI; - this._frustumProps.CAM_FACTOR_2 = this._frustumProps.fov / 2 * this._frustumProps.hMultiply / _180_DIV_MATH_PI; - - // this._frustumProps.dirty = false; - } - - /** - * @param {*} bbox - * @returns - * - * @private - */ - _aabbIntersectsCameraFrustum_internal (bbox) - { - var bboxPoints = bbox._points || this._getPointsForBBox (bbox); - - bbox._points = bboxPoints; - - var retVal = - VISIBILITY_CHECK_ALL_D | VISIBILITY_CHECK_NONE_D | - VISIBILITY_CHECK_ALL_H | VISIBILITY_CHECK_NONE_H | - VISIBILITY_CHECK_ALL_V | VISIBILITY_CHECK_NONE_V; - - if (window._debug) - { - window._debug = false; - - debugger; - } - - for (var i = 0, len = bboxPoints.length; i < len; i++) { - // if ((!(retVal & VISIBILITY_CHECK_ALL_D) && !(retVal & VISIBILITY_CHECK_NONE_D)) || - // (!(retVal & VISIBILITY_CHECK_ALL_H) && !(retVal & VISIBILITY_CHECK_NONE_H)) || - // (!(retVal & VISIBILITY_CHECK_ALL_V) && !(retVal & VISIBILITY_CHECK_NONE_V))) - // { - // break; - // } - - var bboxPoint = bboxPoints [i]; - - var pointRelToCam = tempVec3; - - pointRelToCam[0] = bboxPoint[0] - this._frustumProps.eye[0]; - pointRelToCam[1] = bboxPoint[1] - this._frustumProps.eye[1]; - pointRelToCam[2] = bboxPoint[2] - this._frustumProps.eye[2]; - - var forwardComponent = math.dotVec3 ( - pointRelToCam, - this._frustumProps.forward - ); - - if (forwardComponent < 0) - { - retVal |= VISIBILITY_CHECK_D_LESS; - retVal &= ~VISIBILITY_CHECK_ALL_D; - } - else - { - retVal |= VISIBILITY_CHECK_D_MORE; - retVal &= ~VISIBILITY_CHECK_NONE_D; - } - - var rightComponent = math.dotVec3 ( - pointRelToCam, - this._frustumProps.right - ); - - var rightAngle = fastAtan2 ( - rightComponent, - forwardComponent - ); - - if (Math.abs (rightAngle) > this._frustumProps.CAM_FACTOR_1) - { - if (rightAngle < 0) - retVal |= VISIBILITY_CHECK_H_LESS; - else - retVal |= VISIBILITY_CHECK_H_MORE; - - retVal &= ~VISIBILITY_CHECK_ALL_H; - } - else - { - retVal &= ~VISIBILITY_CHECK_NONE_H; - } - - var upComponent = math.dotVec3 ( - pointRelToCam, - this._frustumProps.up - ); - - var upAngle = fastAtan2 ( - upComponent, - forwardComponent - ); - - if (Math.abs (upAngle) > this._frustumProps.CAM_FACTOR_2) - { - if (upAngle < 0) - retVal |= VISIBILITY_CHECK_V_LESS; - else - retVal |= VISIBILITY_CHECK_V_MORE; - - retVal &= ~VISIBILITY_CHECK_ALL_V; - } - else - { - retVal &= ~VISIBILITY_CHECK_NONE_V; - } - } - - // console.log (retVal); - - if ((retVal & VISIBILITY_CHECK_D_LESS) && (retVal & VISIBILITY_CHECK_D_MORE)) - { - retVal |= VISIBILITY_CHECK_ENVOLVES_D; - } - - if ((retVal & VISIBILITY_CHECK_H_LESS) && (retVal & VISIBILITY_CHECK_H_MORE)) - { - retVal |= VISIBILITY_CHECK_ENVOLVES_H; - } - - if ((retVal & VISIBILITY_CHECK_V_LESS) && (retVal & VISIBILITY_CHECK_V_MORE)) - { - retVal |= VISIBILITY_CHECK_ENVOLVES_V; - } - - bbox._check = retVal; - - // console.log (retVal); - - return retVal; - } -} - -class ViewFrustumCullingManager { - /** - * @param {DataTextureSceneModel} model - */ - constructor (model) { - /** - * @private - */ - this.model = model; - - /** - * @private - */ - this.entities = []; - - /** - * @private - */ - this.meshes = []; - - this.finalized = false; - } - - /** - */ - addEntity (entity) { - if (this.finalized) { - throw "Already finalized"; - } - - this.entities.push (entity); - } - - /** - */ - addMesh (mesh) { - if (this.finalized) { - throw "Already finalized"; - } - - this.meshes.push (mesh); - } - - finalize (fnForceFinalizeLayer) { - if (this.finalized) { - throw "Already finalized"; - } - - this.finalized = true; - - /** - * @private - */ - this.vfcState = new ViewFrustumCullingState (); - - console.time ("initializeVfcState"); - - this.vfcState.initializeVfcState (this.entities, this.meshes); - - console.timeEnd ("initializeVfcState"); - - console.time ("finalizeVfcState"); - - this.vfcState.finalize (this.model, fnForceFinalizeLayer); - - console.timeEnd ("finalizeVfcState"); - - const self = this; - - const cb = () => this.applyViewFrustumCulling.call (self); - - this.model.scene.on ("rendering", cb); - } - - /** - * @private - */ - applyViewFrustumCulling () { - if (!(this.finalized)) { - throw "Not finalized"; - } - - this.vfcState.applyViewFrustumCulling (this.model); - } -} - -export { ViewFrustumCullingManager } \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/calculateUniquePositions.js b/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/calculateUniquePositions.js deleted file mode 100644 index 23e0fd5e3..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/calculateUniquePositions.js +++ /dev/null @@ -1,156 +0,0 @@ -/** - * @author https://github.com/tmarti, with support from https://tribia.com/ - * @license MIT - * - * This file takes a geometry given by { positions, indices }, and returns - * equivalent { positions, indices } arrays but which only contain unique - * positions. - * - * The time is O(N logN) with the number of positions due to a pre-sorting - * step, but is much more GC-friendly and actually faster than the classic O(N) - * approach based in keeping a hash-based LUT to identify unique positions. - */ - let comparePositions = null; - -function compareVertex (a, b) { - let res; - - for (let i = 0; i < 3; i++) { - if (0!= (res = comparePositions[a*3+i] - comparePositions[b*3+i])) - { - return res; - } - } - - return 0; -}; - -let seqInit = null; - -function setMaxNumberOfPositions (maxPositions) -{ - if (seqInit !== null && seqInit.length >= maxPositions) - { - return; - } - - seqInit = new Uint32Array(maxPositions); - - for (let i = 0; i < maxPositions; i++) - { - seqInit[i] = i; - } -} - -/** - * This function obtains unique positions in the provided object - * .positions array and calculates an index mapping, which is then - * applied to the provided object .indices and .edgeindices. - * - * The input object items are not modified, and instead new set - * of positions, indices and edgeIndices with the applied optimization - * are returned. - * - * The algorithm, instead of being based in a hash-like LUT for - * identifying unique positions, is based in pre-sorting the input - * positions... - * - * (it's possible to define a _"consistent ordering"_ for the positions - * as positions are quantized and thus not suffer from float number - * comparison artifacts) - * - * ... so same positions are adjacent in the sorted array, and then - * it's easy to scan linearly the sorted array. During the linear run, - * we will know that we found a different position because the comparison - * function will return != 0 between current and previous element. - * - * During this linear traversal of the array, a `unique counter` is used - * in order to calculate the mapping between original indices and unique - * indices. - * - * @param {*} mesh The input mesh to process, with `positions`, `indices` and `edgeIndices` keys. - * - * @returns An array with 3 elements: 0 => the uniquified positions; 1 and 2 => the remapped edges and edgeIndices arrays - */ -function uniquifyPositions(mesh) -{ - let _positions = mesh.positions; - let _indices = mesh.indices; - let _edgeIndices = mesh.edgeIndices; - - setMaxNumberOfPositions(_positions.length / 3); - - let seq = seqInit.slice (0, _positions.length / 3); - let remappings = seqInit.slice (0, _positions.length / 3); - - comparePositions = _positions; - - seq.sort(compareVertex); - - let uniqueIdx = 0 - - remappings[seq[0]] = 0; - - for (let i = 1, len = seq.length; i < len; i++) - { - if (0 != compareVertex(seq[i], seq[i-1])) - { - uniqueIdx++; - } - - remappings[seq[i]] = uniqueIdx; - } - - const numUniquePositions = uniqueIdx + 1; - - const newPositions = new Uint16Array (numUniquePositions * 3); - - uniqueIdx = 0 - - newPositions [uniqueIdx * 3 + 0] = _positions [seq[0] * 3 + 0]; - newPositions [uniqueIdx * 3 + 1] = _positions [seq[0] * 3 + 1]; - newPositions [uniqueIdx * 3 + 2] = _positions [seq[0] * 3 + 2]; - - for (let i = 1, len = seq.length; i < len; i++) - { - if (0 != compareVertex(seq[i], seq[i-1])) - { - uniqueIdx++; - - newPositions [uniqueIdx * 3 + 0] = _positions [seq[i] * 3 + 0]; - newPositions [uniqueIdx * 3 + 1] = _positions [seq[i] * 3 + 1]; - newPositions [uniqueIdx * 3 + 2] = _positions [seq[i] * 3 + 2]; - } - - remappings[seq[i]] = uniqueIdx; - } - - comparePositions = null; - - let newIndices = new Uint32Array (_indices.length); - - for (let i = 0, len = _indices.length; i < len; i++) - { - newIndices[i] = remappings [ - _indices[i] - ]; - } - - let newEdgeIndices = new Uint32Array (_edgeIndices.length); - - for (let i = 0, len = _edgeIndices.length; i < len; i++) - { - newEdgeIndices[i] = remappings [ - _edgeIndices[i] - ]; - } - - return [ - newPositions, - newIndices, - newEdgeIndices - ]; -} - - -export { uniquifyPositions } \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rbush3d.js b/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rbush3d.js deleted file mode 100644 index 5d04f00bd..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rbush3d.js +++ /dev/null @@ -1,814 +0,0 @@ -var module = {}; -var exports = {}; - -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.RBush3D = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= a.minX && - b.maxY >= a.minY && - b.maxZ >= a.minZ; -}; -exports.boxRayIntersects = function (box, ox, oy, oz, idx, idy, idz) { - var tx0 = (box.minX - ox) * idx; - var tx1 = (box.maxX - ox) * idx; - var ty0 = (box.minY - oy) * idy; - var ty1 = (box.maxY - oy) * idy; - var tz0 = (box.minZ - oz) * idz; - var tz1 = (box.maxZ - oz) * idz; - var z0 = Math.min(tz0, tz1); - var z1 = Math.max(tz0, tz1); - var y0 = Math.min(ty0, ty1); - var y1 = Math.max(ty0, ty1); - var x0 = Math.min(tx0, tx1); - var x1 = Math.max(tx0, tx1); - var tmin = Math.max(0, x0, y0, z0); - var tmax = Math.min(x1, y1, z1); - return tmax >= tmin ? tmin : Infinity; -}; -var multiSelect = function (arr, left, right, n, compare) { - var stack = [left, right]; - var mid; - while (stack.length) { - right = stack.pop(); - left = stack.pop(); - if (right - left <= n) - continue; - mid = left + Math.ceil((right - left) / n / 2) * n; - quickselect(arr, mid, left, right, compare); - stack.push(left, mid, mid, right); - } -}; -var compareMinX = function (a, b) { return a.minX - b.minX; }; -var compareMinY = function (a, b) { return a.minY - b.minY; }; -var compareMinZ = function (a, b) { return a.minZ - b.minZ; }; -var RBush3D = (function () { - function RBush3D(maxEntries) { - if (maxEntries === void 0) { maxEntries = 16; } - this.maxEntries = Math.max(maxEntries, 8); - this.minEntries = Math.max(4, Math.ceil(this.maxEntries * 0.4)); - this.clear(); - } - RBush3D.alloc = function () { - return this.pool.pop() || new this(); - }; - RBush3D.free = function (rbush) { - rbush.clear(); - this.pool.push(rbush); - }; - // Start of chipmunk - RBush3D.prototype.searchCustom = function (customIntersects, customContains) { - var node = this.data; - var result = []; - if (!customIntersects(node, isLeafChild(node, child))) - return result; - var nodesToSearch = []; - while (node) { - for (var i = 0, len = node.children.length; i < len; i++) { - var child = node.children[i]; - if (customIntersects(child, isLeafChild(node, child))) { - if (isLeafChild(node, child)) - result.push(child); - else if (customContains(child)) - this._all(child, result); - else - nodesToSearch.push(child); - } - } - node = nodesToSearch.pop(); - } - return result; - }; - RBush3D.prototype.analyzeTriangles = function (node) { - if (node === undefined) - { - node = this.data; - } - - var totalTriangles = 0; - - if (isLeaf(node)) - { - for (var i = 0, len = node.children.length; i < len; i++) { - totalTriangles += node.children [i].numTriangles; - } - } - else - { - for (var i = 0, len = node.children.length; i < len; i++) { - totalTriangles += this.analyzeTriangles (node.children [i]); - } - } - - return node.totalTriangles = totalTriangles; - }; - RBush3D.prototype.groupNodesByNumTrianglesThreshold = function (numTrianglesThreshold, node) - { - if (node === undefined) - { - this.analyzeTriangles (); - node = this.data; - } - - var totalTriangles = 0; - - var items = []; - - for (var i = 0, len = node.children.length; i < len; i++) { - var child = node.children[i]; - items.push ({ - item: child, - triangles: child.totalTriangles || child.numTriangles, - }); - } - - items.sort (function (a, b) { - return -(a.item.triangles - b.item.triangles); - }); - - var retVal = []; - var retValItem = []; - var retValItemTris = 0; - - var c = 0; - - for (var i = 0, len = items.length; i < len; i++) { - var item = items[i]; - - if ((retValItemTris + item.triangles) < numTrianglesThreshold) - { - retValItem.push (item); - retValItemTris += item.triangles; - continue; - } - - if (retValItem.length) - { - retVal.push (retValItem); - retValItem = []; - retValItemTris = 0; - } - - if ((retValItemTris + item.triangles) < numTrianglesThreshold) - { - i--; - continue; - } - - if (isLeafChild(node, item.item)) - { - retVal.push ([ - item, - ]); - } - else - { - var tmp = this.groupNodesByNumTrianglesThreshold ( - numTrianglesThreshold, - item.item - ); - - var tmp2 = []; - var accum2 = 0; - - for (var j = 0, len2 = tmp.length; j < len2 - 1; j++) - { - retVal.push (tmp [i]); - } - - if (tmp.length > 1) - { - tmp = tmp [tmp.length - 1]; - - for (var j = 0, len2 = tmp.length; j < len2; j++) - { - accum2 = accum2 + tmp [j].triangles; - - if (accum2 < numTrianglesThreshold) - { - tmp2.push (tmp[j]); - } - else - { - if (accum2 == 0) - { - tmp2.push (tmp[j]); - } - - retVal.push (tmp2); - - accum2 = 0; - tmp2 = []; - } - } - - tmp2.forEach (function (subItem) { - retValItem.push (subItem); - retValItemTris += subItem.triangles; - }); - } - } - } - - if (retValItem.length) - { - retVal.push (retValItem); - } - - return retVal; - } - // End of chipmunk - RBush3D.prototype.search = function (bbox) { - var node = this.data; - var result = []; - if (!exports.intersects(bbox, node)) - return result; - var nodesToSearch = []; - while (node) { - for (var i = 0, len = node.children.length; i < len; i++) { - var child = node.children[i]; - if (exports.intersects(bbox, child)) { - if (isLeafChild(node, child)) - result.push(child); - else if (contains(bbox, child)) - this._all(child, result); - else - nodesToSearch.push(child); - } - } - node = nodesToSearch.pop(); - } - return result; - }; - RBush3D.prototype.collides = function (bbox) { - var node = this.data; - if (!exports.intersects(bbox, node)) - return false; - var nodesToSearch = []; - while (node) { - for (var i = 0, len = node.children.length; i < len; i++) { - var child = node.children[i]; - if (exports.intersects(bbox, child)) { - if (isLeafChild(node, child) || contains(bbox, child)) - return true; - nodesToSearch.push(child); - } - } - node = nodesToSearch.pop(); - } - return false; - }; - RBush3D.prototype.raycastInv = function (ox, oy, oz, idx, idy, idz, maxLen) { - if (maxLen === void 0) { maxLen = Infinity; } - var node = this.data; - if (idx === Infinity && idy === Infinity && idz === Infinity) - return allowDistNode(Infinity, undefined); - if (exports.boxRayIntersects(node, ox, oy, oz, idx, idy, idz) === Infinity) - return allowDistNode(Infinity, undefined); - var heap = [allowDistNode(0, node)]; - var swap = function (a, b) { - var t = heap[a]; - heap[a] = heap[b]; - heap[b] = t; - }; - var pop = function () { - var top = heap[0]; - var newLen = heap.length - 1; - heap[0] = heap[newLen]; - heap.length = newLen; - var idx = 0; - while (true) { - var left = (idx << 1) | 1; - if (left >= newLen) - break; - var right = left + 1; - if (right < newLen && heap[right].dist < heap[left].dist) { - left = right; - } - if (heap[idx].dist < heap[left].dist) - break; - swap(idx, left); - idx = left; - } - freeDistNode(top); - return top.node; - }; - var push = function (dist, node) { - var idx = heap.length; - heap.push(allowDistNode(dist, node)); - while (idx > 0) { - var p = (idx - 1) >> 1; - if (heap[p].dist <= heap[idx].dist) - break; - swap(idx, p); - idx = p; - } - }; - var dist = maxLen; - var result; - while (heap.length && heap[0].dist < dist) { - node = pop(); - for (var i = 0, len = node.children.length; i < len; i++) { - var child = node.children[i]; - var d = exports.boxRayIntersects(child, ox, oy, oz, idx, idy, idz); - if (!isLeafChild(node, child)) { - push(d, child); - } - else if (d < dist) { - if (d === 0) { - return allowDistNode(d, child); - } - dist = d; - result = child; - } - } - } - return allowDistNode(dist < maxLen ? dist : Infinity, result); - }; - RBush3D.prototype.raycast = function (ox, oy, oz, dx, dy, dz, maxLen) { - if (maxLen === void 0) { maxLen = Infinity; } - return this.raycastInv(ox, oy, oz, 1 / dx, 1 / dy, 1 / dz, maxLen); - }; - RBush3D.prototype.all = function () { - return this._all(this.data, []); - }; - RBush3D.prototype.load = function (data) { - if (!(data && data.length)) - return this; - if (data.length < this.minEntries) { - for (var i = 0, len = data.length; i < len; i++) { - this.insert(data[i]); - } - return this; - } - var node = this.build(data.slice(), 0, data.length - 1, 0); - if (!this.data.children.length) { - this.data = node; - } - else if (this.data.height === node.height) { - this.splitRoot(this.data, node); - } - else { - if (this.data.height < node.height) { - var tmpNode = this.data; - this.data = node; - node = tmpNode; - } - this._insert(node, this.data.height - node.height - 1, true); - } - return this; - }; - RBush3D.prototype.insert = function (item) { - if (item) - this._insert(item, this.data.height - 1); - return this; - }; - RBush3D.prototype.clear = function () { - if (this.data) { - freeAllNode(this.data); - } - this.data = allowNode([]); - return this; - }; - RBush3D.prototype.remove = function (item, equalsFn) { - if (!item) - return this; - var node = this.data; - var i = 0; - var goingUp = false; - var index; - var parent; - var path = []; - var indexes = []; - while (node || path.length) { - if (!node) { - node = path.pop(); - i = indexes.pop(); - parent = path[path.length - 1]; - goingUp = true; - } - if (isLeaf(node)) { - index = findItem(item, node.children, equalsFn); - if (index !== -1) { - node.children.splice(index, 1); - path.push(node); - this.condense(path); - return this; - } - } - if (!goingUp && !isLeaf(node) && contains(node, item)) { - path.push(node); - indexes.push(i); - i = 0; - parent = node; - node = node.children[0]; - } - else if (parent) { - i++; - node = parent.children[i]; - goingUp = false; - } - else { - node = undefined; - } - } - return this; - }; - RBush3D.prototype.toJSON = function () { - return this.data; - }; - RBush3D.prototype.fromJSON = function (data) { - freeAllNode(this.data); - this.data = data; - return this; - }; - RBush3D.prototype.build = function (items, left, right, height) { - var N = right - left + 1; - var M = this.maxEntries; - var node; - if (N <= M) { - node = allowNode(items.slice(left, right + 1)); - calcBBox(node); - return node; - } - if (!height) { - height = Math.ceil(Math.log(N) / Math.log(M)); - M = Math.ceil(N / Math.pow(M, height - 1)); - } - node = allowNode([]); - node.leaf = false; - node.height = height; - var N3 = Math.ceil(N / M), N2 = N3 * Math.ceil(Math.pow(M, 2 / 3)), N1 = N3 * Math.ceil(Math.pow(M, 1 / 3)); - multiSelect(items, left, right, N1, compareMinX); - for (var i = left; i <= right; i += N1) { - var right2 = Math.min(i + N1 - 1, right); - multiSelect(items, i, right2, N2, compareMinY); - for (var j = i; j <= right2; j += N2) { - var right3 = Math.min(j + N2 - 1, right2); - multiSelect(items, j, right3, N3, compareMinZ); - for (var k = j; k <= right3; k += N3) { - var right4 = Math.min(k + N3 - 1, right3); - node.children.push(this.build(items, k, right4, height - 1)); - } - } - } - calcBBox(node); - return node; - }; - RBush3D.prototype._all = function (node, result) { - var nodesToSearch = []; - while (node) { - if (isLeaf(node)) - result.push.apply(result, node.children); - else - nodesToSearch.push.apply(nodesToSearch, node.children); - node = nodesToSearch.pop(); - } - return result; - }; - RBush3D.prototype.chooseSubtree = function (bbox, node, level, path) { - var minVolume; - var minEnlargement; - var targetNode; - while (true) { - path.push(node); - if (isLeaf(node) || path.length - 1 === level) - break; - minVolume = minEnlargement = Infinity; - for (var i = 0, len = node.children.length; i < len; i++) { - var child = node.children[i]; - var volume = bboxVolume(child); - var enlargement = enlargedVolume(bbox, child) - volume; - if (enlargement < minEnlargement) { - minEnlargement = enlargement; - minVolume = volume < minVolume ? volume : minVolume; - targetNode = child; - } - else if (enlargement === minEnlargement) { - if (volume < minVolume) { - minVolume = volume; - targetNode = child; - } - } - } - node = targetNode || node.children[0]; - } - return node; - }; - RBush3D.prototype.split = function (insertPath, level) { - var node = insertPath[level]; - var M = node.children.length; - var m = this.minEntries; - this.chooseSplitAxis(node, m, M); - var splitIndex = this.chooseSplitIndex(node, m, M); - var newNode = allowNode(node.children.splice(splitIndex, node.children.length - splitIndex)); - newNode.height = node.height; - newNode.leaf = node.leaf; - calcBBox(node); - calcBBox(newNode); - if (level) - insertPath[level - 1].children.push(newNode); - else - this.splitRoot(node, newNode); - }; - RBush3D.prototype.splitRoot = function (node, newNode) { - this.data = allowNode([node, newNode]); - this.data.height = node.height + 1; - this.data.leaf = false; - calcBBox(this.data); - }; - RBush3D.prototype.chooseSplitIndex = function (node, m, M) { - var minOverlap = Infinity; - var minVolume = Infinity; - var index; - for (var i = m; i <= M - m; i++) { - var bbox1 = distBBox(node, 0, i); - var bbox2 = distBBox(node, i, M); - var overlap = intersectionVolume(bbox1, bbox2); - var volume = bboxVolume(bbox1) + bboxVolume(bbox2); - if (overlap < minOverlap) { - minOverlap = overlap; - index = i; - minVolume = volume < minVolume ? volume : minVolume; - } - else if (overlap === minOverlap) { - if (volume < minVolume) { - minVolume = volume; - index = i; - } - } - } - return index; - }; - RBush3D.prototype.chooseSplitAxis = function (node, m, M) { - var xMargin = this.allDistMargin(node, m, M, compareMinX); - var yMargin = this.allDistMargin(node, m, M, compareMinY); - var zMargin = this.allDistMargin(node, m, M, compareMinZ); - if (xMargin < yMargin && xMargin < zMargin) { - node.children.sort(compareMinX); - } - else if (yMargin < xMargin && yMargin < zMargin) { - node.children.sort(compareMinY); - } - }; - RBush3D.prototype.allDistMargin = function (node, m, M, compare) { - node.children.sort(compare); - var leftBBox = distBBox(node, 0, m); - var rightBBox = distBBox(node, M - m, M); - var margin = bboxMargin(leftBBox) + bboxMargin(rightBBox); - for (var i = m; i < M - m; i++) { - var child = node.children[i]; - extend(leftBBox, child); - margin += bboxMargin(leftBBox); - } - for (var i = M - m - 1; i >= m; i--) { - var child = node.children[i]; - extend(rightBBox, child); - margin += bboxMargin(rightBBox); - } - return margin; - }; - RBush3D.prototype.adjustParentBBoxes = function (bbox, path, level) { - for (var i = level; i >= 0; i--) { - extend(path[i], bbox); - } - }; - RBush3D.prototype.condense = function (path) { - for (var i = path.length - 1, siblings = void 0; i >= 0; i--) { - if (path[i].children.length === 0) { - if (i > 0) { - siblings = path[i - 1].children; - siblings.splice(siblings.indexOf(path[i]), 1); - freeNode(path[i]); - } - else { - this.clear(); - } - } - else { - calcBBox(path[i]); - } - } - }; - RBush3D.prototype._insert = function (item, level, isNode) { - var insertPath = []; - var node = this.chooseSubtree(item, this.data, level, insertPath); - node.children.push(item); - extend(node, item); - while (level >= 0) { - if (insertPath[level].children.length > this.maxEntries) { - this.split(insertPath, level); - level--; - } - else - break; - } - this.adjustParentBBoxes(item, insertPath, level); - }; - RBush3D.pool = []; - return RBush3D; -}()); -exports.RBush3D = RBush3D; - -},{"quickselect":2}],2:[function(require,module,exports){ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.quickselect = factory()); -}(this, (function () { 'use strict'; - -function quickselect(arr, k, left, right, compare) { - quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare); -} - -function quickselectStep(arr, k, left, right, compare) { - - while (right > left) { - if (right - left > 600) { - var n = right - left + 1; - var m = k - left + 1; - var z = Math.log(n); - var s = 0.5 * Math.exp(2 * z / 3); - var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); - var newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); - var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); - quickselectStep(arr, k, newLeft, newRight, compare); - } - - var t = arr[k]; - var i = left; - var j = right; - - swap(arr, left, k); - if (compare(arr[right], t) > 0) swap(arr, left, right); - - while (i < j) { - swap(arr, i, j); - i++; - j--; - while (compare(arr[i], t) < 0) i++; - while (compare(arr[j], t) > 0) j--; - } - - if (compare(arr[left], t) === 0) swap(arr, left, j); - else { - j++; - swap(arr, j, right); - } - - if (j <= k) left = j + 1; - if (k <= j) right = j - 1; - } -} - -function swap(arr, i, j) { - var tmp = arr[i]; - arr[i] = arr[j]; - arr[j] = tmp; -} - -function defaultCompare(a, b) { - return a < b ? -1 : a > b ? 1 : 0; -} - -return quickselect; - -}))); - -},{}]},{},[1])(1) -}); - -var tmp0 = module.exports.RBush3D; - -export {tmp0 as RBush3D}; diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rebucketPositions.js b/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rebucketPositions.js deleted file mode 100644 index 28afc4bcc..000000000 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/rebucketPositions.js +++ /dev/null @@ -1,449 +0,0 @@ -/** - * @author https://github.com/tmarti, with support from https://tribia.com/ - * @license MIT - **/ - -const MAX_RE_BUCKET_FAN_OUT = 8; - -let bucketsForIndices = null; - -function compareBuckets (a, b) { - let aa = a*3; - let bb = b*3; - - let aa1, aa2, aa3, bb1, bb2, bb3; - - const minBucketA = Math.min ( - aa1 = bucketsForIndices[aa], - aa2 = bucketsForIndices[aa+1], - aa3 = bucketsForIndices[aa+2] - ); - - const minBucketB = Math.min ( - bb1 = bucketsForIndices[bb], - bb2 = bucketsForIndices[bb+1], - bb3 = bucketsForIndices[bb+2] - ); - - if (minBucketA != minBucketB) - { - return minBucketA - minBucketB; - } - - const maxBucketA = Math.max ( - aa1, - aa2, - aa3, - ); - - const maxBucketB = Math.max ( - bb1, - bb2, - bb3, - ); - - if (maxBucketA != maxBucketB) - { - return maxBucketA - maxBucketB; - } - - return 0; -}; - -function preSortIndices(indices, bitsPerBucket) -{ - let seq = new Int32Array (indices.length / 3); - - for (let i = 0, len = seq.length; i < len; i++) - { - seq[i] = i; - } - - bucketsForIndices = new Int32Array (indices.length); - - for (let i = 0, len = indices.length; i < len; i++) - { - bucketsForIndices[i] = indices[i] >> bitsPerBucket; - } - - seq.sort(compareBuckets); - - const sortedIndices = new Int32Array(indices.length); - - for (let i = 0, len = seq.length; i < len; i++) - { - sortedIndices[i*3+0] = indices[seq[i]*3+0]; - sortedIndices[i*3+1] = indices[seq[i]*3+1]; - sortedIndices[i*3+2] = indices[seq[i]*3+2]; - } - - return sortedIndices; -} - -let compareEdgeIndices = null; - -function compareIndices(a, b) -{ - let retVal = compareEdgeIndices[a*2] - compareEdgeIndices[b*2]; - - if (retVal != 0) - { - return retVal; - } - - return compareEdgeIndices[a*2+1] - compareEdgeIndices[b*2+1]; -} - -function preSortEdgeIndices(edgeIndices) -{ - if ((edgeIndices || []).length == 0) - { - return []; - } - - let seq = new Int32Array (edgeIndices.length / 2); - - for (let i = 0, len = seq.length; i < len; i++) - { - seq[i] = i; - } - - for (let i = 0, j = 0, len = edgeIndices.length; i < len; i+=2) - { - if (edgeIndices[i] > edgeIndices[i+1]) { - let tmp = edgeIndices[i]; - edgeIndices[i] = edgeIndices[i+1]; - edgeIndices[i+1] = tmp; - } - } - - compareEdgeIndices = new Int32Array (edgeIndices); - - seq.sort(compareIndices); - - const sortedEdgeIndices = new Int32Array(edgeIndices.length); - - for (let i = 0, len = seq.length; i < len; i++) - { - sortedEdgeIndices[i*2+0] = edgeIndices[seq[i]*2+0]; - sortedEdgeIndices[i*2+1] = edgeIndices[seq[i]*2+1]; - } - - return sortedEdgeIndices; -} - -function rebucketPositions(mesh, bitsPerBucket, checkResult = false) -{ - const positions = (mesh.positions || []); - - const indices = preSortIndices (mesh.indices || [], bitsPerBucket); - - const edgeIndices = preSortEdgeIndices (mesh.edgeIndices || []); - - /** - * Code adapted from https://stackoverflow.com/questions/22697936/binary-search-in-javascript - */ - function edgeSearch(el0, el1) { - if (el0 > el1) - { - let tmp = el0; - el0 = el1; - el1 = tmp; - } - - function compare_fn (a, b) { - if (a != el0) - { - return el0 - a; - } - - if (b != el1) - { - return el1 - b; - } - - return 0; - }; - - var m = 0; - var n = (edgeIndices.length >> 1) - 1; - while (m <= n) { - var k = (n + m) >> 1; - var cmp = compare_fn(edgeIndices[k*2], edgeIndices[k*2+1]); - if (cmp > 0) { - m = k + 1; - } else if(cmp < 0) { - n = k - 1; - } else { - return k; - } - } - return -m - 1; - } - - // console.log (edgeIndices); - - // throw (e); - - // console.log (`${mesh.edgeIndices.length / 2} edge indices`); - // console.log (`${edgeIndices.length / 2} edge indices sorted`); - - const alreadyOutputEdgeIndices = new Int32Array(edgeIndices.length/2); - alreadyOutputEdgeIndices.fill(0); - - const numPositions = positions.length / 3; - - if (numPositions > ((1 << bitsPerBucket) * MAX_RE_BUCKET_FAN_OUT)) - { - return [ mesh ]; - } - - const bucketIndicesRemap = new Int32Array(numPositions); - bucketIndicesRemap.fill(-1); - - const buckets = []; - - function addEmptyBucket () - { - bucketIndicesRemap.fill(-1); - - let newBucket = { - positions: [], - indices: [], - edgeIndices: [], - maxNumPositions: (1 << bitsPerBucket) - bitsPerBucket, - numPositions: 0, - bucketNumber: buckets.length, - }; - - buckets.push (newBucket); - - return newBucket; - } - - let currentBucket = addEmptyBucket (); - - // let currentBucket = 0; - - let retVal = 0; - - for (let i = 0, len = indices.length; i < len; i+=3) - { - let additonalPositionsInBucket = 0; - - const ii0 = indices[i]; - const ii1 = indices[i+1]; - const ii2 = indices[i+2]; - - if (bucketIndicesRemap[ii0] == -1) { - additonalPositionsInBucket++; - } - - if (bucketIndicesRemap[ii1] == -1) { - additonalPositionsInBucket++; - } - - if (bucketIndicesRemap[ii2] == -1) { - additonalPositionsInBucket++; - } - - if ((additonalPositionsInBucket + currentBucket.numPositions) > currentBucket.maxNumPositions) - { - currentBucket = addEmptyBucket(); - } - - if (currentBucket.bucketNumber > MAX_RE_BUCKET_FAN_OUT) - { - return [ mesh ]; - } - - if (bucketIndicesRemap[ii0] == -1) - { - bucketIndicesRemap[ii0] = currentBucket.numPositions++; - currentBucket.positions.push (positions[ii0*3]); - currentBucket.positions.push (positions[ii0*3+1]); - currentBucket.positions.push (positions[ii0*3+2]); - } - - if (bucketIndicesRemap[ii1] == -1) { - bucketIndicesRemap[ii1] = currentBucket.numPositions++; - currentBucket.positions.push (positions[ii1*3]); - currentBucket.positions.push (positions[ii1*3+1]); - currentBucket.positions.push (positions[ii1*3+2]); - } - - if (bucketIndicesRemap[ii2] == -1) { - bucketIndicesRemap[ii2] = currentBucket.numPositions++; - currentBucket.positions.push (positions[ii2*3]); - currentBucket.positions.push (positions[ii2*3+1]); - currentBucket.positions.push (positions[ii2*3+2]); - } - - currentBucket.indices.push(bucketIndicesRemap[ii0]); - currentBucket.indices.push(bucketIndicesRemap[ii1]); - currentBucket.indices.push(bucketIndicesRemap[ii2]); - - // Check possible edge1 - let edgeIndex; - - if ((edgeIndex = edgeSearch(ii0, ii1)) >= 0) - { - if (alreadyOutputEdgeIndices[edgeIndex] == 0) - { - alreadyOutputEdgeIndices[edgeIndex] = 1; - - currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex*2]]); - currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex*2+1]]); - } - } - - if ((edgeIndex = edgeSearch(ii0, ii2)) >= 0) - { - if (alreadyOutputEdgeIndices[edgeIndex] == 0) - { - alreadyOutputEdgeIndices[edgeIndex] = 1; - - currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex*2]]); - currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex*2+1]]); - } - } - - if ((edgeIndex = edgeSearch(ii1, ii2)) >= 0) - { - if (alreadyOutputEdgeIndices[edgeIndex] == 0) - { - alreadyOutputEdgeIndices[edgeIndex] = 1; - - currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex*2]]); - currentBucket.edgeIndices.push(bucketIndicesRemap[edgeIndices[edgeIndex*2+1]]); - } - } - } - - const prevBytesPerIndex = bitsPerBucket / 8 * 2; - const newBytesPerIndex = bitsPerBucket / 8; - - const originalSize = positions.length * 2 + (indices.length + edgeIndices.length) * prevBytesPerIndex; - - let newSize = 0; - let newPositions = - positions.length / 3; - - buckets.forEach (bucket => { - newSize += bucket.positions.length * 2 + (bucket.indices.length + bucket.edgeIndices.length) * newBytesPerIndex; - newPositions += bucket.positions.length / 3; - }); - - if (newSize > originalSize) - { - return [ mesh ]; - } - - // console.log ("added positions " + newPositions + ", buckets: " + buckets.length); - - if (checkResult) - { - doCheckResult (buckets, mesh); - } - - // return [ mesh ]; - - return buckets; - } - -function unbucket (buckets) -{ - let positions = []; - let indices = []; - let edgeIndices = []; - - let positionsBase = 0; - - buckets.forEach (bucket => { - bucket.positions.forEach (coord => { - positions.push (coord); - }); - - bucket.indices.forEach (index => { - indices.push (index + positionsBase); - }); - - bucket.edgeIndices.forEach (edgeIndex => { - edgeIndices.push (edgeIndex + positionsBase); - }); - - positionsBase += positions.length / 3; - }); - - return { - positions, - indices, - edgeIndices - }; -} - - function doCheckResult (buckets, mesh) - { - const meshDict = {}; - const edgesDict = {}; - - let edgeIndicesCount = 0; - - buckets.forEach (bucket => { - let indices = bucket.indices; - let edgeIndices = bucket.edgeIndices; - let positions = bucket.positions; - - for (var i = 0, len = indices.length; i < len; i+=3) - { - var key = positions[indices[i]*3] + "_" + positions[indices[i]*3+1] + "_" + positions[indices[i]*3+2] + "/" + - positions[indices[i+1]*3] + "_" + positions[indices[i+1]*3+1] + "_" + positions[indices[i+1]*3+2] + "/" + - positions[indices[i+2]*3] + "_" + positions[indices[i+2]*3+1] + "_" + positions[indices[i+2]*3+2]; - - meshDict[key] = true; - } - - edgeIndicesCount += bucket.edgeIndices.length / 2; - - for (var i = 0, len = edgeIndices.length; i < len; i+=2) - { - var key = positions[edgeIndices[i]*3] + "_" + positions[edgeIndices[i]*3+1] + "_" + positions[edgeIndices[i]*3+2] + "/" + - positions[edgeIndices[i+1]*3] + "_" + positions[edgeIndices[i+1]*3+1] + "_" + positions[edgeIndices[i+1]*3+2] + "/"; - - edgesDict[key] = true; - } - }); - - { - let indices = mesh.indices; - let edgeIndices = mesh.edgeIndices; - let positions = mesh.positions; - - for (var i = 0, len = indices.length; i < len; i+=3) - { - var key = positions[indices[i]*3] + "_" + positions[indices[i]*3+1] + "_" + positions[indices[i]*3+2] + "/" + - positions[indices[i+1]*3] + "_" + positions[indices[i+1]*3+1] + "_" + positions[indices[i+1]*3+2] + "/" + - positions[indices[i+2]*3] + "_" + positions[indices[i+2]*3+1] + "_" + positions[indices[i+2]*3+2]; - - if (!(key in meshDict)) { - console.log ("Not found " + key); - throw "Ohhhh!"; - } - } - - // for (var i = 0, len = edgeIndices.length; i < len; i+=2) - // { - // var key = positions[edgeIndices[i]*3] + "_" + positions[edgeIndices[i]*3+1] + "_" + positions[edgeIndices[i]*3+2] + "/" + - // positions[edgeIndices[i+1]*3] + "_" + positions[edgeIndices[i+1]*3+1] + "_" + positions[edgeIndices[i+1]*3+2] + "/"; - - // if (!(key in edgesDict)) { - // var key2 = edgeIndices[i] + "_" + edgeIndices[i+1]; - - // console.log (" - Not found " + key); - // console.log (" - Not found " + key2); - // // throw "Ohhhh2!"; - // } - // } - } - } - - export { rebucketPositions } \ No newline at end of file diff --git a/src/viewer/scene/models/PerformanceModel/PerformanceModel.js b/src/viewer/scene/models/PerformanceModel/PerformanceModel.js deleted file mode 100644 index 3375d0846..000000000 --- a/src/viewer/scene/models/PerformanceModel/PerformanceModel.js +++ /dev/null @@ -1,28 +0,0 @@ -import {VBOSceneModel} from "./../VBOSceneModel/index.js"; - -/** - * @desc A high-performance model representation for efficient rendering and low memory usage. - * - * * This class was replaced with {@link VBOSceneModel} in ````xeokit-sdk v2.3.0````. - * * This class currently extends {@link VBOSceneModel}, in order to maintain backward-compatibility until we remove it. - * * See {@link VBOSceneModel} for API details. - * - * @deprecated - * @implements {Drawable} - * @implements {Entity} - * @implements {SceneModel} - */ -class PerformanceModel extends VBOSceneModel { - - /** - * See {@link VBOSceneModel} for details. - * - * @param owner - * @param cfg - */ - constructor(owner, cfg = {}) { - super(owner, cfg); - } -} - -export {PerformanceModel}; \ No newline at end of file diff --git a/src/viewer/scene/models/PerformanceModel/index.js b/src/viewer/scene/models/PerformanceModel/index.js deleted file mode 100644 index 420aca8f8..000000000 --- a/src/viewer/scene/models/PerformanceModel/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from "./PerformanceModel.js"; \ No newline at end of file diff --git a/src/viewer/scene/models/SceneModel.js b/src/viewer/scene/models/SceneModel.js deleted file mode 100644 index a2e900cf8..000000000 --- a/src/viewer/scene/models/SceneModel.js +++ /dev/null @@ -1,880 +0,0 @@ -import {Component} from "../Component.js"; - -/** - * @desc Abstract base class for buildable 3D scene model classes. - * - * Defines methods to build geometries, textures, meshes and entities within the model. - * - * Implementations: - * - * * {@link VBOSceneModel} - WebGL2-based model representation that stores geometry as vertex buffer objects (VBOs). - * - * @interface - * @abstract - */ -export class SceneModel { - - /** - * Returns the {@link Entity}s in this SceneModel. - * @returns {*|{}} - * @abstract - */ - get objects() { - } - - /** - * Gets the 3D World-space origin for this SceneModel. - * - * Each geometry or mesh origin, if supplied, is relative to this origin. - * - * Default value is ````[0,0,0]````. - * - * @type {Float64Array} - * @abstract - * @abstract - */ - get origin() { - } - - /** - * Gets the SceneModel's local translation. - * - * Default value is ````[0,0,0]````. - * - * @type {Number[]} - * @abstract - */ - get position() { - } - - /** - * Gets the SceneModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis. - * - * Default value is ````[0,0,0]````. - * - * @type {Number[]} - * @abstract - */ - get rotation() { - } - - /** - * Gets the SceneModels's local rotation quaternion. - * - * Default value is ````[0,0,0,1]````. - * - * @type {Number[]} - * @abstract - */ - get quaternion() { - } - - /** - * Gets the SceneModel's local scale. - * - * Default value is ````[1,1,1]````. - * - * @type {Number[]} - * @abstract - */ - get scale() { - } - - /** - * Gets the SceneModel's local modeling transform matrix. - * - * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````. - * - * @type {Number[]} - * @abstract - */ - get matrix() { - } - - /** - * Gets the SceneModel's World matrix. - * - * @property worldMatrix - * @type {Number[]} - * @abstract - */ - get worldMatrix() { - } - - /** - * Gets the SceneModel's World normal matrix. - * - * @type {Number[]} - * @abstract - */ - get worldNormalMatrix() { - } - - /** - * Called by private renderers in ./lib, returns the view matrix with which to - * render this SceneModel. The view matrix is the concatenation of the - * Camera view matrix with the Performance model's world (modeling) matrix. - * - * @private - * @abstract - */ - get viewMatrix() { - } - - /** - * Called by private renderers in ./lib, returns the view normal matrix with which to render this SceneModel. - * - * @private - * @abstract - */ - get viewNormalMatrix() { - } - - /** - * Sets if backfaces are rendered for this SceneModel. - * - * Default is ````false````. - * - * @type {Boolean} - * @abstract - */ - get backfaces() { - } - - /** - * Sets if backfaces are rendered for this SceneModel. - * - * Default is ````false````. - * - * When we set this ````true````, then backfaces are always rendered for this SceneModel. - * - * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case, - * the Viewer will: - * - * * hide backfaces on watertight meshes, - * * show backfaces on open meshes, and - * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s. - * - * @type {Boolean} - * @abstract - */ - set backfaces(backfaces) { - } - - /** - * Gets the list of {@link Entity}s within this SceneModel. - * - * @returns {Entity[]} - * @abstract - */ - get entityList() { - } - - /** - * Returns true to indicate that SceneModel is an {@link Entity}. - * @type {Boolean} - * @abstract - */ - get isEntity() { - } - - /** - * Returns ````true```` if this SceneModel represents a model. - * - * When ````true```` the SceneModel will be registered by {@link SceneModel#id} in - * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}. - * - * @type {Boolean} - * @abstract - */ - get isModel() { - } - - /** - * Returns ````false```` to indicate that SceneModel never represents an object. - * - * @type {Boolean} - * @abstract - */ - get isObject() { - } - - /** - * Gets the SceneModel's World-space 3D axis-aligned bounding box. - * - * Represented by a six-element Float64Array containing the min/max extents of the - * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````. - * - * @type {Number[]} - * @abstract - */ - get aabb() { - } - - /** - * The approximate number of triangle primitives in this SceneModel. - * - * @type {Number} - * @abstract - */ - get numTriangles() { - } - - /** - * The approximate number of line primitives in this SceneModel. - * - * @type {Number} - * @abstract - */ - get numLines() { - } - - /** - * The approximate number of point primitives in this SceneModel. - * - * @type {Number} - * @abstract - */ - get numPoints() { - } - - /** - * Gets if any {@link Entity}s in this SceneModel are visible. - * - * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````. - * - * @type {Boolean} - * @abstract - */ - get visible() { - } - - /** - * Sets if this SceneModel is visible. - * - * The SceneModel is only rendered when {@link SceneModel#visible} is ````true```` and {@link SceneModel#culled} is ````false````. - ** - * @type {Boolean} - * @abstract - */ - set visible(visible) { - } - - /** - * Gets if any {@link Entity}s in this SceneModel are xrayed. - * - * @type {Boolean} - * @abstract - */ - get xrayed() { - } - - /** - * Sets if all {@link Entity}s in this SceneModel are xrayed. - * - * @type {Boolean} - * @abstract - */ - set xrayed(xrayed) { - } - - /** - * Gets if any {@link Entity}s in this SceneModel are highlighted. - * - * @type {Boolean} - * @abstract - */ - get highlighted() { - } - - /** - * Sets if all {@link Entity}s in this SceneModel are highlighted. - * - * @type {Boolean} - * @abstract - */ - set highlighted(highlighted) { - } - - /** - * Gets if any {@link Entity}s in this SceneModel are selected. - * - * @type {Boolean} - * @abstract - */ - get selected() { - } - - /** - * Sets if all {@link Entity}s in this SceneModel are selected. - * - * @type {Boolean} - * @abstract - */ - set selected(selected) { - } - - /** - * Gets if any {@link Entity}s in this SceneModel have edges emphasised. - * - * @type {Boolean} - * @abstract - */ - get edges() { - } - - /** - * Sets if all {@link Entity}s in this SceneModel have edges emphasised. - * - * @type {Boolean} - * @abstract - */ - set edges(edges) { - } - - /** - * Gets if this SceneModel is culled from view. - * - * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false. - * - * @type {Boolean} - * @abstract - */ - get culled() { - } - - /** - * Sets if this SceneModel is culled from view. - * - * The SceneModel is only rendered when {@link SceneModel#visible} is true and {@link SceneModel#culled} is false. - * - * @type {Boolean} - * @abstract - */ - set culled(culled) { - } - - /** - * Gets if {@link Entity}s in this SceneModel are clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - * @abstract - */ - get clippable() { - } - - /** - * Sets if {@link Entity}s in this SceneModel are clippable. - * - * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}. - * - * @type {Boolean} - * @abstract - */ - set clippable(clippable) { - } - - /** - * Gets if this SceneModel is collidable. - * - * @type {Boolean} - * @abstract - */ - get collidable() { - } - - /** - * Sets if {@link Entity}s in this SceneModel are collidable. - * - * @type {Boolean} - * @abstract - */ - set collidable(collidable) { - } - - /** - * Gets if this SceneModel is pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - * @abstract - */ - get pickable() { - } - - /** - * Sets if {@link Entity}s in this SceneModel are pickable. - * - * Picking is done via calls to {@link Scene#pick}. - * - * @type {Boolean} - * @abstract - */ - set pickable(pickable) { - } - - /** - * Gets the RGB colorize color for this SceneModel. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - * @abstract - */ - get colorize() { - } - - /** - * Sets the RGB colorize color for this SceneModel. - * - * Multiplies by rendered fragment colors. - * - * Each element of the color is in range ````[0..1]````. - * - * @type {Number[]} - * @abstract - */ - set colorize(colorize) { - } - - /** - * Gets this SceneModel's opacity factor. - * - * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. - * - * @type {Number} - * @abstract - */ - get opacity() { - } - - /** - * Sets the opacity factor for this SceneModel. - * - * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas. - * - * @type {Number} - * @abstract - */ - set opacity(opacity) { - } - - /** - * Gets if this SceneModel casts a shadow. - * - * @type {Boolean} - * @abstract - */ - get castsShadow() { - } - - /** - * Sets if this SceneModel casts a shadow. - * - * @type {Boolean} - * @abstract - */ - set castsShadow(castsShadow) { - } - - /** - * Sets if this SceneModel can have shadow cast upon it. - * - * @type {Boolean} - * @abstract - */ - get receivesShadow() { - } - - /** - * Sets if this SceneModel can have shadow cast upon it. - * - * @type {Boolean} - * @abstract - */ - set receivesShadow(receivesShadow) { - } - - /** - * Gets if Scalable Ambient Obscurance (SAO) will apply to this SceneModel. - * - * SAO is configured by the Scene's {@link SAO} component. - * - * Only works when {@link SAO#enabled} is also true. - * - * @type {Boolean} - * @abstract - */ - get saoEnabled() { - } - - /** - * Gets if physically-based rendering (PBR) is enabled for this SceneModel. - * - * Only works when {@link Scene#pbrEnabled} is also true. - * - * @type {Boolean} - * @abstract - */ - get pbrEnabled() { - } - - /** - * Gets if color textures are enabled for this SceneModel. - * - * Only works when {@link Scene#colorTextureEnabled} is also true. - * - * @type {Boolean} - * @abstract - */ - get colorTextureEnabled() { - } - - /** - * Returns true to indicate that SceneModel is implements {@link Drawable}. - * - * @type {Boolean} - * @abstract - */ - get isDrawable() { - } - - /** @private - * @abstract - */ - get isStateSortable() { - } - - /** - * Configures the appearance of xrayed {@link Entity}s within this SceneModel. - * - * This is the {@link Scene#xrayMaterial}. - * - * @type {EmphasisMaterial} - * @abstract - */ - get xrayMaterial() { - } - - /** - * Configures the appearance of highlighted {@link Entity}s within this SceneModel. - * - * This is the {@link Scene#highlightMaterial}. - * - * @type {EmphasisMaterial} - * @abstract - */ - get highlightMaterial() { - } - - /** - * Configures the appearance of selected {@link Entity}s within this SceneModel. - * - * This is the {@link Scene#selectedMaterial}. - * - * @type {EmphasisMaterial} - * @abstract - */ - get selectedMaterial() { - } - - /** - * Configures the appearance of edges of {@link Entity}s within this SceneModel. - * - * This is the {@link Scene#edgeMaterial}. - * - * @type {EdgeMaterial} - * @abstract - */ - get edgeMaterial() { - } - - /** - * Called by private renderers in ./lib, returns the picking view matrix with which to - * ray-pick on this SceneModel. - * - * @private - * @abstract - */ - getPickViewMatrix(pickViewMatrix) { - } - - /** - * Creates a reusable geometry within this SceneModel. - * - * We can then supply the geometry ID to {@link SceneModel#createMesh} when we want to create meshes that instance the geometry. - * - * @param {*} cfg Geometry properties. - * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link SceneModel#createMesh}. - * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'. - * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````. - * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````. - * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````. - * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with "triangles", "solid" and "surface" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals. - * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with "triangles", "solid" and "surface" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals. - * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````. - * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````. - * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with "triangles", "solid" and "surface" primitives. Required for textured rendering. - * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with "triangles", "solid" and "surface" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with "triangles", "solid" and "surface" primitives. Required for textured rendering. - * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````. - * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives. - * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor. - * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this. - * @abstract - */ - createGeometry(cfg) { - } - - /** - * Creates a texture within this SceneModel. - * - * We can then supply the texture ID to {@link SceneModel#createTextureSet} when we want to create texture sets that use the texture. - * - * @param {*} cfg Texture properties. - * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link VBOSceneModel#createTextureSet}. - * @param {String} [cfg.src] Image file for the texture. Assumed to be transcoded if not having a recognized image file - * extension (jpg, jpeg, png etc.). If transcoded, then assumes ````VBOSceneModel```` is configured with a {@link TextureTranscoder}. - * @param {ArrayBuffer[]} [cfg.buffers] Transcoded texture data. Assumes ````VBOSceneModel```` is - * configured with a {@link TextureTranscoder}. This parameter is given as an array of buffers so we can potentially support multi-image textures, such as cube maps. - * @param {HTMLImageElement} [cfg.image] HTML Image object to load into this texture. Overrides ````src```` and ````buffers````. Never transcoded. - * @param {Number} [cfg.minFilter=LinearMipmapLinearFilter] How the texture is sampled when a texel covers less than one pixel. - * Supported values are {@link LinearMipmapLinearFilter}, {@link LinearMipMapNearestFilter}, {@link NearestMipMapNearestFilter}, {@link NearestMipMapLinearFilter} and {@link LinearMipMapLinearFilter}. - * @param {Number} [cfg.magFilter=LinearFilter] How the texture is sampled when a texel covers more than one pixel. Supported values are {@link LinearFilter} and {@link NearestFilter}. - * @param {Number} [cfg.wrapS=RepeatWrapping] Wrap parameter for texture coordinate *S*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. - * @param {Number} [cfg.wrapT=RepeatWrapping] Wrap parameter for texture coordinate *T*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. - * @param {Number} [cfg.wrapR=RepeatWrapping] Wrap parameter for texture coordinate *R*. Supported values are {@link ClampToEdgeWrapping}, {@link MirroredRepeatWrapping} and {@link RepeatWrapping}. - * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when ````true````. - * @param {Number} [cfg.encoding=LinearEncoding] Encoding format. Supported values are {@link LinearEncoding} and {@link sRGBEncoding}. - * @abstract - */ - createTexture(cfg) { - } - - /** - * Creates a texture set within this SceneModel. - * - * A texture set is a collection of textures that can be shared among meshes. We can then supply the texture set - * ID to {@link SceneModel#createMesh} when we want to create meshes that use the texture set. - * - * The textures can work as a texture atlas, where each mesh can have geometry UVs that index - * a different part of the textures. This allows us to minimize the number of textures in our models, which - * means faster rendering. - * - * @param {*} cfg Texture set properties. - * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link SceneModel#createMesh}. - * @param {*} [cfg.colorTextureId] ID of *RGBA* base color texture, with color in *RGB* and alpha in *A*. - * @param {*} [cfg.metallicRoughnessTextureId] ID of *RGBA* metal-roughness texture, with the metallic factor in *R*, and roughness factor in *G*. - * @param {*} [cfg.normalsTextureId] ID of *RGBA* normal map texture, with normal map vectors in *RGB*. - * @param {*} [cfg.emissiveTextureId] ID of *RGBA* emissive map texture, with emissive color in *RGB*. - * @param {*} [cfg.occlusionTextureId] ID of *RGBA* occlusion map texture, with occlusion factor in *R*. - * @abstract - */ - createTextureSet(cfg) { - } - - /** - * Creates a mesh within this SceneModel. - * - * A mesh can either define its own geometry or share it with other meshes. To define own geometry, provide the - * various geometry arrays to this method. To share a geometry, provide the ID of a geometry created earlier - * with {@link SceneModel#createGeometry}. - * - * Internally, SceneModel will batch all unique mesh geometries into the same arrays, which improves - * rendering performance. - * - * If you accompany the arrays with an ````origin````, then ````createMesh()```` will assume - * that the ````positions```` are in relative-to-center (RTC) coordinates, with ````origin```` being the origin of their - * RTC coordinate system. - * - * @param {object} cfg Object properties. - * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}. - * @param {String|Number} [cfg.textureSetId] ID of a texture set previously created with {@link SceneModel#createTextureSet"}. - * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link SceneModel#createGeometry"}. Overrides all other geometry parameters given to this method. - * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'. - * @param {Number[]} [cfg.positions] Flat array of uncompressed 3D vertex positions positions. Required for all primitive types. Overridden by ````positionsCompressed````. - * @param {Number[]} [cfg.positionsCompressed] Flat array of quantized 3D vertex positions. Overrides ````positions````, and must be accompanied by ````positionsDecodeMatrix````. - * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positionsCompressed````. Must be accompanied by ````positionsCompressed````. - * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with "triangles", "solid" and "surface" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals. - * @param {Number[]} [cfg.normalsCompressed] Flat array of oct-encoded normal vectors. Overrides ````normals````. Only used with "triangles", "solid" and "surface" primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals. - * @param {Number[]} [cfg.colors] Flat array of uncompressed RGBA vertex colors, as float values in range ````[0..1]````. Ignored when ````geometryId```` is given. Overridden by ````color```` and ````colorsCompressed````. - * @param {Number[]} [cfg.colorsCompressed] Flat array of compressed RGBA vertex colors, as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given. Overrides ````colors```` and is overridden by ````color````. - * @param {Number[]} [cfg.uv] Flat array of uncompressed vertex UV coordinates. Only used with "triangles", "solid" and "surface" primitives. Required for textured rendering. - * @param {Number[]} [cfg.uvCompressed] Flat array of compressed vertex UV coordinates. Only used with "triangles", "solid" and "surface" primitives. Overrides ````uv````. Must be accompanied by ````uvDecodeMatrix````. Only used with "triangles", "solid" and "surface" primitives. Required for textured rendering. - * @param {Number[]} [cfg.uvDecodeMatrix] A 3x3 matrix for decompressing ````uvCompressed````. - * @param {Number[]} [cfg.indices] Array of primitive connectivity indices. Not required for `points` primitives. - * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only with 'triangles', 'solid' and 'surface' primitives. Automatically generated internally if not supplied, using the optional ````edgeThreshold```` given to the ````SceneModel```` constructor. - * @param {Number[]} [cfg.origin] Optional geometry origin, relative to {@link SceneModel#origin}. When this is given, then ````positions```` are assumed to be relative to this. - * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position of the mesh. - * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh. - * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis. - * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters. - * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..1, 0..1]````. Overridden by texture set ````colorTexture````. Overrides ````colors```` and ````colorsCompressed````. - * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````. Overridden by texture set ````colorTexture````. - * @param {Number} [cfg.metallic=0] Metallic factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````. - * @param {Number} [cfg.roughness=1] Roughness factor in range ````[0..1]````. Overridden by texture set ````metallicRoughnessTexture````. - * @abstract - */ - createMesh(cfg) { - } - - /** - * Creates an {@link Entity} within this SceneModel, giving it one or more meshes previously created with {@link SceneModel#createMesh}. - * - * A mesh can only belong to one {@link Entity}, so you'll get an error if you try to reuse a mesh among multiple {@link Entity}s. - * - * @param {Object} cfg Entity configuration. - * @param {String} cfg.id Optional ID for the new Entity. Must not clash with any existing components within the {@link Scene}. - * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link SceneModel@createMesh}. - * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link Entity} represents an object, in which case it will be registered by {@link Entity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}. - * @param {Boolean} [cfg.visible=true] Indicates if the Entity is initially visible. - * @param {Boolean} [cfg.culled=false] Indicates if the Entity is initially culled from view. - * @param {Boolean} [cfg.pickable=true] Indicates if the Entity is initially pickable. - * @param {Boolean} [cfg.clippable=true] Indicates if the Entity is initially clippable. - * @param {Boolean} [cfg.collidable=true] Indicates if the Entity is initially included in boundary calculations. - * @param {Boolean} [cfg.castsShadow=true] Indicates if the Entity initially casts shadows. - * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Entity initially receives shadows. - * @param {Boolean} [cfg.xrayed=false] Indicates if the Entity is initially xrayed. XRayed appearance is configured by {@link SceneModel#xrayMaterial}. - * @param {Boolean} [cfg.highlighted=false] Indicates if the Entity is initially highlighted. Highlighted appearance is configured by {@link SceneModel#highlightMaterial}. - * @param {Boolean} [cfg.selected=false] Indicates if the Entity is initially selected. Selected appearance is configured by {@link SceneModel#selectedMaterial}. - * @param {Boolean} [cfg.edges=false] Indicates if the Entity's edges are initially emphasized. Edges appearance is configured by {@link SceneModel#edgeMaterial}. - * @returns {Entity} - * @abstract - */ - createEntity(cfg) { - } - - /** - * Finalizes this SceneModel. - * - * Immediately creates the SceneModel's {@link Entity}s within the {@link Scene}. - * - * Once finalized, you can't add anything more to this SceneModel. - * @abstract - */ - finalize() { - } - - /** @private - * @abstract - */ - stateSortCompare(drawable1, drawable2) { - } - - /** @private - * @abstract - */ - drawColorOpaque(frameCtx) { - } - - /** @private - * @abstract - */ - drawColorTransparent(frameCtx) { - } - - /** @private - * @abstract - */ - drawDepth(frameCtx) { - } - - /** @private - * @abstract - */ - drawNormals(frameCtx) { - } - - /** @private - * @abstract - */ - drawSilhouetteXRayed(frameCtx) { - } - - /** @private - * @abstract - */ - drawSilhouetteHighlighted(frameCtx) { - } - - /** @private - * @abstract - */ - drawSilhouetteSelected(frameCtx) { - } - - /** @private - * @abstract - */ - drawEdgesColorOpaque(frameCtx) { - } - - /** @private - * @abstract - */ - drawEdgesColorTransparent(frameCtx) { - } - - /** @private - * @abstract - */ - drawEdgesXRayed(frameCtx) { - } - - /** @private - * @abstract - */ - drawEdgesHighlighted(frameCtx) { - } - - /** @private - * @abstract - */ - drawEdgesSelected(frameCtx) { - } - - /** - * @private - * @abstract - */ - drawOcclusion(frameCtx) { - } - - /** - * @private - * @abstract - */ - drawShadow(frameCtx) { - } - - /** @private - * @abstract - */ - drawPickMesh(frameCtx) { - } - - /** - * Called by VBOSceneModelMesh.drawPickDepths() - * @private - * @abstract - */ - drawPickDepths(frameCtx) { - } - - /** - * Called by VBOSceneModelMesh.drawPickNormals() - * @private - * @abstract - */ - drawPickNormals(frameCtx) { - } - - /** - * Destroys this SceneModel. - * @abstract - */ - destroy() { - } -} \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/index.js b/src/viewer/scene/models/VBOSceneModel/index.js deleted file mode 100644 index 4f7d8f68c..000000000 --- a/src/viewer/scene/models/VBOSceneModel/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -export * from "./VBOSceneModel.js"; \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/ENTITY_FLAGS.js b/src/viewer/scene/models/VBOSceneModel/lib/ENTITY_FLAGS.js deleted file mode 100644 index adbfcd28c..000000000 --- a/src/viewer/scene/models/VBOSceneModel/lib/ENTITY_FLAGS.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @private - * @type {{PICKABLE: number, CLIPPABLE: number, BACKFACES: number, VISIBLE: number, SELECTED: number, OUTLINED: number, CULLED: number, RECEIVE_SHADOW: number, COLLIDABLE: number, XRAYED: number, CAST_SHADOW: number, EDGES: number, HIGHLIGHTED: number}} - */ -const ENTITY_FLAGS = { - VISIBLE: 1, - CULLED: 1 << 2, - PICKABLE: 1 << 3, - CLIPPABLE: 1 << 4, - COLLIDABLE: 1 << 5, - CAST_SHADOW: 1 << 6, - RECEIVE_SHADOW: 1 << 7, - XRAYED: 1 << 8, - HIGHLIGHTED: 1 << 9, - SELECTED: 1 << 10, - EDGES: 1 << 11, - BACKFACES: 1 << 12, - TRANSPARENT: 1 << 13 -}; - -export {ENTITY_FLAGS}; \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/RENDER_PASSES.js b/src/viewer/scene/models/VBOSceneModel/lib/RENDER_PASSES.js deleted file mode 100644 index 9ff8953df..000000000 --- a/src/viewer/scene/models/VBOSceneModel/lib/RENDER_PASSES.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * @private - */ -const RENDER_PASSES = { - - // Skipped - suppress rendering - - NOT_RENDERED: 0, - - // Normal rendering - mutually exclusive modes - - COLOR_OPAQUE: 1, - COLOR_TRANSPARENT: 2, - - // Emphasis silhouette rendering - mutually exclusive modes - - SILHOUETTE_HIGHLIGHTED: 3, - SILHOUETTE_SELECTED: 4, - SILHOUETTE_XRAYED: 5, - - // Edges rendering - mutually exclusive modes - - EDGES_COLOR_OPAQUE: 6, - EDGES_COLOR_TRANSPARENT: 7, - EDGES_HIGHLIGHTED: 8, - EDGES_SELECTED: 9, - EDGES_XRAYED: 10, - - // Picking - - PICK: 11 -}; - -export {RENDER_PASSES}; \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelGeometry.js b/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelGeometry.js deleted file mode 100644 index e3ffb5abc..000000000 --- a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelGeometry.js +++ /dev/null @@ -1,166 +0,0 @@ -import {math} from "../../../math/math.js"; -import {ArrayBuf} from "../../../webgl/ArrayBuf.js"; -import {geometryCompressionUtils} from "../../../math/geometryCompressionUtils.js"; -import {octEncodeNormals, quantizePositions} from "./compression.js"; -import {buildEdgeIndices} from "../../../math/buildEdgeIndices.js"; - -/** - * Instantiated by VBOSceneModel#createGeometry - * - * @private - */ -export class VBOSceneModelGeometry { - - /** - * @param {*} cfg Geometry properties. - * @param {String|Number} id Mandatory ID for the geometry, to refer to with {@link VBOSceneModel#createMesh}. - * @param {VBOSceneModel} model VBOSceneModel that owns this geometry. - * @param {*} cfg.primitive - * @param {*} cfg.positions - * @param {*} cfg.positionsCompressed - * @param {*} cfg.normals - * @param {*} cfg.normalsCompressed - * @param {*} cfg.colors - * @param {*} cfg.colorsCompressed - * @param {*} cfg.uv - * @param {*} cfg.uvCompressed - * @param {*} cfg.uvDecodeMatrix - * @param {*} cfg.indices - * @param {*} cfg.edgeIndices - */ - constructor(id, model, cfg) { - - /////////////////////////////////////////////////////// - /////////////////////////////////////////////////////// - // TODO: optional origin param, or create from positions automatically if required - then offset from mesh origin in createMesh - - /** - * ID of this VBOSceneModelGeometry, unique within the VBOSceneModel. - * - * @property id - * @type {String} - * @final - */ - this.id = cfg.id; - - /** - * The VBOSceneModel that contains this VBOSceneModelGeometry. - * - * @property model - * @type {VBOSceneModel} - * @final - */ - this.model = cfg.model; - - this.primitive = cfg.primitive; - this.positions = null; - this.positionsCompressed = null; - this.quantizedPositions = null; // If pickSurfacePrecisionEnabled is true - this.positionsDecodeMatrix = math.mat4(); - this.normals = null; - this.normalsCompressed = null; - this.colors = null; - this.colorsCompressed = null; - this.uv = null; - this.uvCompressed = null; - this.uvDecodeMatrix = null; - this.indices = null; - this.numIndices = 0; - this.obb = math.OBB3(); - this.positionsBuf = null; - this.normalsBuf = null; - this.edgeIndicesBuf = null; - this.uvBuf = null; - this.colorsBuf = null; - - const pickSurfacePrecisionEnabled = model.scene.pickSurfacePrecisionEnabled; - const gl = model.scene.canvas.gl; - - if (cfg.positionsCompressed && cfg.positionsCompressed.length > 0) { - const normalized = false; - this.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positionsCompressed, cfg.positionsCompressed.length, 3, gl.STATIC_DRAW, normalized); - this.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix); - const localAABB = math.collapseAABB3(); - math.expandAABB3Points3(localAABB, cfg.positionsCompressed); - geometryCompressionUtils.decompressAABB(localAABB, this.positionsDecodeMatrix); - math.AABB3ToOBB3(localAABB, this.obb); - if (pickSurfacePrecisionEnabled) { - this.quantizedPositions = cfg.positionsCompressed; - } - - } else if (cfg.positions && cfg.positions.length > 0) { - const lenPositions = cfg.positions.length; - const localAABB = math.collapseAABB3(); - math.expandAABB3Points3(localAABB, cfg.positions); - math.AABB3ToOBB3(localAABB, this.obb); - const quantizedPositions = quantizePositions(cfg.positions, localAABB, this.positionsDecodeMatrix); - let normalized = false; - this.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized); - if (pickSurfacePrecisionEnabled) { - this.quantizedPositions = quantizedPositions; - } - } - - if (cfg.normalsCompressed && cfg.normalsCompressed.length > 0) { - const normalized = true; // For oct-encoded UInt8 - this.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.normalsCompressed, cfg.normalsCompressed.length, 3, gl.STATIC_DRAW, normalized); - - } else if (cfg.normals && cfg.normals.length > 0) { - const compressedNormals = octEncodeNormals(cfg.normals); - const normalized = true; // For oct-encoded UInt8 - this.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, compressedNormals, compressedNormals.length, 3, gl.STATIC_DRAW, normalized); - } - - if (cfg.colorsCompressed && cfg.colorsCompressed.length > 0) { - const colorsCompressed = new Uint8Array(cfg.colorsCompressed); - const notNormalized = false; - this.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized); - - } else if (cfg.colors && cfg.colors.length > 0) { - const colors = cfg.colors; - const colorsCompressed = new Uint8Array(colors.length); - for (let i = 0, len = colors.length; i < len; i++) { - colorsCompressed[i] = colors[i] * 255; - } - const notNormalized = false; - this.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized); - } - - if (cfg.uvCompressed && cfg.uvCompressed.length > 0) { - const uvCompressed = new Uint16Array(cfg.uvCompressed); - this.uvDecodeMatrix = math.mat4(cfg.uvDecodeMatrix); - this.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.uvCompressed, uvCompressed.length, 2, gl.STATIC_DRAW, false); - - } else if (cfg.uv && cfg.uv.length > 0) { - const bounds = geometryCompressionUtils.getUVBounds(cfg.uv); - const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max); - const uvCompressed = result.quantized; - this.uvDecodeMatrix = result.decodeMatrix; - this.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uvCompressed, uvCompressed.length, 2, gl.STATIC_DRAW, false); - } - - if (cfg.indices && cfg.indices.length > 0) { - this.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(cfg.indices), cfg.indices.length, 1, gl.STATIC_DRAW); - if (pickSurfacePrecisionEnabled) { - this.indices = cfg.indices; - } - this.numIndices = cfg.indices.length; - } - - if (cfg.primitive === "triangles" || cfg.primitive === "solid" || cfg.primitive === "surface") { - let edgeIndices = cfg.edgeIndices; - if (!edgeIndices) { - edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, cfg.edgeThreshold || 10); - } - this.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(edgeIndices), edgeIndices.length, 1, gl.STATIC_DRAW); - } - } - - /** - * @private - */ - destroy() { - } -} - - diff --git a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelMesh.js b/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelMesh.js deleted file mode 100644 index bf86ccf5e..000000000 --- a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelMesh.js +++ /dev/null @@ -1,281 +0,0 @@ -import {math} from "../../../math/math.js"; - -/** - * @private - * @implements Pickable - */ -class VBOSceneModelMesh { - - constructor(model, id, color, opacity, layer = null, portionId = 0) { - - /** - * The VBOSceneModel that contains this PerformanceModelMesh. - * - * A PerformanceModelMesh always belongs to exactly one VBOSceneModel. - * - * @property model - * @type {VBOSceneModel} - * @final - */ - this.model = model; - - /** - * The VBOSceneModelNode that contains this PerformanceModelMesh. - * - * A PerformanceModelMesh always belongs to exactly one VBOSceneModelNode. - * - * @property object - * @type {VBOSceneModelNode} - * @final - */ - this.object = null; - - /** - * The VBOSceneModelNode that contains this PerformanceModelMesh. - * - * A PerformanceModelMesh always belongs to exactly one VBOSceneModelNode. - * - * @property object - * @type {VBOSceneModelNode} - * @final - */ - this.parent = null; - - /** - * ID of this PerformanceModelMesh, unique within the xeokit.Scene. - * - * @property id - * @type {String} - * @final - */ - this.id = id; - - /** - * - * @type {Number} - * @private - */ - this.pickId = this.model.scene._renderer.getPickID(this); - - /** - * World-space 3D axis-aligned bounding box (AABB). - * - * Represented by a six-element Float64Array containing the min/max extents of the - * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````. - * - * @property aabb - * @final - * @type {Float64Array} - */ - this.aabb = math.AABB3(); - - this._layer = layer; - this._portionId = portionId; - - this._color = [color[0], color[1], color[2], opacity]; // [0..255] - this._colorize = [color[0], color[1], color[2], opacity]; // [0..255] - this._colorizing = false; - - this._transparent = (opacity < 255); - - this.numTriangles = 0; - - /** - * 3D origin of the VBOSceneModelMesh's vertex positions, if they are in relative-to-center (RTC) coordinates. - * - * When this is defined, then the positions are RTC, which means that they are relative to this position. - * - * @property origin - * @type {Float64Array} - */ - this.origin = null; - } - - /** - * @private - */ - _finalize(entityFlags) { - this._layer.initFlags(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _finalize2() { - if (this._layer.flushInitFlags) { - this._layer.flushInitFlags(); - } - } - - /** - * @private - */ - _setVisible(entityFlags) { - this._layer.setVisible(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setColor(color) { - this._color[0] = color[0]; - this._color[1] = color[1]; - this._color[2] = color[2]; - if (!this._colorizing) { - this._layer.setColor(this._portionId, this._color, false); - } - } - - /** @private */ - _setColorize(colorize) { - const setOpacity = false; - if (colorize) { - this._colorize[0] = colorize[0]; - this._colorize[1] = colorize[1]; - this._colorize[2] = colorize[2]; - this._layer.setColor(this._portionId, this._colorize, setOpacity); - this._colorizing = true; - } else { - this._layer.setColor(this._portionId, this._color, setOpacity); - this._colorizing = false; - } - } - - /** @private */ - _setOpacity(opacity, entityFlags) { - const newTransparent = (opacity < 255); - const lastTransparent = this._transparent; - const changingTransparency = (lastTransparent !== newTransparent); - this._color[3] = opacity; - this._colorize[3] = opacity; - this._transparent = newTransparent; - if (this._colorizing) { - this._layer.setColor(this._portionId, this._colorize); - } else { - this._layer.setColor(this._portionId, this._color); - } - if (changingTransparency) { - this._layer.setTransparent(this._portionId, entityFlags, newTransparent); - } - } - - /** - * @private - */ - _setOffset(offset) { - this._layer.setOffset(this._portionId, offset); - } - - /** - * @private - */ - _setHighlighted(entityFlags) { - this._layer.setHighlighted(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setXRayed(entityFlags) { - this._layer.setXRayed(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setSelected(entityFlags) { - this._layer.setSelected(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setEdges(entityFlags) { - this._layer.setEdges(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setClippable(entityFlags) { - this._layer.setClippable(this._portionId, entityFlags, this._transparent); - } - - /** - * @private - */ - _setCollidable(entityFlags) { - this._layer.setCollidable(this._portionId, entityFlags); - } - - /** - * @private - */ - _setPickable(flags) { - this._layer.setPickable(this._portionId, flags, this._transparent); - } - - /** - * @private - */ - _setCulled(flags) { - this._layer.setCulled(this._portionId, flags, this._transparent); - } - - /** @private */ - canPickTriangle() { - return false; - } - - /** @private */ - drawPickTriangles(renderFlags, frameCtx) { - // NOP - } - - /** @private */ - pickTriangleSurface(pickResult) { - // NOP - } - - /** @private */ - precisionRayPickSurface(worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) { - return this._layer.precisionRayPickSurface ? this._layer.precisionRayPickSurface(this._portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) : false; - } - - /** @private */ - canPickWorldPos() { - return true; - } - - /** @private */ - drawPickDepths(frameCtx) { - this.model.drawPickDepths(frameCtx); - } - - /** @private */ - drawPickNormals(frameCtx) { - this.model.drawPickNormals(frameCtx); - } - - /** - * @private - * @returns {VBOSceneModelNode} - */ - delegatePickedEntity() { - return this.parent; - } - - /** @private */ - getEachVertex(callback) { - this._layer.getEachVertex(this._portionId, callback); - } - - /** - * @private - */ - _destroy() { - this.model.scene._renderer.putPickID(this.pickId); - } -} - -export {VBOSceneModelMesh}; \ No newline at end of file diff --git a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTexture.js b/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTexture.js deleted file mode 100644 index ab6e74fe4..000000000 --- a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTexture.js +++ /dev/null @@ -1,47 +0,0 @@ -import {Texture2D} from "../../../webgl/Texture2D.js"; - -/** - * Instantiated by VBOSceneModel#createTexture - * - * @private - */ -export class VBOSceneModelTexture { - - /** - * @param {*} cfg Texture properties. - * @param {String|Number} cfg.id Mandatory ID for the texture, to refer to with {@link VBOSceneModel#createTexture}. - * @param {String} [cfg.model] VBOSceneModel that owns this texture. - * @param {*} [cfg.image] Texture image data. - * @param {String} [cfg.src] Texture image source. - * @param {Boolean} [cfg.flipY] Whether to flip on Y-axis. - * @param {number[]} [cfg.preloadColor] Texture preload color. - */ - constructor(cfg) { - - /** - * ID of this VBOSceneModelTexture, unique within the VBOSceneModel. - * - * @property id - * @type {String} - */ - this.id = cfg.id; - - /** - * The texture. - * - * @property texture - * @type {Texture2D} - */ - this.texture = cfg.texture; - } - - /** - * @private - */ - destroy() { - if (this.texture) { - this.texture.destroy(); - this.texture = null; - } - } -} diff --git a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTextureSet.js b/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTextureSet.js deleted file mode 100644 index 227a25ef5..000000000 --- a/src/viewer/scene/models/VBOSceneModel/lib/VBOSceneModelTextureSet.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Instantiated by Model#createTextureSet - * - * @private - */ -export class VBOSceneModelTextureSet { - - /** - * @param {*} cfg VBOSceneModelTextureSet properties. - * @param {String|Number} cfg.id Mandatory ID for the texture set, to refer to with {@link VBOSceneModel#createMesh}. - * @param {VBOSceneModel} cfg.model VBOSceneModel that owns this texture set. - * @param {VBOSceneModelTexture} [cfg.colorTexture] RGBA texture with base color in RGB and opacity in A. - * @param {VBOSceneModelTexture} [cfg.metallicRoughnessTexture] RGBA texture with metallic in R and roughness in G. - * @param {VBOSceneModelTexture} [cfg.normalsTexture] RGBA texture with surface normals in RGB. - * @param {VBOSceneModelTexture} [cfg.emissiveTexture] RGBA texture with emissive color in RGB. - * @param {VBOSceneModelTexture} [cfg.occlusionTexture] RGBA texture with ambient occlusion factors in RGB. - */ - constructor(cfg) { - - /** - * ID of this VBOSceneModelTextureSet, unique within the VBOSceneModel. - * - * @property id - * @type {String} - * @final - */ - this.id = cfg.id; - - /** - * RGBA texture containing base color in RGB and opacity in A. - * - * @property colorTexture - * @type {VBOSceneModelTexture} - * @final - */ - this.colorTexture = cfg.colorTexture; - - /** - * RGBA texture containing metallic and roughness factors in R and G. - * - * @property metallicRoughnessTexture - * @type {VBOSceneModelTexture} - * @final - */ - this.metallicRoughnessTexture = cfg.metallicRoughnessTexture; - - /** - * RGBA texture with surface normals in RGB. - * - * @property normalsTexture - * @type {VBOSceneModelTexture} - * @final - */ - this.normalsTexture = cfg.normalsTexture; - - /** - * RGBA texture with emissive color in RGB. - * - * @property emissiveTexture - * @type {VBOSceneModelTexture} - * @final - */ - this.emissiveTexture = cfg.emissiveTexture; - - /** - * RGBA texture with ambient occlusion factors in RGB. - * - * @property occlusionTexture - * @type {VBOSceneModelTexture} - * @final - */ - this.occlusionTexture = cfg.occlusionTexture; - } - - /** - * @private - */ - destroy() { - } -} diff --git a/src/viewer/scene/models/index.js b/src/viewer/scene/models/index.js deleted file mode 100644 index 2deda6306..000000000 --- a/src/viewer/scene/models/index.js +++ /dev/null @@ -1,5 +0,0 @@ - -export * from "./SceneModel.js"; -export * from "./VBOSceneModel/VBOSceneModel.js"; -export * from "./PerformanceModel/PerformanceModel.js"; -export * from "./DataTextureSceneModel/DataTextureSceneModel.js"; \ No newline at end of file diff --git a/src/viewer/scene/nodes/Node.js b/src/viewer/scene/nodes/Node.js index 3e9da9119..1097c5e17 100644 --- a/src/viewer/scene/nodes/Node.js +++ b/src/viewer/scene/nodes/Node.js @@ -30,7 +30,7 @@ const identityMat = math.identityMat4(); * * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc. * - * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph)] + * [[Run this example](/examples/#sceneRepresentation_SceneGraph)] * * ````javascript * import {Viewer, Mesh, Node, PhongMaterial} from "xeokit-sdk.es.js"; diff --git a/src/viewer/scene/scene/Scene.js b/src/viewer/scene/scene/Scene.js index 0103688d2..384b7157d 100644 --- a/src/viewer/scene/scene/Scene.js +++ b/src/viewer/scene/scene/Scene.js @@ -18,6 +18,8 @@ import {Metrics} from "../metriqs/Metriqs.js"; import {SAO} from "../postfx/SAO.js"; import {PointsMaterial} from "../materials/PointsMaterial.js"; import {LinesMaterial} from "../materials/LinesMaterial.js"; +import {LOD} from "../lod/LOD.js"; +import {VFC} from "../vfc/VFC"; // Enables runtime check for redundant calls to object state update methods, eg. Scene#_objectVisibilityUpdated const ASSERT_OBJECT_STATE_UPDATE = false; @@ -338,6 +340,7 @@ class Scene extends Component { * @param {Viewer} viewer The Viewer this Scene belongs to. * @param {Object} cfg Scene configuration. * @param {String} [cfg.canvasId] ID of an existing HTML canvas for the {@link Scene#canvas} - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID. + * @param {String} [cfg.lodEnabled] ID of an existing HTML canvas for the {@link Scene#canvas} - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID. * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas for the {@link Scene#canvas} - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID. * @param {HTMLElement} [cfg.keyboardEventsElement] Optional reference to HTML element on which key events should be handled. Defaults to the HTML Document. * @throws {String} Throws an exception when both canvasId or canvasElement are missing or they aren't pointing to a valid HTMLCanvasElement. @@ -820,11 +823,12 @@ class Scene extends Component { this.gammaFactor = cfg.gammaFactor; this._entityOffsetsEnabled = !!cfg.entityOffsetsEnabled; - this._pickSurfacePrecisionEnabled = !!cfg.pickSurfacePrecisionEnabled; this._logarithmicDepthBufferEnabled = !!cfg.logarithmicDepthBufferEnabled; + this._dtxEnabled = (cfg.dtxEnabled !== false); this._pbrEnabled = !!cfg.pbrEnabled; this._colorTextureEnabled = (cfg.colorTextureEnabled !== false); + this._dtxEnabled = !!cfg.dtxEnabled; // Register Scene on xeokit // Do this BEFORE we add components below @@ -869,6 +873,22 @@ class Scene extends Component { this._camera.on("dirty", () => { this._renderer.imageDirty(); }); + + /** Configures Level-of-Detail (LOD) culling for {@link SceneModel}s belonging to this Scene. + * @type {LOD} + * @final + */ + this.lod = new LOD(this, { + enabled: cfg.lodEnabled + }); + + /** Configures View Frustum Culling (VFC) for {@link SceneModel}s belonging to this Scene. + * @type {VFC} + * @final + */ + this.vfc = new VFC(this, { + enabled: cfg.vfcEnabled + }); } _initDefaults() { @@ -997,7 +1017,7 @@ class Scene extends Component { delete this.lineSets[lineSet.id]; this.scene.fire("lineSetDestroyed", lineSet, true /* Don't retain event */); } - + _lightDestroyed(light) { delete this.lights[light.id]; this.scene._lightsState.removeLight(light._state); @@ -1040,8 +1060,8 @@ class Scene extends Component { this._objectIds = null; // Lazy regenerate } - _objectVisibilityUpdated(entity, bool, notify = true) { - if (bool) { + _objectVisibilityUpdated(entity, notify = true) { + if (entity.visible) { if (ASSERT_OBJECT_STATE_UPDATE && this.visibleObjects[entity.id]) { console.error("Redundant object visibility update (visible=true)"); return; @@ -1062,8 +1082,8 @@ class Scene extends Component { } } - _objectXRayedUpdated(entity, bool, notify = true) { - if (bool) { + _objectXRayedUpdated(entity, notify = true) { + if (entity.xrayed) { if (ASSERT_OBJECT_STATE_UPDATE && this.xrayedObjects[entity.id]) { console.error("Redundant object xray update (xrayed=true)"); return; @@ -1080,12 +1100,12 @@ class Scene extends Component { } this._xrayedObjectIds = null; // Lazy regenerate if (notify) { - this.fire("objectXRayed", entity, true); + this.fire("objectXRayed", entity, true); } } - _objectHighlightedUpdated(entity, bool, notify = true) { - if (bool) { + _objectHighlightedUpdated(entity, notify = true) { + if (entity.highlighted) { if (ASSERT_OBJECT_STATE_UPDATE && this.highlightedObjects[entity.id]) { console.error("Redundant object highlight update (highlighted=true)"); return; @@ -1102,12 +1122,12 @@ class Scene extends Component { } this._highlightedObjectIds = null; // Lazy regenerate if (notify) { - this.fire("objectHighlighted", entity, true); + this.fire("objectHighlighted", entity, true); } } - _objectSelectedUpdated(entity, bool, notify = true) { - if (bool) { + _objectSelectedUpdated(entity, notify = true) { + if (entity.selected) { if (ASSERT_OBJECT_STATE_UPDATE && this.selectedObjects[entity.id]) { console.error("Redundant object select update (selected=true)"); return; @@ -1124,12 +1144,12 @@ class Scene extends Component { } this._selectedObjectIds = null; // Lazy regenerate if (notify) { - this.fire("objectSelected", entity, true); + this.fire("objectSelected", entity, true); } } - _objectColorizeUpdated(entity, bool) { - if (bool) { + _objectColorizeUpdated(entity, colorized) { + if (colorized) { this.colorizedObjects[entity.id] = entity; this._numColorizedObjects++; } else { @@ -1139,8 +1159,8 @@ class Scene extends Component { this._colorizedObjectIds = null; // Lazy regenerate } - _objectOpacityUpdated(entity, bool) { - if (bool) { + _objectOpacityUpdated(entity, opacityUpdated) { + if (opacityUpdated) { this.opacityObjects[entity.id] = entity; this._numOpacityObjects++; } else { @@ -1223,7 +1243,7 @@ class Scene extends Component { * @returns {Boolean} True if precision picking is enabled. */ get pickSurfacePrecisionEnabled() { - return this._pickSurfacePrecisionEnabled; + return false; // Removed } /** @@ -1260,6 +1280,36 @@ class Scene extends Component { return this._pbrEnabled; } + /** + * Sets whether data texture scene representation (DTX) is enabled for the {@link Scene}. + * + * Even when enabled, DTX will only work if supported. + * + * Default value is ````false````. + * + * @type {Boolean} + */ + set dtxEnabled(value) { + value = !!value; + if (this._dtxEnabled === value) { + return; + } + this._dtxEnabled = value; + } + + /** + * Gets whether data texture-based scene representation (DTX) is enabled for the {@link Scene}. + * + * Even when enabled, DTX will only apply if supported. + * + * Default value is ````false````. + * + * @type {Boolean} + */ + get dtxEnabled() { + return this._dtxEnabled; + } + /** * Sets whether basic color texture rendering is enabled. * @@ -2166,13 +2216,13 @@ class Scene extends Component { * @param {Object} params Picking parameters. * @param {Number[]} [params.canvasPos] Canvas-space coordinates. When ray-picking, this will override the **origin** and ** direction** parameters and will cause the ray to be fired through the canvas at this position, directly along the negative View-space Z-axis. * @param {Number} [params.snapRadius=30] The snap radius, in canvas pixels - * @param {"vertex"|"edge"} [params.snapType="vertex"] Whether to snap to vertex or edge. + * @param {"vertex"|"edge"} [params.snapMode="vertex"] Whether to snap to vertex or edge. */ snapPick(params) { return this._renderer.snapPick( params.canvasPos, params.snapRadius || 30, - params.snapType || "vertex" + params.snapMode || "vertex" ); } @@ -2231,7 +2281,7 @@ class Scene extends Component { this.lineSets[ids[i]].destroy(); } } - + /** * Gets the collective axis-aligned boundary (AABB) of a batch of {@link Entity}s that represent objects. * diff --git a/src/viewer/scene/vfc/VFC.js b/src/viewer/scene/vfc/VFC.js new file mode 100644 index 000000000..15a3a7113 --- /dev/null +++ b/src/viewer/scene/vfc/VFC.js @@ -0,0 +1,82 @@ +import {Component} from "../Component"; +import {VFCManager} from "./VFCManager"; + +/** + * Manages view frustum culling (VFC) for {@link SceneModel} implementations. + */ +export class VFC extends Component { + + /** @private */ + constructor(scene, cfg = {}) { + super(scene, cfg); + this._scene = scene; + this._vfcManagers = {}; + this._vfcManagerList = []; + this.enabled = cfg.enabled; + this._init(); + } + + _init() { + this._scene.on("rendering", () => { // Apply VFC-culling before rendering the scene + for (let i = 0, len = this._vfcManagerList.length; i < len; i++) { + this._vfcManagerList[i].applyViewFrustumCulling(); + } + }); + } + + /** + * Sets whether view frustum culling (VFC) is enabled for the {@link Scene}. + * + * Default value is ````false````. + * + * @type {Boolean} + */ + set enabled(value) { + value = !!value; + if (this._enabled === value) { + return; + } + this._enabled = value; + this.glRedraw(); + } + + /** + * Gets whether view frustum culling (VFC) is enabled for the {@link Scene}. + * + * Default value is ````false````. + * + * @type {Boolean} + */ + get enabled() { + return this._enabled; + } + + /** + * Called within SceneModel constructors + * @private + */ + getVFCManager(sceneModel) { + const vfcManager = new VFCManager(this.scene, sceneModel); + this._vfcManagers[vfcManager.id] = vfcManager; + this._vfcManagerList = Object.values(this._vfcManagers); + return vfcManager; + } + + /** + * Called within SceneModel destructors + * @private + */ + putVFCManager(vfcManager) { + delete this._vfcManagers[vfcManager.id]; + this._vfcManagerList = Object.values(this._vfcManagers); + } + + /** + * Destroys this component. + * + * @private + */ + destroy() { + super.destroy(); + } +} diff --git a/src/viewer/scene/vfc/VFCManager.js b/src/viewer/scene/vfc/VFCManager.js new file mode 100644 index 000000000..d7841f640 --- /dev/null +++ b/src/viewer/scene/vfc/VFCManager.js @@ -0,0 +1,54 @@ +import {VFCState} from "./VFCState"; + +/** + * @private + */ +export class VFCManager { + + constructor(scene, sceneModel) { + this.sceneModel = sceneModel; + this.entities = []; + this.meshes = []; + this.finalized = false; + } + + addEntity(entity) { + if (this.finalized) { + throw "Already finalized"; + } + this.entities.push(entity); + } + + addMesh(mesh) { + if (this.finalized) { + throw "Already finalized"; + } + this.meshes.push(mesh); + } + + finalize(fnForceFinalizeLayer) { + if (this.finalized) { + throw "Already finalized"; + } + this.finalized = true; + this.VFCState = new VFCState(); + this.VFCState.initializeVFCState(this.entities, this.meshes); + this.VFCState.finalize(this.sceneModel, fnForceFinalizeLayer); + this._onSceneRendering = this.sceneModel.scene.on("rendering", () => this.applyViewFrustumCulling.call(this)); + } + + applyViewFrustumCulling() { + if (!this.finalized) { + return; + } + this.VFCState.applyViewFrustumCulling(this.sceneModel); + } + + destroy() { + if (this.finalized) { + this.sceneModel.off(this._onSceneRendering); + } + } +} + + diff --git a/src/viewer/scene/vfc/VFCState.js b/src/viewer/scene/vfc/VFCState.js new file mode 100644 index 000000000..c8940fe29 --- /dev/null +++ b/src/viewer/scene/vfc/VFCState.js @@ -0,0 +1,391 @@ +import {clusterizeV2} from "./cluster-helper"; +import {math} from "../math"; + +const tempVec3 = math.vec3(); + +/** + * Number of bits per-dimension in the 2-dimensional LUT fast atan table + */ +const ATAN2_LUT_BITS = 9; +const ATAN2_FACTOR = 1 << (ATAN2_LUT_BITS - 1); + +/** + * Constant for quick conversion of radians to degrees + */ +const _180_DIV_MATH_PI = 180 / Math.PI; +const atan2LUT = new Float32Array((1 << ATAN2_LUT_BITS) * (1 << ATAN2_LUT_BITS)); + +// Initialize the Look Up Table +for (let i = -ATAN2_FACTOR; i < ATAN2_FACTOR; i++) { + for (let j = -ATAN2_FACTOR; j < ATAN2_FACTOR; j++) { + const index = ((i + ATAN2_FACTOR) << ATAN2_LUT_BITS) + (j + ATAN2_FACTOR); + const max = Math.max(Math.abs(i), Math.abs(j)); + atan2LUT [index] = Math.atan2(i / max, j / max); + } +} + +/** + * Fast ````Math.atan2```` implementation based in Look Up Tables. + * + * @param {number} x + * @param {number} y + * + * @returns {number} + */ +function fastAtan2(x, y) { + const max_factor = ATAN2_FACTOR / Math.max(Math.abs(x), Math.abs(y)); + const xx = Math.round(x * max_factor) + (ATAN2_FACTOR - 1); + const yy = Math.round(y * max_factor) + (ATAN2_FACTOR - 1); + return atan2LUT [(xx << ATAN2_LUT_BITS) + yy]; +} + +const VISIBILITY_CHECK_ALL_D = (1 << 0); +const VISIBILITY_CHECK_NONE_D = (1 << 1); +const VISIBILITY_CHECK_D_LESS = (1 << 2); +const VISIBILITY_CHECK_D_MORE = (1 << 3); + +const VISIBILITY_CHECK_ALL_H = (1 << 4); +const VISIBILITY_CHECK_NONE_H = (1 << 5); +const VISIBILITY_CHECK_H_LESS = (1 << 6); +const VISIBILITY_CHECK_H_MORE = (1 << 7); + +const VISIBILITY_CHECK_ALL_V = (1 << 8); +const VISIBILITY_CHECK_NONE_V = (1 << 9); +const VISIBILITY_CHECK_V_LESS = (1 << 10); +const VISIBILITY_CHECK_V_MORE = (1 << 11); + +const VISIBILITY_CHECK_ENVOLVES_D = (1 << 12); +const VISIBILITY_CHECK_ENVOLVES_H = (1 << 13); +const VISIBILITY_CHECK_ENVOLVES_V = (1 << 14); + +/** + * Data structure containing pre-initialized `View Frustum Culling` data. + * + * Will be used by the rest of `View Frustum Culling` related code. + * + * @private + */ +export class VFCState { + + constructor() { + + this._aabbTree = null; + this._orderedMeshList = []; + this._orderedEntityList = []; + this._frustumProps = { + dirty: true, + wMultiply: 1.0, + hMultiply: 1.0, + }; + this._cullFrame = 0; + + /** + * @type {boolean} + * @private + */ + this.finalized = false; + } + + /** + * + * @param {Array} entityList + * @param {Array} meshList + */ + initializeVFCState(entityList, meshList) { + if (this.finalized) { + throw "Already finalized"; + } + const clusterResult = clusterizeV2(entityList, meshList); + this._aabbTree = clusterResult.rTreeBasedAabbTree; + for (let i = 0, len = clusterResult.orderedClusteredIndexes.length; i < len; i++) { + const entityIndex = clusterResult.orderedClusteredIndexes[i]; + const clusterNumber = clusterResult.entityIdToClusterIdMapping[entityIndex]; + const entity = entityList[entityIndex]; + const newMeshIds = []; + for (let j = 0, len2 = entity.meshIds.length; j < len2; j++) { + const meshIndex = entity.meshIds[j]; + meshList[meshIndex].id = this._orderedMeshList.length; + newMeshIds.push(this._orderedMeshList.length); + this._orderedMeshList.push({ + clusterNumber: clusterNumber, + mesh: meshList[meshIndex] + }); + } + entity.meshIds = newMeshIds; + this._orderedEntityList.push(entity); + } + for (let i = 0, len = clusterResult.instancedIndexes.length; i < len; i++) { + const entityIndex = clusterResult.instancedIndexes[i]; + let entity = entityList[entityIndex]; + const newMeshIds = []; + for (let j = 0, len2 = entity.meshIds.length; j < len2; j++) { + const meshIndex = entity.meshIds[j]; + meshList[meshIndex].id = this._orderedMeshList.length; + newMeshIds.push(this._orderedMeshList.length); + this._orderedMeshList.push({clusterNumber: 99999, mesh: meshList[meshIndex]}); + } + entity.meshIds = newMeshIds; + this._orderedEntityList.push(entity); + } + } + + /** + * @param {SceneModel} sceneModel + * @param {*} fnForceFinalizeLayer + */ + finalize(sceneModel, fnForceFinalizeLayer) { + if (this.finalized) { + throw "Already finalized"; + } + let lastClusterNumber = -1; + for (let i = 0, len = this._orderedMeshList.length; i < len; i++) { + const {clusterNumber, mesh} = this._orderedMeshList [i]; + if (lastClusterNumber !== -1 && lastClusterNumber !== clusterNumber) { + fnForceFinalizeLayer.call(sceneModel); + } + sceneModel._createMesh(mesh); + lastClusterNumber = clusterNumber; + } + // fnForceFinalizeLayer (); + for (let i = 0, len = this._orderedEntityList.length; i < len; i++) { + sceneModel._createEntity(this._orderedEntityList[i]) + } + // Free memory + this._orderedMeshList = []; + this._orderedEntityList = []; + this.finalized = true; + } + + /** + * @param {SceneModel} sceneModel + */ + applyViewFrustumCulling(sceneModel) { + if (!this.finalized) { + throw "Not finalized"; + } + if (!this._aabbTree) { + return; + } + if (!this._canvasElement) { + this._canvasElement = sceneModel.scene.canvas.canvas; + } + if (!this._camera) { + this._camera = sceneModel.scene.camera; + } + this._ensureFrustumPropsUpdated(sceneModel); + this._initializeCullingDataIfNeeded(sceneModel); + const visibleNodes = this._searchVisibleNodesWithFrustumCulling(); + this._cullFrame++; + this._markVisibleFrameOfVisibleNodes(visibleNodes, this._cullFrame); + this._cullNonVisibleNodes(sceneModel, this._cullFrame); + } + + _initializeCullingDataIfNeeded(sceneModel) { + if (this._internalNodesList) { + return; + } + if (!this._aabbTree) { + return; + } + const allAabbNodes = this._aabbTree.all(); + let maxEntityId = 0; + allAabbNodes.forEach(aabbbNode => { + maxEntityId = Math.max(maxEntityId, aabbbNode.entity.id) + }); + const internalNodesList = new Array(maxEntityId + 1); + allAabbNodes.forEach(aabbbNode => { + internalNodesList [aabbbNode.entity.id] = sceneModel.objects[aabbbNode.entity.xeokitId]; + }); + this._internalNodesList = internalNodesList; + this._lastVisibleFrameOfNodes = new Array(internalNodesList.length); + this._lastVisibleFrameOfNodes.fill(0); + } + + _searchVisibleNodesWithFrustumCulling() { + return this._aabbTree.searchCustom((bbox, isLeaf) => this._aabbIntersectsCameraFrustum(bbox, isLeaf), (bbox) => this._aabbContainedInCameraFrustum(bbox)) + } + + _markVisibleFrameOfVisibleNodes(visibleNodes, cullFrame) { + const lastVisibleFrameOfNodes = this._lastVisibleFrameOfNodes; + for (let i = 0, len = visibleNodes.length; i < len; i++) { + lastVisibleFrameOfNodes [visibleNodes[i].entity.id] = cullFrame; + } + } + + _cullNonVisibleNodes(sceneModel, cullFrame) { + const internalNodesList = this._internalNodesList; + const lastVisibleFrameOfNodes = this._lastVisibleFrameOfNodes; + for (let i = 0, len = internalNodesList.length; i < len; i++) { + if (internalNodesList[i]) { + internalNodesList[i].culledVFC = lastVisibleFrameOfNodes[i] !== cullFrame; + } + } + } + + /** + * Returns all 8 coordinates of an AABB. + * + * @param {Array} bbox An AABB + * + * @private + */ + _getPointsForBBox(bbox) { + const points = []; + for (let i = 0; i < 8; i++) { + points.push(new Float32Array([(i & 1) ? bbox.maxX : bbox.minX, (i & 2) ? bbox.maxY : bbox.minY, (i & 4) ? bbox.maxZ : bbox.minZ])); + } + return points; + } + + /** + * @param {*} bbox + * @param {*} isLeaf + * @returns + * + * @private + */ + _aabbIntersectsCameraFrustum(bbox, isLeaf) { + if (isLeaf) { + return true; + } + if (this._camera.projection === "ortho") { // TODO: manage ortho views + this._frustumProps.dirty = false; + return true; + } + // numIntersectionChecks++; + const check = this._aabbIntersectsCameraFrustum_internal(bbox); + const interD = !(check & VISIBILITY_CHECK_ALL_D) && !(check & VISIBILITY_CHECK_NONE_D); + const interH = !(check & VISIBILITY_CHECK_ALL_H) && !(check & VISIBILITY_CHECK_NONE_H); + const interV = !(check & VISIBILITY_CHECK_ALL_V) && !(check & VISIBILITY_CHECK_NONE_V); + if (((check & VISIBILITY_CHECK_ENVOLVES_D) || interD || (check & VISIBILITY_CHECK_ALL_D)) && + ((check & VISIBILITY_CHECK_ENVOLVES_H) || interH || (check & VISIBILITY_CHECK_ALL_H)) && + ((check & VISIBILITY_CHECK_ENVOLVES_V) || interV || (check & VISIBILITY_CHECK_ALL_V))) { + return true; + } + return false; + } + + /** + * @param {*} bbox + * @returns + * + * @private + */ + _aabbContainedInCameraFrustum(bbox) { + if (this._camera.projection === "ortho") { // TODO: manage ortho views + this._frustumProps.dirty = false; + return true; + } + const check = bbox._check; + return (check & VISIBILITY_CHECK_ALL_D) && (check & VISIBILITY_CHECK_ALL_H) && (check & VISIBILITY_CHECK_ALL_V); + } + + /** + * @param {SceneModel} sceneModel + * + * @private + */ + _ensureFrustumPropsUpdated(sceneModel) { + const min = Math.min(this._canvasElement.width, this._canvasElement.height); // Assuming "min" for fovAxis + this._frustumProps.wMultiply = this._canvasElement.width / min; + this._frustumProps.hMultiply = this._canvasElement.height / min; + const aspect = this._canvasElement.width / this._canvasElement.height; + let fov = this._camera.perspective.fov; + if (aspect < 1) { + fov = fov / aspect; + } + fov = Math.min(fov, 120); + this._frustumProps.fov = fov; + // if (!this._frustumProps.dirty) + // { + // return; + // } + // Adjust camera eye/look to take into account the `sceneModel.worldMatrix`: + // - the entities' AABBs don't take it into account + // - and they can't, since `sceneModel.worldMatrix` is dynamic + // So, instead of transformating the positions of the r*tree's AABBs, + // apply the inverse transform to the camera eye/look, since the culling + // result is equivalent. + const invWorldMatrix = math.inverseMat4(sceneModel.worldMatrix, math.mat4()); + const modelCamEye = math.transformVec3(invWorldMatrix, this._camera.eye, [0, 0, 0]); + const modelCamLook = math.transformVec3(invWorldMatrix, this._camera.look, [0, 0, 0]); + this._frustumProps.forward = math.normalizeVec3(math.subVec3(modelCamLook, modelCamEye, [0, 0, 0]), [0, 0, 0]); + this._frustumProps.up = math.normalizeVec3(this._camera.up, [0, 0, 0]); + this._frustumProps.right = math.normalizeVec3(math.cross3Vec3(this._frustumProps.forward, this._frustumProps.up, [0, 0, 0]), [0, 0, 0]); + this._frustumProps.eye = modelCamEye.slice(); + this._frustumProps.CAM_FACTOR_1 = this._frustumProps.fov / 2 * this._frustumProps.wMultiply / _180_DIV_MATH_PI; + this._frustumProps.CAM_FACTOR_2 = this._frustumProps.fov / 2 * this._frustumProps.hMultiply / _180_DIV_MATH_PI; + // this._frustumProps.dirty = false; + } + + /** + * @param {*} bbox + * @returns + * + * @private + */ + _aabbIntersectsCameraFrustum_internal(bbox) { + const bboxPoints = bbox._points || this._getPointsForBBox(bbox); + bbox._points = bboxPoints; + let retVal = + VISIBILITY_CHECK_ALL_D | VISIBILITY_CHECK_NONE_D | + VISIBILITY_CHECK_ALL_H | VISIBILITY_CHECK_NONE_H | + VISIBILITY_CHECK_ALL_V | VISIBILITY_CHECK_NONE_V; + for (let i = 0, len = bboxPoints.length; i < len; i++) { + // if ((!(retVal & VISIBILITY_CHECK_ALL_D) && !(retVal & VISIBILITY_CHECK_NONE_D)) || + // (!(retVal & VISIBILITY_CHECK_ALL_H) && !(retVal & VISIBILITY_CHECK_NONE_H)) || + // (!(retVal & VISIBILITY_CHECK_ALL_V) && !(retVal & VISIBILITY_CHECK_NONE_V))) + // { + // break; + // } + const bboxPoint = bboxPoints [i]; + const pointRelToCam = tempVec3; + pointRelToCam[0] = bboxPoint[0] - this._frustumProps.eye[0]; + pointRelToCam[1] = bboxPoint[1] - this._frustumProps.eye[1]; + pointRelToCam[2] = bboxPoint[2] - this._frustumProps.eye[2]; + const forwardComponent = math.dotVec3(pointRelToCam, this._frustumProps.forward); + if (forwardComponent < 0) { + retVal |= VISIBILITY_CHECK_D_LESS; + retVal &= ~VISIBILITY_CHECK_ALL_D; + } else { + retVal |= VISIBILITY_CHECK_D_MORE; + retVal &= ~VISIBILITY_CHECK_NONE_D; + } + const rightComponent = math.dotVec3(pointRelToCam, this._frustumProps.right); + const rightAngle = fastAtan2(rightComponent, forwardComponent); + if (Math.abs(rightAngle) > this._frustumProps.CAM_FACTOR_1) { + if (rightAngle < 0) { + retVal |= VISIBILITY_CHECK_H_LESS; + } else { + retVal |= VISIBILITY_CHECK_H_MORE; + } + retVal &= ~VISIBILITY_CHECK_ALL_H; + } else { + retVal &= ~VISIBILITY_CHECK_NONE_H; + } + const upComponent = math.dotVec3(pointRelToCam, this._frustumProps.up); + const upAngle = fastAtan2(upComponent, forwardComponent); + if (Math.abs(upAngle) > this._frustumProps.CAM_FACTOR_2) { + if (upAngle < 0) { + retVal |= VISIBILITY_CHECK_V_LESS; + } else { + retVal |= VISIBILITY_CHECK_V_MORE; + } + retVal &= ~VISIBILITY_CHECK_ALL_V; + } else { + retVal &= ~VISIBILITY_CHECK_NONE_V; + } + } + if ((retVal & VISIBILITY_CHECK_D_LESS) && (retVal & VISIBILITY_CHECK_D_MORE)) { + retVal |= VISIBILITY_CHECK_ENVOLVES_D; + } + if ((retVal & VISIBILITY_CHECK_H_LESS) && (retVal & VISIBILITY_CHECK_H_MORE)) { + retVal |= VISIBILITY_CHECK_ENVOLVES_H; + } + if ((retVal & VISIBILITY_CHECK_V_LESS) && (retVal & VISIBILITY_CHECK_V_MORE)) { + retVal |= VISIBILITY_CHECK_ENVOLVES_V; + } + bbox._check = retVal; + return retVal; + } +} \ No newline at end of file diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/cluster-helper.js b/src/viewer/scene/vfc/cluster-helper.js similarity index 55% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/cluster-helper.js rename to src/viewer/scene/vfc/cluster-helper.js index 730d73a96..e2a746015 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/cluster-helper.js +++ b/src/viewer/scene/vfc/cluster-helper.js @@ -3,50 +3,13 @@ * @license MIT */ -import {math} from "../../../../../math/math.js"; -import {geometryCompressionUtils} from "../../../../../math/geometryCompressionUtils.js"; +import {math} from "../math/math.js"; +import {geometryCompressionUtils} from "../math/geometryCompressionUtils.js"; import {RBush3D} from "./rbush3d.js"; import {makeClusters} from "./xeokit-cluster.js" -function generateAABB (aabbsForIndexes) { - const aabbsToLoad = []; - - for (let i = 0, len = aabbsForIndexes.length; i < len; i++) { - const item = aabbsForIndexes [i]; - - if (!item) { - continue; - } - - aabbsToLoad.push ({ - minX: item.aabb [0], - minY: item.aabb [1], - minZ: item.aabb [2], - maxX: item.aabb [3], - maxY: item.aabb [4], - maxZ: item.aabb [5], - entity: { - id: i, - xeokitId: item.entityId, - meshes: [ - { - numTriangles: item.numTriangles, - } - ] - }, - numTriangles: item.numTriangles, - }); - } - - const aabbTree = new RBush3D (4); - - aabbTree.load (aabbsToLoad); - - return aabbTree; -} - -function clusterizeV2 (entities, meshes) { +export function clusterizeV2(entities, meshes) { // const meshesById = {}; // meshes.forEach(mesh => meshesById[mesh.id] = mesh); @@ -57,91 +20,115 @@ function clusterizeV2 (entities, meshes) { // const entityMeshes = inflatedData.entityMeshes; // const entityMeshIds = inflatedData.entityMeshIds; // const entityUsesInstancing = inflatedData.entityUsesInstancing; - + // const numMeshes = meshPositions.length; // const numEntities = entityMeshes.length; const numMeshes = meshes.length; const numEntities = entities.length; + const aabbsForIndexes = []; + const instancedIndexes = []; - const _aabbsForIndexes = []; - const _instancedIndexes = []; - - function entityUsesInstancing (entity) { + const entityUsesInstancing = (entity) => { for (let i = 0, len = entity.meshIds.length; i < len; i++) { if (meshes[entity.meshIds[i]].geometryId) { return true; } } - return false; - }; + } for (let i = 0; i < numEntities; i++) { const entity = entities[i]; // TODO - if (entityUsesInstancing (entity)) { - _instancedIndexes.push (i); + if (entityUsesInstancing(entity)) { + instancedIndexes.push(i); continue; } const aabbEntity = math.collapseAABB3(); - let numTriangles = 0 + let numPrimitives = 0 - entity.meshIds.forEach (meshId => { + entity.meshIds.forEach(meshId => { const mesh = meshes[meshId]; - - const bounds = geometryCompressionUtils.getPositionsBounds(mesh.positions); - - const min = geometryCompressionUtils.decompressPosition(bounds.min, mesh.positionsDecodeMatrix, []); - const max = geometryCompressionUtils.decompressPosition(bounds.max, mesh.positionsDecodeMatrix, []); - + let min; + let max; + if (mesh.positionsCompressed) { + const bounds = geometryCompressionUtils.getPositionsBounds(mesh.positionsCompressed); + min = geometryCompressionUtils.decompressPosition(bounds.min, mesh.positionsDecodeMatrix, []); + max = geometryCompressionUtils.decompressPosition(bounds.max, mesh.positionsDecodeMatrix, []); + } else { + const bounds = geometryCompressionUtils.getPositionsBounds(mesh.positions); + min = bounds.min; + max = bounds.max; + } min[0] += mesh.origin[0]; min[1] += mesh.origin[1]; min[2] += mesh.origin[2]; - max[0] += mesh.origin[0]; max[1] += mesh.origin[1]; max[2] += mesh.origin[2]; - math.expandAABB3Point3(aabbEntity, min); math.expandAABB3Point3(aabbEntity, max); - - numTriangles += Math.round (mesh.indices.length / 3); + numPrimitives += mesh.numPrimitives; }); - _aabbsForIndexes [i] = { + aabbsForIndexes [i] = { aabb: aabbEntity, - numTriangles, + numPrimitives, entityId: entity.id, }; } - let _orderedEntityIds = []; - let _entityIdToClusterIdMapping = {}; + let orderedEntityIds = []; + let entityIdToClusterIdMapping = {}; let rTreeBasedAabbTree; - if (Object.keys(_aabbsForIndexes).length > 0) - { - rTreeBasedAabbTree = generateAABB (_aabbsForIndexes); - - let generateClustersResult = makeClusters ({ + if (Object.keys(aabbsForIndexes).length > 0) { + rTreeBasedAabbTree = generateAABB(aabbsForIndexes); + let generateClustersResult = makeClusters({ aabbTree: rTreeBasedAabbTree, }); - - _orderedEntityIds = generateClustersResult.orderedEntityIds; - _entityIdToClusterIdMapping = generateClustersResult.clusteringResult.entityIdToClusterIdMapping; + orderedEntityIds = generateClustersResult.orderedEntityIds; + entityIdToClusterIdMapping = generateClustersResult.clusteringResult.entityIdToClusterIdMapping; } - // console.log (generateClustersResult); - - return { - orderedClusteredIndexes: _orderedEntityIds, - entityIdToClusterIdMapping: _entityIdToClusterIdMapping, - instancedIndexes: _instancedIndexes, + return { + orderedClusteredIndexes: orderedEntityIds, + entityIdToClusterIdMapping: entityIdToClusterIdMapping, + instancedIndexes: instancedIndexes, rTreeBasedAabbTree }; } -export {clusterizeV2} \ No newline at end of file +function generateAABB(aabbsForIndexes) { + const aabbsToLoad = []; + for (let i = 0, len = aabbsForIndexes.length; i < len; i++) { + const item = aabbsForIndexes [i]; + if (!item) { + continue; + } + aabbsToLoad.push({ + minX: item.aabb [0], + minY: item.aabb [1], + minZ: item.aabb [2], + maxX: item.aabb [3], + maxY: item.aabb [4], + maxZ: item.aabb [5], + entity: { + id: i, + xeokitId: item.entityId, + meshes: [ + { + numPrimitives: item.numPrimitives, + } + ] + }, + numPrimitives: item.numPrimitives, + }); + } + const aabbTree = new RBush3D(4); + aabbTree.load(aabbsToLoad); + return aabbTree; +} diff --git a/src/viewer/scene/vfc/index.js b/src/viewer/scene/vfc/index.js new file mode 100644 index 000000000..689efc209 --- /dev/null +++ b/src/viewer/scene/vfc/index.js @@ -0,0 +1 @@ +export * from "./VFC.js"; \ No newline at end of file diff --git a/src/viewer/scene/vfc/rbush3d.js b/src/viewer/scene/vfc/rbush3d.js new file mode 100644 index 000000000..7efd451e3 --- /dev/null +++ b/src/viewer/scene/vfc/rbush3d.js @@ -0,0 +1,848 @@ +var module = {}; +var exports = {}; + +(function (f) { + if (typeof exports === "object" && typeof module !== "undefined") { + module.exports = f() + } else if (typeof define === "function" && define.amd) { + define([], f) + } else { + var g; + if (typeof window !== "undefined") { + g = window + } else if (typeof global !== "undefined") { + g = global + } else if (typeof self !== "undefined") { + g = self + } else { + g = this + } + g.RBush3D = f() + } +})(function () { + var define, module, exports; + return (function () { + function r(e, n, t) { + function o(i, f) { + if (!n[i]) { + if (!e[i]) { + var c = "function" == typeof require && require; + if (!f && c) return c(i, !0); + if (u) return u(i, !0); + var a = new Error("Cannot find module '" + i + "'"); + throw a.code = "MODULE_NOT_FOUND", a + } + var p = n[i] = {exports: {}}; + e[i][0].call(p.exports, function (r) { + var n = e[i][1][r]; + return o(n || r) + }, p, p.exports, r, e, n, t) + } + return n[i].exports + } + + for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) o(t[i]); + return o + } + + return r + })()({ + 1: [function (require, module, exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", {value: true}); + var quickselect = require('quickselect'); + var nodePool = []; + var freeNode = function (node) { + return nodePool.push(node); + }; + var freeAllNode = function (node) { + if (node) { + freeNode(node); + if (!isLeaf(node)) { + node.children.forEach(freeAllNode); + } + } + }; + var allowNode = function (children) { + var node = nodePool.pop(); + if (node) { + node.children = children; + node.height = 1; + node.leaf = true; + node.minX = Infinity; + node.minY = Infinity; + node.minZ = Infinity; + node.maxX = -Infinity; + node.maxY = -Infinity; + node.maxZ = -Infinity; + } else { + node = { + children: children, + height: 1, + leaf: true, + minX: Infinity, + minY: Infinity, + minZ: Infinity, + maxX: -Infinity, + maxY: -Infinity, + maxZ: -Infinity, + }; + } + return node; + }; + var distNodePool = []; + var freeDistNode = function (node) { + return distNodePool.push(node); + }; + var allowDistNode = function (dist, node) { + var heapNode = distNodePool.pop(); + if (heapNode) { + heapNode.dist = dist; + heapNode.node = node; + } else { + heapNode = {dist: dist, node: node}; + } + return heapNode; + }; + var isLeaf = function (node) { + return node.leaf; + }; + var isLeafChild = function (node, child) { + return node.leaf; + }; + var findItem = function (item, items, equalsFn) { + if (!equalsFn) + return items.indexOf(item); + for (var i = 0; i < items.length; i++) { + if (equalsFn(item, items[i])) + return i; + } + return -1; + }; + var calcBBox = function (node) { + distBBox(node, 0, node.children.length, node); + }; + var distBBox = function (node, k, p, destNode) { + var dNode = destNode; + if (dNode) { + dNode.minX = Infinity; + dNode.minY = Infinity; + dNode.minZ = Infinity; + dNode.maxX = -Infinity; + dNode.maxY = -Infinity; + dNode.maxZ = -Infinity; + } else { + dNode = allowNode([]); + } + for (var i = k, child = void 0; i < p; i++) { + child = node.children[i]; + extend(dNode, child); + } + return dNode; + }; + var extend = function (a, b) { + a.minX = Math.min(a.minX, b.minX); + a.minY = Math.min(a.minY, b.minY); + a.minZ = Math.min(a.minZ, b.minZ); + a.maxX = Math.max(a.maxX, b.maxX); + a.maxY = Math.max(a.maxY, b.maxY); + a.maxZ = Math.max(a.maxZ, b.maxZ); + return a; + }; + var bboxVolume = function (a) { + return (a.maxX - a.minX) * + (a.maxY - a.minY) * + (a.maxZ - a.minZ); + }; + var bboxMargin = function (a) { + return (a.maxX - a.minX) + + (a.maxY - a.minY) + + (a.maxZ - a.minZ); + }; + var enlargedVolume = function (a, b) { + var minX = Math.min(a.minX, b.minX), minY = Math.min(a.minY, b.minY), minZ = Math.min(a.minZ, b.minZ), + maxX = Math.max(a.maxX, b.maxX), maxY = Math.max(a.maxY, b.maxY), maxZ = Math.max(a.maxZ, b.maxZ); + return (maxX - minX) * + (maxY - minY) * + (maxZ - minZ); + }; + var intersectionVolume = function (a, b) { + var minX = Math.max(a.minX, b.minX), minY = Math.max(a.minY, b.minY), minZ = Math.max(a.minZ, b.minZ), + maxX = Math.min(a.maxX, b.maxX), maxY = Math.min(a.maxY, b.maxY), maxZ = Math.min(a.maxZ, b.maxZ); + return Math.max(0, maxX - minX) * + Math.max(0, maxY - minY) * + Math.max(0, maxZ - minZ); + }; + var contains = function (a, b) { + return a.minX <= b.minX && + a.minY <= b.minY && + a.minZ <= b.minZ && + b.maxX <= a.maxX && + b.maxY <= a.maxY && + b.maxZ <= a.maxZ; + }; + exports.intersects = function (a, b) { + return b.minX <= a.maxX && + b.minY <= a.maxY && + b.minZ <= a.maxZ && + b.maxX >= a.minX && + b.maxY >= a.minY && + b.maxZ >= a.minZ; + }; + exports.boxRayIntersects = function (box, ox, oy, oz, idx, idy, idz) { + var tx0 = (box.minX - ox) * idx; + var tx1 = (box.maxX - ox) * idx; + var ty0 = (box.minY - oy) * idy; + var ty1 = (box.maxY - oy) * idy; + var tz0 = (box.minZ - oz) * idz; + var tz1 = (box.maxZ - oz) * idz; + var z0 = Math.min(tz0, tz1); + var z1 = Math.max(tz0, tz1); + var y0 = Math.min(ty0, ty1); + var y1 = Math.max(ty0, ty1); + var x0 = Math.min(tx0, tx1); + var x1 = Math.max(tx0, tx1); + var tmin = Math.max(0, x0, y0, z0); + var tmax = Math.min(x1, y1, z1); + return tmax >= tmin ? tmin : Infinity; + }; + var multiSelect = function (arr, left, right, n, compare) { + var stack = [left, right]; + var mid; + while (stack.length) { + right = stack.pop(); + left = stack.pop(); + if (right - left <= n) + continue; + mid = left + Math.ceil((right - left) / n / 2) * n; + quickselect(arr, mid, left, right, compare); + stack.push(left, mid, mid, right); + } + }; + var compareMinX = function (a, b) { + return a.minX - b.minX; + }; + var compareMinY = function (a, b) { + return a.minY - b.minY; + }; + var compareMinZ = function (a, b) { + return a.minZ - b.minZ; + }; + var RBush3D = (function () { + function RBush3D(maxEntries) { + if (maxEntries === void 0) { + maxEntries = 16; + } + this.maxEntries = Math.max(maxEntries, 8); + this.minEntries = Math.max(4, Math.ceil(this.maxEntries * 0.4)); + this.clear(); + } + + RBush3D.alloc = function () { + return this.pool.pop() || new this(); + }; + RBush3D.free = function (rbush) { + rbush.clear(); + this.pool.push(rbush); + }; + // Start of chipmunk + RBush3D.prototype.searchCustom = function (customIntersects, customContains) { + var node = this.data; + var result = []; + if (!customIntersects(node, isLeafChild(node, child))) + return result; + var nodesToSearch = []; + while (node) { + for (var i = 0, len = node.children.length; i < len; i++) { + var child = node.children[i]; + if (customIntersects(child, isLeafChild(node, child))) { + if (isLeafChild(node, child)) + result.push(child); + else if (customContains(child)) + this._all(child, result); + else + nodesToSearch.push(child); + } + } + node = nodesToSearch.pop(); + } + return result; + }; + RBush3D.prototype.analyzeTriangles = function (node) { + if (node === undefined) { + node = this.data; + } + + var totalTriangles = 0; + + if (isLeaf(node)) { + for (var i = 0, len = node.children.length; i < len; i++) { + totalTriangles += node.children [i].numPrimitives; + } + } else { + for (var i = 0, len = node.children.length; i < len; i++) { + totalTriangles += this.analyzeTriangles(node.children [i]); + } + } + + return node.totalTriangles = totalTriangles; + }; + RBush3D.prototype.groupNodesByNumTrianglesThreshold = function (numPrimitivesThreshold, node) { + if (node === undefined) { + this.analyzeTriangles(); + node = this.data; + } + + var totalTriangles = 0; + + var items = []; + + for (var i = 0, len = node.children.length; i < len; i++) { + var child = node.children[i]; + items.push({ + item: child, + triangles: child.totalTriangles || child.numPrimitives, + }); + } + + items.sort(function (a, b) { + return -(a.item.triangles - b.item.triangles); + }); + + var retVal = []; + var retValItem = []; + var retValItemTris = 0; + + var c = 0; + + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + + if ((retValItemTris + item.triangles) < numPrimitivesThreshold) { + retValItem.push(item); + retValItemTris += item.triangles; + continue; + } + + if (retValItem.length) { + retVal.push(retValItem); + retValItem = []; + retValItemTris = 0; + } + + if ((retValItemTris + item.triangles) < numPrimitivesThreshold) { + i--; + continue; + } + + if (isLeafChild(node, item.item)) { + retVal.push([ + item, + ]); + } else { + var tmp = this.groupNodesByNumTrianglesThreshold( + numPrimitivesThreshold, + item.item + ); + + var tmp2 = []; + var accum2 = 0; + + for (var j = 0, len2 = tmp.length; j < len2 - 1; j++) { + retVal.push(tmp [i]); + } + + if (tmp.length > 1) { + tmp = tmp [tmp.length - 1]; + + for (var j = 0, len2 = tmp.length; j < len2; j++) { + accum2 = accum2 + tmp [j].triangles; + + if (accum2 < numPrimitivesThreshold) { + tmp2.push(tmp[j]); + } else { + if (accum2 == 0) { + tmp2.push(tmp[j]); + } + + retVal.push(tmp2); + + accum2 = 0; + tmp2 = []; + } + } + + tmp2.forEach(function (subItem) { + retValItem.push(subItem); + retValItemTris += subItem.triangles; + }); + } + } + } + + if (retValItem.length) { + retVal.push(retValItem); + } + + return retVal; + } + // End of chipmunk + RBush3D.prototype.search = function (bbox) { + var node = this.data; + var result = []; + if (!exports.intersects(bbox, node)) + return result; + var nodesToSearch = []; + while (node) { + for (var i = 0, len = node.children.length; i < len; i++) { + var child = node.children[i]; + if (exports.intersects(bbox, child)) { + if (isLeafChild(node, child)) + result.push(child); + else if (contains(bbox, child)) + this._all(child, result); + else + nodesToSearch.push(child); + } + } + node = nodesToSearch.pop(); + } + return result; + }; + RBush3D.prototype.collides = function (bbox) { + var node = this.data; + if (!exports.intersects(bbox, node)) + return false; + var nodesToSearch = []; + while (node) { + for (var i = 0, len = node.children.length; i < len; i++) { + var child = node.children[i]; + if (exports.intersects(bbox, child)) { + if (isLeafChild(node, child) || contains(bbox, child)) + return true; + nodesToSearch.push(child); + } + } + node = nodesToSearch.pop(); + } + return false; + }; + RBush3D.prototype.raycastInv = function (ox, oy, oz, idx, idy, idz, maxLen) { + if (maxLen === void 0) { + maxLen = Infinity; + } + var node = this.data; + if (idx === Infinity && idy === Infinity && idz === Infinity) + return allowDistNode(Infinity, undefined); + if (exports.boxRayIntersects(node, ox, oy, oz, idx, idy, idz) === Infinity) + return allowDistNode(Infinity, undefined); + var heap = [allowDistNode(0, node)]; + var swap = function (a, b) { + var t = heap[a]; + heap[a] = heap[b]; + heap[b] = t; + }; + var pop = function () { + var top = heap[0]; + var newLen = heap.length - 1; + heap[0] = heap[newLen]; + heap.length = newLen; + var idx = 0; + while (true) { + var left = (idx << 1) | 1; + if (left >= newLen) + break; + var right = left + 1; + if (right < newLen && heap[right].dist < heap[left].dist) { + left = right; + } + if (heap[idx].dist < heap[left].dist) + break; + swap(idx, left); + idx = left; + } + freeDistNode(top); + return top.node; + }; + var push = function (dist, node) { + var idx = heap.length; + heap.push(allowDistNode(dist, node)); + while (idx > 0) { + var p = (idx - 1) >> 1; + if (heap[p].dist <= heap[idx].dist) + break; + swap(idx, p); + idx = p; + } + }; + var dist = maxLen; + var result; + while (heap.length && heap[0].dist < dist) { + node = pop(); + for (var i = 0, len = node.children.length; i < len; i++) { + var child = node.children[i]; + var d = exports.boxRayIntersects(child, ox, oy, oz, idx, idy, idz); + if (!isLeafChild(node, child)) { + push(d, child); + } else if (d < dist) { + if (d === 0) { + return allowDistNode(d, child); + } + dist = d; + result = child; + } + } + } + return allowDistNode(dist < maxLen ? dist : Infinity, result); + }; + RBush3D.prototype.raycast = function (ox, oy, oz, dx, dy, dz, maxLen) { + if (maxLen === void 0) { + maxLen = Infinity; + } + return this.raycastInv(ox, oy, oz, 1 / dx, 1 / dy, 1 / dz, maxLen); + }; + RBush3D.prototype.all = function () { + return this._all(this.data, []); + }; + RBush3D.prototype.load = function (data) { + if (!(data && data.length)) + return this; + if (data.length < this.minEntries) { + for (var i = 0, len = data.length; i < len; i++) { + this.insert(data[i]); + } + return this; + } + var node = this.build(data.slice(), 0, data.length - 1, 0); + if (!this.data.children.length) { + this.data = node; + } else if (this.data.height === node.height) { + this.splitRoot(this.data, node); + } else { + if (this.data.height < node.height) { + var tmpNode = this.data; + this.data = node; + node = tmpNode; + } + this._insert(node, this.data.height - node.height - 1, true); + } + return this; + }; + RBush3D.prototype.insert = function (item) { + if (item) + this._insert(item, this.data.height - 1); + return this; + }; + RBush3D.prototype.clear = function () { + if (this.data) { + freeAllNode(this.data); + } + this.data = allowNode([]); + return this; + }; + RBush3D.prototype.remove = function (item, equalsFn) { + if (!item) + return this; + var node = this.data; + var i = 0; + var goingUp = false; + var index; + var parent; + var path = []; + var indexes = []; + while (node || path.length) { + if (!node) { + node = path.pop(); + i = indexes.pop(); + parent = path[path.length - 1]; + goingUp = true; + } + if (isLeaf(node)) { + index = findItem(item, node.children, equalsFn); + if (index !== -1) { + node.children.splice(index, 1); + path.push(node); + this.condense(path); + return this; + } + } + if (!goingUp && !isLeaf(node) && contains(node, item)) { + path.push(node); + indexes.push(i); + i = 0; + parent = node; + node = node.children[0]; + } else if (parent) { + i++; + node = parent.children[i]; + goingUp = false; + } else { + node = undefined; + } + } + return this; + }; + RBush3D.prototype.toJSON = function () { + return this.data; + }; + RBush3D.prototype.fromJSON = function (data) { + freeAllNode(this.data); + this.data = data; + return this; + }; + RBush3D.prototype.build = function (items, left, right, height) { + var N = right - left + 1; + var M = this.maxEntries; + var node; + if (N <= M) { + node = allowNode(items.slice(left, right + 1)); + calcBBox(node); + return node; + } + if (!height) { + height = Math.ceil(Math.log(N) / Math.log(M)); + M = Math.ceil(N / Math.pow(M, height - 1)); + } + node = allowNode([]); + node.leaf = false; + node.height = height; + var N3 = Math.ceil(N / M), N2 = N3 * Math.ceil(Math.pow(M, 2 / 3)), + N1 = N3 * Math.ceil(Math.pow(M, 1 / 3)); + multiSelect(items, left, right, N1, compareMinX); + for (var i = left; i <= right; i += N1) { + var right2 = Math.min(i + N1 - 1, right); + multiSelect(items, i, right2, N2, compareMinY); + for (var j = i; j <= right2; j += N2) { + var right3 = Math.min(j + N2 - 1, right2); + multiSelect(items, j, right3, N3, compareMinZ); + for (var k = j; k <= right3; k += N3) { + var right4 = Math.min(k + N3 - 1, right3); + node.children.push(this.build(items, k, right4, height - 1)); + } + } + } + calcBBox(node); + return node; + }; + RBush3D.prototype._all = function (node, result) { + var nodesToSearch = []; + while (node) { + if (isLeaf(node)) + result.push.apply(result, node.children); + else + nodesToSearch.push.apply(nodesToSearch, node.children); + node = nodesToSearch.pop(); + } + return result; + }; + RBush3D.prototype.chooseSubtree = function (bbox, node, level, path) { + var minVolume; + var minEnlargement; + var targetNode; + while (true) { + path.push(node); + if (isLeaf(node) || path.length - 1 === level) + break; + minVolume = minEnlargement = Infinity; + for (var i = 0, len = node.children.length; i < len; i++) { + var child = node.children[i]; + var volume = bboxVolume(child); + var enlargement = enlargedVolume(bbox, child) - volume; + if (enlargement < minEnlargement) { + minEnlargement = enlargement; + minVolume = volume < minVolume ? volume : minVolume; + targetNode = child; + } else if (enlargement === minEnlargement) { + if (volume < minVolume) { + minVolume = volume; + targetNode = child; + } + } + } + node = targetNode || node.children[0]; + } + return node; + }; + RBush3D.prototype.split = function (insertPath, level) { + var node = insertPath[level]; + var M = node.children.length; + var m = this.minEntries; + this.chooseSplitAxis(node, m, M); + var splitIndex = this.chooseSplitIndex(node, m, M); + var newNode = allowNode(node.children.splice(splitIndex, node.children.length - splitIndex)); + newNode.height = node.height; + newNode.leaf = node.leaf; + calcBBox(node); + calcBBox(newNode); + if (level) + insertPath[level - 1].children.push(newNode); + else + this.splitRoot(node, newNode); + }; + RBush3D.prototype.splitRoot = function (node, newNode) { + this.data = allowNode([node, newNode]); + this.data.height = node.height + 1; + this.data.leaf = false; + calcBBox(this.data); + }; + RBush3D.prototype.chooseSplitIndex = function (node, m, M) { + var minOverlap = Infinity; + var minVolume = Infinity; + var index; + for (var i = m; i <= M - m; i++) { + var bbox1 = distBBox(node, 0, i); + var bbox2 = distBBox(node, i, M); + var overlap = intersectionVolume(bbox1, bbox2); + var volume = bboxVolume(bbox1) + bboxVolume(bbox2); + if (overlap < minOverlap) { + minOverlap = overlap; + index = i; + minVolume = volume < minVolume ? volume : minVolume; + } else if (overlap === minOverlap) { + if (volume < minVolume) { + minVolume = volume; + index = i; + } + } + } + return index; + }; + RBush3D.prototype.chooseSplitAxis = function (node, m, M) { + var xMargin = this.allDistMargin(node, m, M, compareMinX); + var yMargin = this.allDistMargin(node, m, M, compareMinY); + var zMargin = this.allDistMargin(node, m, M, compareMinZ); + if (xMargin < yMargin && xMargin < zMargin) { + node.children.sort(compareMinX); + } else if (yMargin < xMargin && yMargin < zMargin) { + node.children.sort(compareMinY); + } + }; + RBush3D.prototype.allDistMargin = function (node, m, M, compare) { + node.children.sort(compare); + var leftBBox = distBBox(node, 0, m); + var rightBBox = distBBox(node, M - m, M); + var margin = bboxMargin(leftBBox) + bboxMargin(rightBBox); + for (var i = m; i < M - m; i++) { + var child = node.children[i]; + extend(leftBBox, child); + margin += bboxMargin(leftBBox); + } + for (var i = M - m - 1; i >= m; i--) { + var child = node.children[i]; + extend(rightBBox, child); + margin += bboxMargin(rightBBox); + } + return margin; + }; + RBush3D.prototype.adjustParentBBoxes = function (bbox, path, level) { + for (var i = level; i >= 0; i--) { + extend(path[i], bbox); + } + }; + RBush3D.prototype.condense = function (path) { + for (var i = path.length - 1, siblings = void 0; i >= 0; i--) { + if (path[i].children.length === 0) { + if (i > 0) { + siblings = path[i - 1].children; + siblings.splice(siblings.indexOf(path[i]), 1); + freeNode(path[i]); + } else { + this.clear(); + } + } else { + calcBBox(path[i]); + } + } + }; + RBush3D.prototype._insert = function (item, level, isNode) { + var insertPath = []; + var node = this.chooseSubtree(item, this.data, level, insertPath); + node.children.push(item); + extend(node, item); + while (level >= 0) { + if (insertPath[level].children.length > this.maxEntries) { + this.split(insertPath, level); + level--; + } else + break; + } + this.adjustParentBBoxes(item, insertPath, level); + }; + RBush3D.pool = []; + return RBush3D; + }()); + exports.RBush3D = RBush3D; + + }, {"quickselect": 2}], 2: [function (require, module, exports) { + (function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.quickselect = factory()); + }(this, (function () { + 'use strict'; + + function quickselect(arr, k, left, right, compare) { + quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare); + } + + function quickselectStep(arr, k, left, right, compare) { + + while (right > left) { + if (right - left > 600) { + var n = right - left + 1; + var m = k - left + 1; + var z = Math.log(n); + var s = 0.5 * Math.exp(2 * z / 3); + var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1); + var newLeft = Math.max(left, Math.floor(k - m * s / n + sd)); + var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd)); + quickselectStep(arr, k, newLeft, newRight, compare); + } + + var t = arr[k]; + var i = left; + var j = right; + + swap(arr, left, k); + if (compare(arr[right], t) > 0) swap(arr, left, right); + + while (i < j) { + swap(arr, i, j); + i++; + j--; + while (compare(arr[i], t) < 0) i++; + while (compare(arr[j], t) > 0) j--; + } + + if (compare(arr[left], t) === 0) swap(arr, left, j); + else { + j++; + swap(arr, j, right); + } + + if (j <= k) left = j + 1; + if (k <= j) right = j - 1; + } + } + + function swap(arr, i, j) { + var tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; + } + + function defaultCompare(a, b) { + return a < b ? -1 : a > b ? 1 : 0; + } + + return quickselect; + + }))); + + }, {}] + }, {}, [1])(1) +}); + +var tmp0 = module.exports.RBush3D; + +export {tmp0 as RBush3D}; diff --git a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/xeokit-cluster.js b/src/viewer/scene/vfc/xeokit-cluster.js similarity index 95% rename from src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/xeokit-cluster.js rename to src/viewer/scene/vfc/xeokit-cluster.js index 56e04d39b..7dfe76c2f 100644 --- a/src/viewer/scene/models/DataTextureSceneModel/lib/layers/trianglesDataTexture/xeokit-cluster.js +++ b/src/viewer/scene/vfc/xeokit-cluster.js @@ -6,13 +6,13 @@ var makeClusters = function (inputData) { function countEntityTriangles (entity) { - var numTriangles = 0; + var numPrimitives = 0; entity.meshes.forEach (function (mesh) { - numTriangles += mesh.numTriangles; + numPrimitives += mesh.numPrimitives; }); - return numTriangles; + return numPrimitives; } function scanCellsForEntities (cellSideInMeters, entityFilterFunc) @@ -106,12 +106,12 @@ var makeClusters = function (inputData) { var numCellsForEntity = entityCells.length; var entity = cellsByEntity[entityId].entity; - var numTriangles = countEntityTriangles (entity); + var numPrimitives = countEntityTriangles (entity); trianglesForEntityCellsCount [numCellsForEntity] = - (trianglesForEntityCellsCount [numCellsForEntity] || 0) + numTriangles; + (trianglesForEntityCellsCount [numCellsForEntity] || 0) + numPrimitives; - totalTriangles += numTriangles; + totalTriangles += numPrimitives; }); var cellsCounts = Object.keys (trianglesForEntityCellsCount); @@ -258,9 +258,9 @@ var makeClusters = function (inputData) { for (; i < entitiesToProcess.length; i++) { var entity = entitiesToProcess [i]; - var numTriangles = countEntityTriangles (entity); + var numPrimitives = countEntityTriangles (entity); - if (numTriangles > remainingTriangles) + if (numPrimitives > remainingTriangles) { entityClusters.push (accumEntities); accumEntities = []; @@ -268,7 +268,7 @@ var makeClusters = function (inputData) { } accumEntities.push (entity); - remainingTriangles -= numTriangles; + remainingTriangles -= numPrimitives; } } while (i < entitiesToProcess.length); @@ -294,9 +294,9 @@ var makeClusters = function (inputData) { var accumEntities = []; unClusteredEntities.forEach (function (entity) { - var numTriangles = countEntityTriangles (entity); + var numPrimitives = countEntityTriangles (entity); - if (numTriangles > remainingTriangles) + if (numPrimitives > remainingTriangles) { entityClusters.push (accumEntities); accumEntities = []; @@ -304,7 +304,7 @@ var makeClusters = function (inputData) { } accumEntities.push (entity); - remainingTriangles -= numTriangles; + remainingTriangles -= numPrimitives; }); if (accumEntities.length) diff --git a/src/viewer/scene/webgl/PickResult.js b/src/viewer/scene/webgl/PickResult.js index e17386017..635c51f34 100644 --- a/src/viewer/scene/webgl/PickResult.js +++ b/src/viewer/scene/webgl/PickResult.js @@ -135,7 +135,6 @@ class PickResult { /** * Picked triangle's vertex indices. - * Only defined when an entity and triangle was picked. * @property indices * @type {Int32Array} */ @@ -159,8 +158,7 @@ class PickResult { } /** - * Picked Local-space point on surface. - * Only defined when an entity and a point on its surface was picked. + * Picked Local-space point. * @property localPos * @type {Number[]} */ @@ -184,13 +182,12 @@ class PickResult { } /** - * Picked World-space point on surface. - * Only defined when an entity and a point on its surface was picked. + * Picked World-space point. * @property worldPos * @type {Number[]} */ get worldPos() { - return this.entity && this._gotWorldPos ? this._worldPos : null; + return this._gotWorldPos ? this._worldPos : null; } /** @@ -209,8 +206,7 @@ class PickResult { } /** - * Picked View-space point on surface. - * Only defined when an entity and a point on its surface was picked. + * Picked View-space point. * @property viewPos * @type {Number[]} */ @@ -235,7 +231,6 @@ class PickResult { /** * Barycentric coordinate within picked triangle. - * Only defined when an entity and a point on its surface was picked. * @property bary * @type {Number[]} */ @@ -260,7 +255,6 @@ class PickResult { /** * Normal vector at picked position on surface. - * Only defined when an entity and a point on its surface was picked. * @property worldNormal * @type {Number[]} */ @@ -285,7 +279,6 @@ class PickResult { /** * UV coordinates at picked position on surface. - * Only defined when an entity and a point on its surface was picked. * @property uv * @type {Number[]} */ diff --git a/src/viewer/scene/webgl/Renderer.js b/src/viewer/scene/webgl/Renderer.js index 6d5e14699..803b573bd 100644 --- a/src/viewer/scene/webgl/Renderer.js +++ b/src/viewer/scene/webgl/Renderer.js @@ -8,10 +8,9 @@ import {OcclusionTester} from "./occlusion/OcclusionTester.js"; import {SAOOcclusionRenderer} from "./sao/SAOOcclusionRenderer.js"; import {createRTCViewMat} from "../math/rtcCoords.js"; import {SAODepthLimitedBlurRenderer} from "./sao/SAODepthLimitedBlurRenderer.js"; -import {RenderBuffer} from "./RenderBuffer.js"; import {RenderBufferManager} from "./RenderBufferManager.js"; import {getExtension} from "./getExtension.js"; -import {DataTextureSceneModel} from "../models/DataTextureSceneModel/DataTextureSceneModel.js" +import {SceneModel} from "../model/SceneModel.js" /** * @private @@ -55,6 +54,8 @@ const Renderer = function (scene, options) { const saoOcclusionRenderer = new SAOOcclusionRenderer(scene); const saoDepthLimitedBlurRenderer = new SAODepthLimitedBlurRenderer(scene); + this.scene = scene; + this._occlusionTester = null; // Lazy-created in #addMarker() this.capabilities = { @@ -209,7 +210,8 @@ const Renderer = function (scene, options) { * @returns {Boolean} */ this.needsRender = function () { - return (imageDirty || drawableListDirty || stateSortDirty); + const needsRender = (imageDirty || drawableListDirty || stateSortDirty); + return needsRender; } /** @@ -470,9 +472,8 @@ const Renderer = function (scene, options) { shadowRenderBuf.unbind(); } - function drawColor (params) - { - // const drawColor = (function () { // Draws the drawables in drawableListSorted + function drawColor(params) { + const normalDrawSAOBin = []; const normalEdgesOpaqueBin = []; const normalFillTransparentBin = []; @@ -493,416 +494,411 @@ const Renderer = function (scene, options) { const selectedFillTransparentBin = []; const selectedEdgesTransparentBin = []; - // return function (params) { - { - const ambientColorAndIntensity = scene._lightsState.getAmbientColorAndIntensity(); - - frameCtx.reset(); - frameCtx.pass = params.pass; - frameCtx.withSAO = false; - frameCtx.pbrEnabled = pbrEnabled && !!scene.pbrEnabled; - frameCtx.colorTextureEnabled = colorTextureEnabled && !!scene.colorTextureEnabled; + const ambientColorAndIntensity = scene._lightsState.getAmbientColorAndIntensity(); - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + frameCtx.reset(); + frameCtx.pass = params.pass; + frameCtx.withSAO = false; + frameCtx.pbrEnabled = pbrEnabled && !!scene.pbrEnabled; + frameCtx.colorTextureEnabled = colorTextureEnabled && !!scene.colorTextureEnabled; - if (canvasTransparent) { - gl.clearColor(0, 0, 0, 0); - } else { - const backgroundColor = scene.canvas.backgroundColorFromAmbientLight ? ambientColorAndIntensity : scene.canvas.backgroundColor; - gl.clearColor(backgroundColor[0], backgroundColor[1], backgroundColor[2], 1.0); - } + gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); - gl.enable(gl.DEPTH_TEST); - gl.frontFace(gl.CCW); - gl.enable(gl.CULL_FACE); - gl.depthMask(true); - gl.lineWidth(1); + if (canvasTransparent) { + gl.clearColor(0, 0, 0, 0); + } else { + const backgroundColor = scene.canvas.backgroundColorFromAmbientLight ? ambientColorAndIntensity : scene.canvas.backgroundColor; + gl.clearColor(backgroundColor[0], backgroundColor[1], backgroundColor[2], 1.0); + } - frameCtx.lineWidth = 1; + gl.enable(gl.DEPTH_TEST); + gl.frontFace(gl.CCW); + gl.enable(gl.CULL_FACE); + gl.depthMask(true); + gl.lineWidth(1); - const saoPossible = scene.sao.possible; + frameCtx.lineWidth = 1; - if (saoEnabled && saoPossible) { - const occlusionRenderBuffer1 = renderBufferManager.getRenderBuffer("saoOcclusion"); - frameCtx.occlusionTexture = occlusionRenderBuffer1 ? occlusionRenderBuffer1.getTexture() : null; - } else { - frameCtx.occlusionTexture = null; + const saoPossible = scene.sao.possible; - } + if (saoEnabled && saoPossible) { + const occlusionRenderBuffer1 = renderBufferManager.getRenderBuffer("saoOcclusion"); + frameCtx.occlusionTexture = occlusionRenderBuffer1 ? occlusionRenderBuffer1.getTexture() : null; + } else { + frameCtx.occlusionTexture = null; - let i; - let len; - let drawable; + } - const startTime = Date.now(); + let i; + let len; + let drawable; - if (bindOutputFrameBuffer) { - bindOutputFrameBuffer(params.pass); - } + const startTime = Date.now(); - if (params.clear !== false) { - gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); - } + if (bindOutputFrameBuffer) { + bindOutputFrameBuffer(params.pass); + } - let normalDrawSAOBinLen = 0; - let normalEdgesOpaqueBinLen = 0; - let normalFillTransparentBinLen = 0; - let normalEdgesTransparentBinLen = 0; + if (params.clear !== false) { + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + } - let xrayedFillOpaqueBinLen = 0; - let xrayEdgesOpaqueBinLen = 0; - let xrayedFillTransparentBinLen = 0; - let xrayEdgesTransparentBinLen = 0; + let normalDrawSAOBinLen = 0; + let normalEdgesOpaqueBinLen = 0; + let normalFillTransparentBinLen = 0; + let normalEdgesTransparentBinLen = 0; - let highlightedFillOpaqueBinLen = 0; - let highlightedEdgesOpaqueBinLen = 0; - let highlightedFillTransparentBinLen = 0; - let highlightedEdgesTransparentBinLen = 0; + let xrayedFillOpaqueBinLen = 0; + let xrayEdgesOpaqueBinLen = 0; + let xrayedFillTransparentBinLen = 0; + let xrayEdgesTransparentBinLen = 0; - let selectedFillOpaqueBinLen = 0; - let selectedEdgesOpaqueBinLen = 0; - let selectedFillTransparentBinLen = 0; - let selectedEdgesTransparentBinLen = 0; + let highlightedFillOpaqueBinLen = 0; + let highlightedEdgesOpaqueBinLen = 0; + let highlightedFillTransparentBinLen = 0; + let highlightedEdgesTransparentBinLen = 0; - //------------------------------------------------------------------------------------------------------ - // Render normal opaque solids, defer others to bins to render after - //------------------------------------------------------------------------------------------------------ + let selectedFillOpaqueBinLen = 0; + let selectedEdgesOpaqueBinLen = 0; + let selectedFillTransparentBinLen = 0; + let selectedEdgesTransparentBinLen = 0; - for (let type in drawableTypeInfo) { - if (drawableTypeInfo.hasOwnProperty(type)) { + //------------------------------------------------------------------------------------------------------ + // Render normal opaque solids, defer others to bins to render after + //------------------------------------------------------------------------------------------------------ - const drawableInfo = drawableTypeInfo[type]; - const drawableList = drawableInfo.drawableList; + for (let type in drawableTypeInfo) { + if (drawableTypeInfo.hasOwnProperty(type)) { - for (i = 0, len = drawableList.length; i < len; i++) { + const drawableInfo = drawableTypeInfo[type]; + const drawableList = drawableInfo.drawableList; - drawable = drawableList[i]; + for (i = 0, len = drawableList.length; i < len; i++) { - if (drawable.culled === true || drawable.visible === false) { - continue; - } + drawable = drawableList[i]; - const renderFlags = drawable.renderFlags; + if (drawable.culled === true || drawable.visible === false) { + continue; + } - if (renderFlags.colorOpaque) { - if (saoEnabled && saoPossible && drawable.saoEnabled) { - normalDrawSAOBin[normalDrawSAOBinLen++] = drawable; - } else { - drawable.drawColorOpaque(frameCtx); - } - } + const renderFlags = drawable.renderFlags; - if (transparentEnabled) { - if (renderFlags.colorTransparent) { - normalFillTransparentBin[normalFillTransparentBinLen++] = drawable; - } + if (renderFlags.colorOpaque) { + if (saoEnabled && saoPossible && drawable.saoEnabled) { + normalDrawSAOBin[normalDrawSAOBinLen++] = drawable; + } else { + drawable.drawColorOpaque(frameCtx); } + } - if (renderFlags.xrayedSilhouetteTransparent) { - xrayedFillTransparentBin[xrayedFillTransparentBinLen++] = drawable; + if (transparentEnabled) { + if (renderFlags.colorTransparent) { + normalFillTransparentBin[normalFillTransparentBinLen++] = drawable; } + } - if (renderFlags.xrayedSilhouetteOpaque) { - xrayedFillOpaqueBin[xrayedFillOpaqueBinLen++] = drawable; - } + if (renderFlags.xrayedSilhouetteTransparent) { + xrayedFillTransparentBin[xrayedFillTransparentBinLen++] = drawable; + } - if (renderFlags.highlightedSilhouetteTransparent) { - highlightedFillTransparentBin[highlightedFillTransparentBinLen++] = drawable; - } + if (renderFlags.xrayedSilhouetteOpaque) { + xrayedFillOpaqueBin[xrayedFillOpaqueBinLen++] = drawable; + } - if (renderFlags.highlightedSilhouetteOpaque) { - highlightedFillOpaqueBin[highlightedFillOpaqueBinLen++] = drawable; - } + if (renderFlags.highlightedSilhouetteTransparent) { + highlightedFillTransparentBin[highlightedFillTransparentBinLen++] = drawable; + } - if (renderFlags.selectedSilhouetteTransparent) { - selectedFillTransparentBin[selectedFillTransparentBinLen++] = drawable; - } + if (renderFlags.highlightedSilhouetteOpaque) { + highlightedFillOpaqueBin[highlightedFillOpaqueBinLen++] = drawable; + } - if (renderFlags.selectedSilhouetteOpaque) { - selectedFillOpaqueBin[selectedFillOpaqueBinLen++] = drawable; - } + if (renderFlags.selectedSilhouetteTransparent) { + selectedFillTransparentBin[selectedFillTransparentBinLen++] = drawable; + } - if (edgesEnabled) { - if (renderFlags.edgesOpaque) { - normalEdgesOpaqueBin[normalEdgesOpaqueBinLen++] = drawable; - } + if (renderFlags.selectedSilhouetteOpaque) { + selectedFillOpaqueBin[selectedFillOpaqueBinLen++] = drawable; + } - if (renderFlags.edgesTransparent) { - normalEdgesTransparentBin[normalEdgesTransparentBinLen++] = drawable; - } - } - if (renderFlags.selectedEdgesTransparent) { - selectedEdgesTransparentBin[selectedEdgesTransparentBinLen++] = drawable; + if (edgesEnabled) { + if (renderFlags.edgesOpaque) { + normalEdgesOpaqueBin[normalEdgesOpaqueBinLen++] = drawable; } - if (renderFlags.selectedEdgesOpaque) { - selectedEdgesOpaqueBin[selectedEdgesOpaqueBinLen++] = drawable; + if (renderFlags.edgesTransparent) { + normalEdgesTransparentBin[normalEdgesTransparentBinLen++] = drawable; } + } + if (renderFlags.selectedEdgesTransparent) { + selectedEdgesTransparentBin[selectedEdgesTransparentBinLen++] = drawable; + } - if (renderFlags.xrayedEdgesTransparent) { - xrayEdgesTransparentBin[xrayEdgesTransparentBinLen++] = drawable; - } + if (renderFlags.selectedEdgesOpaque) { + selectedEdgesOpaqueBin[selectedEdgesOpaqueBinLen++] = drawable; + } - if (renderFlags.xrayedEdgesOpaque) { - xrayEdgesOpaqueBin[xrayEdgesOpaqueBinLen++] = drawable; - } + if (renderFlags.xrayedEdgesTransparent) { + xrayEdgesTransparentBin[xrayEdgesTransparentBinLen++] = drawable; + } - if (renderFlags.highlightedEdgesTransparent) { - highlightedEdgesTransparentBin[highlightedEdgesTransparentBinLen++] = drawable; - } + if (renderFlags.xrayedEdgesOpaque) { + xrayEdgesOpaqueBin[xrayEdgesOpaqueBinLen++] = drawable; + } - if (renderFlags.highlightedEdgesOpaque) { - highlightedEdgesOpaqueBin[highlightedEdgesOpaqueBinLen++] = drawable; - } + if (renderFlags.highlightedEdgesTransparent) { + highlightedEdgesTransparentBin[highlightedEdgesTransparentBinLen++] = drawable; + } + + if (renderFlags.highlightedEdgesOpaque) { + highlightedEdgesOpaqueBin[highlightedEdgesOpaqueBinLen++] = drawable; } } } + } - //------------------------------------------------------------------------------------------------------ - // Render deferred bins - //------------------------------------------------------------------------------------------------------ + //------------------------------------------------------------------------------------------------------ + // Render deferred bins + //------------------------------------------------------------------------------------------------------ - // Opaque color with SAO + // Opaque color with SAO - if (normalDrawSAOBinLen > 0) { - frameCtx.withSAO = true; - for (i = 0; i < normalDrawSAOBinLen; i++) { - normalDrawSAOBin[i].drawColorOpaque(frameCtx); - } + if (normalDrawSAOBinLen > 0) { + frameCtx.withSAO = true; + for (i = 0; i < normalDrawSAOBinLen; i++) { + normalDrawSAOBin[i].drawColorOpaque(frameCtx); } + } - // Opaque edges + // Opaque edges - if (normalEdgesOpaqueBinLen > 0) { - for (i = 0; i < normalEdgesOpaqueBinLen; i++) { - normalEdgesOpaqueBin[i].drawEdgesColorOpaque(frameCtx); - } + if (normalEdgesOpaqueBinLen > 0) { + for (i = 0; i < normalEdgesOpaqueBinLen; i++) { + normalEdgesOpaqueBin[i].drawEdgesColorOpaque(frameCtx); } + } - // Opaque X-ray fill + // Opaque X-ray fill - if (xrayedFillOpaqueBinLen > 0) { - for (i = 0; i < xrayedFillOpaqueBinLen; i++) { - xrayedFillOpaqueBin[i].drawSilhouetteXRayed(frameCtx); - } + if (xrayedFillOpaqueBinLen > 0) { + for (i = 0; i < xrayedFillOpaqueBinLen; i++) { + xrayedFillOpaqueBin[i].drawSilhouetteXRayed(frameCtx); } + } - // Opaque X-ray edges + // Opaque X-ray edges - if (xrayEdgesOpaqueBinLen > 0) { - for (i = 0; i < xrayEdgesOpaqueBinLen; i++) { - xrayEdgesOpaqueBin[i].drawEdgesXRayed(frameCtx); - } + if (xrayEdgesOpaqueBinLen > 0) { + for (i = 0; i < xrayEdgesOpaqueBinLen; i++) { + xrayEdgesOpaqueBin[i].drawEdgesXRayed(frameCtx); } + } - // Transparent + // Transparent - if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { - gl.enable(gl.CULL_FACE); - gl.enable(gl.BLEND); - if (canvasTransparent) { - gl.blendEquation(gl.FUNC_ADD); - gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - } else { - gl.blendEquation(gl.FUNC_ADD); - gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - } - frameCtx.backfaces = false; - if (!alphaDepthMask) { - gl.depthMask(false); - } + if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { + gl.enable(gl.CULL_FACE); + gl.enable(gl.BLEND); + if (canvasTransparent) { + gl.blendEquation(gl.FUNC_ADD); + gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + } else { + gl.blendEquation(gl.FUNC_ADD); + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + } + frameCtx.backfaces = false; + if (!alphaDepthMask) { + gl.depthMask(false); + } - // Transparent color edges + // Transparent color edges - if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { - gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - } - if (normalEdgesTransparentBinLen > 0) { - for (i = 0; i < normalEdgesTransparentBinLen; i++) { - drawable = normalEdgesTransparentBin[i]; - drawable.drawEdgesColorTransparent(frameCtx); - } + if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) { + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + } + if (normalEdgesTransparentBinLen > 0) { + for (i = 0; i < normalEdgesTransparentBinLen; i++) { + drawable = normalEdgesTransparentBin[i]; + drawable.drawEdgesColorTransparent(frameCtx); } + } - // Transparent color fill + // Transparent color fill - if (normalFillTransparentBinLen > 0) { - for (i = 0; i < normalFillTransparentBinLen; i++) { - drawable = normalFillTransparentBin[i]; - drawable.drawColorTransparent(frameCtx); - } + if (normalFillTransparentBinLen > 0) { + for (i = 0; i < normalFillTransparentBinLen; i++) { + drawable = normalFillTransparentBin[i]; + drawable.drawColorTransparent(frameCtx); } + } - // Transparent X-ray edges + // Transparent X-ray edges - if (xrayEdgesTransparentBinLen > 0) { - for (i = 0; i < xrayEdgesTransparentBinLen; i++) { - xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx); - } + if (xrayEdgesTransparentBinLen > 0) { + for (i = 0; i < xrayEdgesTransparentBinLen; i++) { + xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx); } + } - // Transparent X-ray fill + // Transparent X-ray fill - if (xrayedFillTransparentBinLen > 0) { - for (i = 0; i < xrayedFillTransparentBinLen; i++) { - xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx); - } + if (xrayedFillTransparentBinLen > 0) { + for (i = 0; i < xrayedFillTransparentBinLen; i++) { + xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx); } + } - gl.disable(gl.BLEND); - if (!alphaDepthMask) { - gl.depthMask(true); - } + gl.disable(gl.BLEND); + if (!alphaDepthMask) { + gl.depthMask(true); } + } - // Opaque highlight + // Opaque highlight - if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) { - frameCtx.lastProgramId = null; - if (scene.highlightMaterial.glowThrough) { - gl.clear(gl.DEPTH_BUFFER_BIT); - } + if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) { + frameCtx.lastProgramId = null; + if (scene.highlightMaterial.glowThrough) { + gl.clear(gl.DEPTH_BUFFER_BIT); + } - // Opaque highlighted edges + // Opaque highlighted edges - if (highlightedEdgesOpaqueBinLen > 0) { - for (i = 0; i < highlightedEdgesOpaqueBinLen; i++) { - highlightedEdgesOpaqueBin[i].drawEdgesHighlighted(frameCtx); - } + if (highlightedEdgesOpaqueBinLen > 0) { + for (i = 0; i < highlightedEdgesOpaqueBinLen; i++) { + highlightedEdgesOpaqueBin[i].drawEdgesHighlighted(frameCtx); } + } - // Opaque highlighted fill + // Opaque highlighted fill - if (highlightedFillOpaqueBinLen > 0) { - for (i = 0; i < highlightedFillOpaqueBinLen; i++) { - highlightedFillOpaqueBin[i].drawSilhouetteHighlighted(frameCtx); - } + if (highlightedFillOpaqueBinLen > 0) { + for (i = 0; i < highlightedFillOpaqueBinLen; i++) { + highlightedFillOpaqueBin[i].drawSilhouetteHighlighted(frameCtx); } } + } - // Highlighted transparent + // Highlighted transparent - if (highlightedFillTransparentBinLen > 0 || highlightedEdgesTransparentBinLen > 0 || highlightedFillOpaqueBinLen > 0) { - frameCtx.lastProgramId = null; - if (scene.selectedMaterial.glowThrough) { - gl.clear(gl.DEPTH_BUFFER_BIT); - } - gl.enable(gl.BLEND); - if (canvasTransparent) { - gl.blendEquation(gl.FUNC_ADD); - gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - } else { - gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - } - gl.enable(gl.CULL_FACE); + if (highlightedFillTransparentBinLen > 0 || highlightedEdgesTransparentBinLen > 0 || highlightedFillOpaqueBinLen > 0) { + frameCtx.lastProgramId = null; + if (scene.selectedMaterial.glowThrough) { + gl.clear(gl.DEPTH_BUFFER_BIT); + } + gl.enable(gl.BLEND); + if (canvasTransparent) { + gl.blendEquation(gl.FUNC_ADD); + gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + } else { + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + } + gl.enable(gl.CULL_FACE); - // Highlighted transparent edges + // Highlighted transparent edges - if (highlightedEdgesTransparentBinLen > 0) { - for (i = 0; i < highlightedEdgesTransparentBinLen; i++) { - highlightedEdgesTransparentBin[i].drawEdgesHighlighted(frameCtx); - } + if (highlightedEdgesTransparentBinLen > 0) { + for (i = 0; i < highlightedEdgesTransparentBinLen; i++) { + highlightedEdgesTransparentBin[i].drawEdgesHighlighted(frameCtx); } + } - // Highlighted transparent fill + // Highlighted transparent fill - if (highlightedFillTransparentBinLen > 0) { - for (i = 0; i < highlightedFillTransparentBinLen; i++) { - highlightedFillTransparentBin[i].drawSilhouetteHighlighted(frameCtx); - } + if (highlightedFillTransparentBinLen > 0) { + for (i = 0; i < highlightedFillTransparentBinLen; i++) { + highlightedFillTransparentBin[i].drawSilhouetteHighlighted(frameCtx); } - gl.disable(gl.BLEND); } + gl.disable(gl.BLEND); + } - // Selected opaque + // Selected opaque - if (selectedFillOpaqueBinLen > 0 || selectedEdgesOpaqueBinLen > 0) { - frameCtx.lastProgramId = null; - if (scene.selectedMaterial.glowThrough) { - gl.clear(gl.DEPTH_BUFFER_BIT); - } + if (selectedFillOpaqueBinLen > 0 || selectedEdgesOpaqueBinLen > 0) { + frameCtx.lastProgramId = null; + if (scene.selectedMaterial.glowThrough) { + gl.clear(gl.DEPTH_BUFFER_BIT); + } - // Selected opaque fill + // Selected opaque fill - if (selectedEdgesOpaqueBinLen > 0) { - for (i = 0; i < selectedEdgesOpaqueBinLen; i++) { - selectedEdgesOpaqueBin[i].drawEdgesSelected(frameCtx); - } + if (selectedEdgesOpaqueBinLen > 0) { + for (i = 0; i < selectedEdgesOpaqueBinLen; i++) { + selectedEdgesOpaqueBin[i].drawEdgesSelected(frameCtx); } + } - // Selected opaque edges + // Selected opaque edges - if (selectedFillOpaqueBinLen > 0) { - for (i = 0; i < selectedFillOpaqueBinLen; i++) { - selectedFillOpaqueBin[i].drawSilhouetteSelected(frameCtx); - } + if (selectedFillOpaqueBinLen > 0) { + for (i = 0; i < selectedFillOpaqueBinLen; i++) { + selectedFillOpaqueBin[i].drawSilhouetteSelected(frameCtx); } } + } - // Selected transparent + // Selected transparent - if (selectedFillTransparentBinLen > 0 || selectedEdgesTransparentBinLen > 0) { - frameCtx.lastProgramId = null; - if (scene.selectedMaterial.glowThrough) { - gl.clear(gl.DEPTH_BUFFER_BIT); - } - gl.enable(gl.CULL_FACE); - gl.enable(gl.BLEND); - if (canvasTransparent) { - gl.blendEquation(gl.FUNC_ADD); - gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); - } else { - gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - } + if (selectedFillTransparentBinLen > 0 || selectedEdgesTransparentBinLen > 0) { + frameCtx.lastProgramId = null; + if (scene.selectedMaterial.glowThrough) { + gl.clear(gl.DEPTH_BUFFER_BIT); + } + gl.enable(gl.CULL_FACE); + gl.enable(gl.BLEND); + if (canvasTransparent) { + gl.blendEquation(gl.FUNC_ADD); + gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + } else { + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + } - // Selected transparent edges + // Selected transparent edges - if (selectedEdgesTransparentBinLen > 0) { - for (i = 0; i < selectedEdgesTransparentBinLen; i++) { - selectedEdgesTransparentBin[i].drawEdgesSelected(frameCtx); - } + if (selectedEdgesTransparentBinLen > 0) { + for (i = 0; i < selectedEdgesTransparentBinLen; i++) { + selectedEdgesTransparentBin[i].drawEdgesSelected(frameCtx); } + } - // Selected transparent fill + // Selected transparent fill - if (selectedFillTransparentBinLen > 0) { - for (i = 0; i < selectedFillTransparentBinLen; i++) { - selectedFillTransparentBin[i].drawSilhouetteSelected(frameCtx); - } + if (selectedFillTransparentBinLen > 0) { + for (i = 0; i < selectedFillTransparentBinLen; i++) { + selectedFillTransparentBin[i].drawSilhouetteSelected(frameCtx); } - gl.disable(gl.BLEND); } + gl.disable(gl.BLEND); + } - const endTime = Date.now(); - const frameStats = stats.frame; + const endTime = Date.now(); + const frameStats = stats.frame; - frameStats.renderTime = (endTime - startTime) / 1000.0; - frameStats.drawElements = frameCtx.drawElements; - frameStats.drawArrays = frameCtx.drawArrays; - frameStats.useProgram = frameCtx.useProgram; - frameStats.bindTexture = frameCtx.bindTexture; - frameStats.bindArray = frameCtx.bindArray; + frameStats.renderTime = (endTime - startTime) / 1000.0; + frameStats.drawElements = frameCtx.drawElements; + frameStats.drawArrays = frameCtx.drawArrays; + frameStats.useProgram = frameCtx.useProgram; + frameStats.bindTexture = frameCtx.bindTexture; + frameStats.bindArray = frameCtx.bindArray; - const numTextureUnits = WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS; - for (let ii = 0; ii < numTextureUnits; ii++) { - gl.activeTexture(gl.TEXTURE0 + ii); - } - gl.bindTexture(gl.TEXTURE_CUBE_MAP, null); - gl.bindTexture(gl.TEXTURE_2D, null); + const numTextureUnits = WEBGL_INFO.MAX_TEXTURE_IMAGE_UNITS; + for (let ii = 0; ii < numTextureUnits; ii++) { + gl.activeTexture(gl.TEXTURE0 + ii); + } + gl.bindTexture(gl.TEXTURE_CUBE_MAP, null); + gl.bindTexture(gl.TEXTURE_2D, null); - const numVertexAttribs = WEBGL_INFO.MAX_VERTEX_ATTRIBS; // Fixes https://github.com/xeokit/xeokit-sdk/issues/174 - for (let ii = 0; ii < numVertexAttribs; ii++) { - gl.disableVertexAttribArray(ii); - } + const numVertexAttribs = WEBGL_INFO.MAX_VERTEX_ATTRIBS; // Fixes https://github.com/xeokit/xeokit-sdk/issues/174 + for (let ii = 0; ii < numVertexAttribs; ii++) { + gl.disableVertexAttribArray(ii); + } - if (unbindOutputFrameBuffer) { - unbindOutputFrameBuffer(params.pass); - } - // }; + if (unbindOutputFrameBuffer) { + unbindOutputFrameBuffer(params.pass); } } - // })(); /** * Picks an Entity. @@ -932,7 +928,7 @@ const Renderer = function (scene, options) { pickResult.reset(); updateDrawlist(); - + let look; let pickViewMatrix = null; let pickProjMatrix = null; @@ -986,22 +982,13 @@ const Renderer = function (scene, options) { canvasPos[1] = canvas.clientHeight * 0.5; } - if (null !== pickViewMatrix) - { - // data-textures: update the pick-camera-matrices of all DataTextureSceneModel's - for (let type in drawableTypeInfo) { - if (drawableTypeInfo.hasOwnProperty(type)) { - const drawableList = drawableTypeInfo[type].drawableList; - for (let i = 0, len = drawableList.length; i < len; i++) { - const drawable = drawableList[i]; - if (drawable instanceof DataTextureSceneModel) { - if (drawable.pickCameraTexture) { - drawable.pickCameraTexture._updateViewMatrix ( - pickViewMatrix, - pickProjMatrix - ); - } - } + for (let type in drawableTypeInfo) { + if (drawableTypeInfo.hasOwnProperty(type)) { + const drawableList = drawableTypeInfo[type].drawableList; + for (let i = 0, len = drawableList.length; i < len; i++) { + const drawable = drawableList[i]; + if (drawable.setPickMatrices) { // Eg. SceneModel, which needs pre-loading into texture + drawable.setPickMatrices(pickViewMatrix, pickProjMatrix); } } } @@ -1027,60 +1014,35 @@ const Renderer = function (scene, options) { if (params.pickSurface) { - if (params.pickSurfacePrecision && scene.pickSurfacePrecisionEnabled) { + // GPU-based ray-picking - // JavaScript-based ray-picking - slow and precise + if (pickable.canPickTriangle && pickable.canPickTriangle()) { - if (params.canvasPos) { - math.canvasPosToWorldRay(scene.canvas.canvas, pickViewMatrix, pickProjMatrix, canvasPos, worldRayOrigin, worldRayDir); - } + gpuPickTriangle(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult); - if (pickable.precisionRayPickSurface(worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal)) { + pickable.pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult); - pickResult.worldPos = worldSurfacePos; - - if (params.pickSurfaceNormal !== false) { - pickResult.worldNormal = worldSurfaceNormal; - } - - pickResult.pickSurfacePrecision = true; - } + pickResult.pickSurfacePrecision = false; } else { - // GPU-based ray-picking - fast and imprecise + if (pickable.canPickWorldPos && pickable.canPickWorldPos()) { - if (pickable.canPickTriangle && pickable.canPickTriangle()) { + nearAndFar[0] = scene.camera.project.near; + nearAndFar[1] = scene.camera.project.far; - gpuPickTriangle(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult); + gpuPickWorldPos(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult); - pickable.pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult); + if (params.pickSurfaceNormal !== false) { + gpuPickWorldNormal(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult); + } pickResult.pickSurfacePrecision = false; - - } else { - - if (pickable.canPickWorldPos && pickable.canPickWorldPos()) { - - nearAndFar[0] = scene.camera.project.near; - nearAndFar[1] = scene.camera.project.far; - - gpuPickWorldPos(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult); - - if (params.pickSurfaceNormal !== false) { - gpuPickWorldNormal(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult); - } - - pickResult.pickSurfacePrecision = false; - } } } } - pickBuffer.unbind(); - pickResult.entity = pickedEntity; - return pickResult; }; })(); @@ -1116,7 +1078,7 @@ const Renderer = function (scene, options) { const drawable = drawableList[i]; - if (!drawable.drawPickMesh || drawable.culled === true || (params.pickInvisible !== true && drawable.visible === false) || drawable.pickable === false) { + if (!drawable.drawPickMesh || (params.pickInvisible !== true && drawable.visible === false) || drawable.pickable === false) { continue; } if (includeEntityIds && !includeEntityIds[drawable.id]) { // TODO: push this logic into drawable @@ -1264,15 +1226,14 @@ const Renderer = function (scene, options) { if (drawable.culled === true || drawable.visible === false || !drawable.pickable) { return false; } - - if (!(drawable instanceof DataTextureSceneModel)) { + if (!(drawable instanceof SceneModel)) { return false; } - return true; } - function snapPickInitZBuffer(frameCtx) { + function snapInitDepthBuf(frameCtx) { + /** * @type {Object.} */ @@ -1294,15 +1255,15 @@ const Renderer = function (scene, options) { continue; } - frameCtx._origin = [ 0, 0, 0]; - frameCtx._coordinateScale = [ 1, 1, 1]; - frameCtx._layerNumber = layerNumber; - - drawable.drawVertexZBufferInitializer(frameCtx); + frameCtx._origin = [0, 0, 0]; + frameCtx._coordinateScale = [1, 1, 1]; + frameCtx.layerNumber = layerNumber; + + drawable.drawSnapInitDepthBuf(frameCtx); layerParams[layerNumber] = { - origin: frameCtx._origin.slice (), - coordinateScale: frameCtx._coordinateScale.slice (), + origin: frameCtx._origin.slice(), + coordinateScale: frameCtx._coordinateScale.slice(), }; } } @@ -1311,7 +1272,8 @@ const Renderer = function (scene, options) { return layerParams; } - function snapPickDrawVertexDepths(frameCtx) { + function snapPickDrawSnapDepths(frameCtx) { + /** * @type {Object.} */ @@ -1333,15 +1295,15 @@ const Renderer = function (scene, options) { continue; } - frameCtx._origin = [ 0, 0, 0]; - frameCtx._coordinateScale = [ 1, 1, 1]; - frameCtx._layerNumber = layerNumber; - - drawable.drawVertexDepths(frameCtx); + frameCtx._origin = [0, 0, 0]; + frameCtx._coordinateScale = [1, 1, 1]; + frameCtx.layerNumber = layerNumber; + + drawable.drawSnapDepths(frameCtx); layerParams[layerNumber] = { - origin: frameCtx._origin.slice (), - coordinateScale: frameCtx._coordinateScale.slice (), + origin: frameCtx._origin.slice(), + coordinateScale: frameCtx._coordinateScale.slice(), }; } } @@ -1349,30 +1311,30 @@ const Renderer = function (scene, options) { return layerParams; } - + + function getClipPosX(pos, size) { + return 2 * (pos / size) - 1; + } + + function getClipPosY(pos, size) { + return 1 - 2 * (pos / size); + } + /** - * @param {[number, number]} canvasPos + * @param {[number, number]} canvasPos * @param {number} snapRadiusInPixels - * @param {"vertex"|"edge"} snapMode - * + * @param {"vertex"|"edge"} snapMode + * * @returns {{worldPos:number[],snappedWorldPos:null|number[],snappedCanvasPos:null|number[]}} */ this.snapPick = function (canvasPos, snapRadiusInPixels = 50, snapMode = "vertex") { - // Update the frame context for the renderer - const nearAndFar = [ - scene.camera.project.near, - scene.camera.project.far - ]; frameCtx.reset(); frameCtx.backfaces = true; frameCtx.frontface = true; // "ccw" - frameCtx.pickZNear = nearAndFar[0]; - frameCtx.pickZFar = nearAndFar[1]; + frameCtx.pickZNear = scene.camera.project.near; + frameCtx.pickZFar = scene.camera.project.far; - /** - * @type {RenderBuffer} - */ let vertexPickBuffer = renderBufferManager.getRenderBuffer("uniquePickColors-aabs", { depthTexture: true, size: [ @@ -1381,78 +1343,75 @@ const Renderer = function (scene, options) { ] }); - // Initialize constants for the renderer in the frame context - function getClipPosX(pos, size) { - return 2 * (pos/size) - 1; - } - - function getClipPosY(pos, size) { - return 1 - 2 * (pos/size); - } - - frameCtx._vectorA = [ + frameCtx.snapVectorA = [ getClipPosX(canvasPos[0], gl.drawingBufferWidth), getClipPosY(canvasPos[1], gl.drawingBufferHeight), ]; - frameCtx._invVectorAB = [ + frameCtx.snapInvVectorAB = [ gl.drawingBufferWidth / (2 * snapRadiusInPixels), gl.drawingBufferHeight / (2 * snapRadiusInPixels), ]; - frameCtx._snapMode = snapMode; + frameCtx.snapMode = snapMode; // Bind and clear the snap render target - vertexPickBuffer.bind (gl.RGBA32I); + vertexPickBuffer.bind(gl.RGBA32I); gl.viewport(0, 0, vertexPickBuffer.size[0], vertexPickBuffer.size[1]); - gl.enable(gl.DEPTH_TEST); gl.frontFace(gl.CCW); gl.disable(gl.CULL_FACE); gl.depthMask(true); gl.disable(gl.BLEND); gl.depthFunc(gl.LESS); - gl.clear(gl.DEPTH_BUFFER_BIT); - gl.clearBufferiv(gl.COLOR, 0, new Int32Array([0, 0, 0, 0 ])); + gl.clearBufferiv(gl.COLOR, 0, new Int32Array([0, 0, 0, 0])); - // >>> Invoke the renderers + ////////////////////////////////// + // Set view and proj mats for VBO renderers + /////////////////////////////////////// + + const pickViewMatrix = scene.camera.viewMatrix; + const pickProjMatrix = scene.camera.projMatrix; + + for (let type in drawableTypeInfo) { + if (drawableTypeInfo.hasOwnProperty(type)) { + const drawableList = drawableTypeInfo[type].drawableList; + for (let i = 0, len = drawableList.length; i < len; i++) { + const drawable = drawableList[i]; + if (drawable.setPickMatrices) { // Eg. SceneModel, which needs pre-loading into texture + drawable.setPickMatrices(pickViewMatrix, pickProjMatrix); + } + } + } + } // a) init z-buffer - const layerParamsSurface = snapPickInitZBuffer(frameCtx); + const layerParamsSurface = snapInitDepthBuf(frameCtx); // b) snap-pick - const layerParamsSnap = snapPickDrawVertexDepths(frameCtx); - - // <<< Invoke the renderers + const layerParamsSnap = snapPickDrawSnapDepths(frameCtx); // Read and decode the snapped coordinates - // const snapPickResult = vertexPickBuffer.read(0, 0, gl.RGBA_INTEGER, gl.INT, Int32Array, 4); - const snapPickResultArray = vertexPickBuffer.readArray(gl.RGBA_INTEGER, gl.INT, Int32Array, 4); - // console.log (JSON.stringify(Array.from(snapPickResultArray))); + const snapPickResultArray = vertexPickBuffer.readArray(gl.RGBA_INTEGER, gl.INT, Int32Array, 4); - vertexPickBuffer.unbind (); + vertexPickBuffer.unbind(); // result 1) regular hi-precision world position + let worldPos = null; const middleX = snapRadiusInPixels; const middleY = snapRadiusInPixels; - const middleIndex = (middleX * 4) + (middleY * vertexPickBuffer.size[0] * 4); - - const pickResultMiddleXY = snapPickResultArray.slice (middleIndex, middleIndex + 4); + const pickResultMiddleXY = snapPickResultArray.slice(middleIndex, middleIndex + 4); if (pickResultMiddleXY[3] !== 0) { const pickedLayerParmasSurface = layerParamsSurface[Math.abs(pickResultMiddleXY[3])]; - const origin = pickedLayerParmasSurface.origin; const scale = pickedLayerParmasSurface.coordinateScale; - - // console.log ({origin, scale}); - worldPos = [ pickResultMiddleXY[0] * scale[0] + origin[0], pickResultMiddleXY[1] * scale[1] + origin[1], @@ -1461,33 +1420,26 @@ const Renderer = function (scene, options) { } // result 2) hi-precision snapped (to vertex/edge) world position + let snapPickResult = []; - for (let i = 0; i < snapPickResultArray.length; i+=4) { - if (snapPickResultArray[i+3] > 0) { + for (let i = 0; i < snapPickResultArray.length; i += 4) { + if (snapPickResultArray[i + 3] > 0) { const pixelNumber = Math.floor(i / 4); - const w = vertexPickBuffer.size[0]; const h = vertexPickBuffer.size[1]; - const x = pixelNumber % w - Math.floor(w / 2); const y = Math.floor(pixelNumber / w) - Math.floor(w / 2); - - // console.log ({x, y}); - - const dist = (Math.sqrt( - Math.pow(x, 2) + Math.pow(y, 2) - )); - + const dist = (Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))); snapPickResult.push({ x, y, dist, result: [ - snapPickResultArray[i+0], - snapPickResultArray[i+1], - snapPickResultArray[i+2], - snapPickResultArray[i+3], + snapPickResultArray[i + 0], + snapPickResultArray[i + 1], + snapPickResultArray[i + 2], + snapPickResultArray[i + 3], ] }); } @@ -1514,23 +1466,20 @@ const Renderer = function (scene, options) { ]; } - // If neither regular pick or snap pick, return null - if (null === worldPos && null == snappedWorldPos) { + if (null === worldPos && null == snappedWorldPos) { // If neither regular pick or snap pick, return null return null; } let snappedCanvasPos = null; if (null !== snappedWorldPos) { - snappedCanvasPos = scene.camera.projectWorldPos ( - snappedWorldPos - ); + snappedCanvasPos = scene.camera.projectWorldPos(snappedWorldPos); } return { worldPos, snappedWorldPos, - snappedCanvasPos, + snappedCanvasPos }; }; @@ -1676,7 +1625,7 @@ const Renderer = function (scene, options) { * * Exit snapshot mode using endSnapshot(). */ - this.beginSnapshot = function (params={}) { + this.beginSnapshot = function (params = {}) { const snapshotBuffer = renderBufferManager.getRenderBuffer("snapshot"); if (params.width && params.height) { snapshotBuffer.setSize([params.width, params.height]);