leaflet-city-mapper 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -46
- package/dist/README.md +18 -0
- package/dist/leaflet-city-mapper-src.js +279 -110
- package/dist/leaflet-city-mapper-src.js.map +4 -4
- package/dist/leaflet-city-mapper-worker-src.js.map +2 -2
- package/dist/leaflet-city-mapper-worker.js.map +2 -2
- package/dist/leaflet-city-mapper.js +5 -5
- package/dist/leaflet-city-mapper.js.map +4 -4
- package/libs/README.md +18 -0
- package/libs/leaflet.js +1 -1
- package/package.json +1 -1
- package/src/README.md +148 -0
- package/src/animations/README.md +30 -0
- package/src/animations/cancelCameraAnimation.js +11 -9
- package/src/animations/cancelGridFade.js +5 -3
- package/src/animations/endZoom.js +0 -5
- package/src/animations/mapAnimateCamera.js +13 -3
- package/src/animations/mapStopPitchBearingAnimation.js +9 -2
- package/src/animations/onZoomAnim.js +5 -4
- package/src/animations/renderPendingZoomAnimation.js +1 -4
- package/src/animations/runCameraAnimations.js +7 -4
- package/src/animations/runGridFades.js +1 -4
- package/src/animations/runMarkerPanFrame.js +1 -1
- package/src/animations/scheduleCameraAnimation.js +11 -9
- package/src/animations/scheduleGridFade.js +5 -4
- package/src/animations/scheduleMarkerPan.js +10 -6
- package/src/animations/startZoom.js +0 -3
- package/src/animations/synchronizeZoomView.js +6 -1
- package/src/animations/updateZoomCamera.js +9 -5
- package/src/archives/README.md +28 -0
- package/src/archives/decodeDirectory.js +13 -2
- package/src/archives/decodeHeader.js +9 -2
- package/src/archives/decompress.js +10 -0
- package/src/archives/findDirectoryEntry.js +8 -0
- package/src/archives/findTile.js +14 -0
- package/src/archives/getDirectoryEntries.js +13 -2
- package/src/archives/getHeader.js +7 -2
- package/src/archives/getTileData.js +13 -0
- package/src/archives/getZxy.js +11 -3
- package/src/archives/loadDirectory.js +10 -0
- package/src/archives/loadSource.js +12 -3
- package/src/archives/readArchiveRange.js +18 -4
- package/src/archives/readVarint.js +11 -2
- package/src/archives/tileId.js +11 -2
- package/src/astronomy/README.md +25 -0
- package/src/astronomy/horizontalPosition.js +11 -0
- package/src/astronomy/moonPosition.js +9 -2
- package/src/astronomy/solarPosition.js +9 -2
- package/src/astronomy/solarTime.js +11 -1
- package/src/camera/README.md +30 -0
- package/src/camera/cameraMapReady.js +4 -6
- package/src/camera/cleanupCameraMap.js +6 -8
- package/src/camera/constrainCameraToBounds.js +1 -0
- package/src/camera/createSceneCamera.js +5 -1
- package/src/camera/fitCameraBounds.js +9 -1
- package/src/camera/getBearing.js +5 -0
- package/src/camera/getPitch.js +5 -0
- package/src/camera/initializeCameraMap.js +1 -3
- package/src/camera/mapCamera.js +0 -2
- package/src/camera/mapContainerPointToLayerPoint.js +7 -2
- package/src/camera/mapGetBearing.js +7 -2
- package/src/camera/mapGetBounds.js +5 -2
- package/src/camera/mapGetBoundsCenterZoom.js +13 -6
- package/src/camera/mapGetBoundsZoom.js +9 -2
- package/src/camera/mapGetCenterLayerPoint.js +5 -1
- package/src/camera/mapGetPitch.js +7 -2
- package/src/camera/mapLayerPointToContainerPoint.js +7 -1
- package/src/camera/mapLimitCenter.js +9 -2
- package/src/camera/mapLimitOffset.js +13 -7
- package/src/camera/mapPanBy.js +12 -5
- package/src/camera/mapPanInside.js +8 -2
- package/src/camera/mapResetNorth.js +8 -0
- package/src/camera/mapResetNorthPitch.js +8 -0
- package/src/camera/mapSetBearing.js +10 -0
- package/src/camera/mapSetPitch.js +10 -0
- package/src/camera/mapSetPitchAndBearing.js +12 -3
- package/src/camera/mapSetZoomAround.js +9 -1
- package/src/camera/mapTryAnimatedPan.js +8 -1
- package/src/camera/mapUpdateCameraOverlays.js +6 -0
- package/src/camera/setBearing.js +8 -0
- package/src/camera/setPitch.js +8 -0
- package/src/camera/updateMapCamera.js +6 -4
- package/src/camera/updateSceneCamera.js +7 -1
- package/src/camera/updateSky.js +1 -3
- package/src/cog/README.md +29 -0
- package/src/cog/decodeCogTile.js +13 -0
- package/src/cog/finiteCogValues.js +7 -0
- package/src/cog/getCogAssetEntry.js +11 -0
- package/src/cog/getCogBase.js +12 -0
- package/src/cog/getCogHeader.js +7 -0
- package/src/cog/getCogProfile.js +9 -0
- package/src/cog/getCogTile.js +13 -0
- package/src/cog/getColorTile.js +13 -0
- package/src/cog/getElevationTile.js +13 -0
- package/src/cog/hasCogProjection.js +7 -0
- package/src/cog/initCog.js +6 -0
- package/src/cog/invalidCogFullResponse.js +7 -0
- package/src/cog/openCog.js +11 -1
- package/src/cog/openCogAsset.js +8 -0
- package/src/cog/readCog.js +14 -0
- package/src/cog/readCogBlock.js +11 -0
- package/src/cog/readCogBody.js +10 -0
- package/src/cog/readCogDirectories.js +12 -0
- package/src/cog/readCogDirectory.js +13 -0
- package/src/cog/readCogLevel.js +9 -0
- package/src/cog/readCogTag.js +13 -0
- package/src/cog/validCogDimensions.js +9 -0
- package/src/cog/validCogEncoding.js +13 -0
- package/src/cog/validCogGeoArrays.js +9 -0
- package/src/cog/validCogGrid.js +13 -0
- package/src/cog/validCogTileCoordinates.js +9 -0
- package/src/cog/validateCogContainer.js +8 -0
- package/src/cog/validateCogContentRange.js +10 -0
- package/src/cog/validateCogOffsets.js +9 -0
- package/src/cog/validateCogRange.js +9 -0
- package/src/cog/validateCogResponse.js +11 -0
- package/src/collision/README.md +28 -0
- package/src/collision/advanceFeature.js +13 -0
- package/src/collision/boxNormal.js +29 -0
- package/src/collision/cachedCollider.js +18 -0
- package/src/collision/collectIntersections.js +28 -3
- package/src/collision/collectMeshes.js +6 -0
- package/src/collision/collideTrip.js +56 -0
- package/src/collision/collider.js +28 -18
- package/src/collision/countCrossings.js +35 -15
- package/src/collision/enclosesOrigin.js +13 -0
- package/src/collision/flipsNormal.js +15 -0
- package/src/collision/hiddenLightHit.js +11 -0
- package/src/collision/horizontalRay.js +13 -1
- package/src/collision/indexTriangle.js +7 -0
- package/src/collision/insideMesh.js +16 -2
- package/src/collision/insideWalker.js +7 -1
- package/src/collision/intersectMeshes.js +9 -1
- package/src/collision/localRay.js +10 -0
- package/src/collision/mergeHits.js +8 -0
- package/src/collision/missesBox.js +13 -0
- package/src/collision/rayBounds.js +9 -0
- package/src/collision/readTriangle.js +9 -0
- package/src/collision/slabDistance.js +14 -0
- package/src/collision/slabMiss.js +14 -0
- package/src/collision/sortCrossings.js +17 -0
- package/src/collision/sortHits.js +9 -1
- package/src/collision/trafficBounds.js +24 -0
- package/src/collision/trafficCollision.js +24 -49
- package/src/collision/trafficRay.js +21 -0
- package/src/collision/transformTriangle.js +9 -0
- package/src/collision/transformVertices.js +18 -0
- package/src/collision/triangleDistance.js +14 -1
- package/src/collision/vertexCount.js +8 -0
- package/src/collision/worldHit.js +12 -0
- package/src/colors/README.md +25 -0
- package/src/colors/formatRGB.js +7 -0
- package/src/colors/hslChannel.js +10 -0
- package/src/colors/mixColor.js +10 -0
- package/src/colors/parseColor.js +4 -1
- package/src/colors/toSRGB.js +7 -0
- package/src/controls/README.md +26 -0
- package/src/controls/acceptPitchDrag.js +7 -0
- package/src/controls/acceptRotateDrag.js +7 -0
- package/src/controls/addCameraHandler.js +7 -0
- package/src/controls/adjustCameraDrag.js +6 -8
- package/src/controls/cameraControls.js +5 -4
- package/src/controls/cameraDragClick.js +5 -1
- package/src/controls/cameraDragContextMenu.js +7 -3
- package/src/controls/cameraDragDown.js +5 -2
- package/src/controls/cameraDragEnd.js +8 -4
- package/src/controls/cameraDragMove.js +12 -8
- package/src/controls/changeCameraTouch.js +6 -8
- package/src/controls/cleanupCameraTouch.js +1 -4
- package/src/controls/compassAddHooks.js +1 -0
- package/src/controls/compassOrientation.js +7 -1
- package/src/controls/compassRemoveHooks.js +1 -0
- package/src/controls/containerResizeAddHooks.js +1 -0
- package/src/controls/containerResizeRemoveHooks.js +1 -0
- package/src/controls/dragCamera.js +11 -2
- package/src/controls/endAllCameraDrags.js +1 -2
- package/src/controls/endAllCameraTouches.js +1 -2
- package/src/controls/endCameraTouch.js +6 -0
- package/src/controls/endCameraTouchEvent.js +5 -2
- package/src/controls/failCompassPermission.js +6 -0
- package/src/controls/finishCameraDrag.js +6 -0
- package/src/controls/finishCompassPermission.js +7 -0
- package/src/controls/isEditableTarget.js +7 -0
- package/src/controls/loadCameraControls.js +9 -0
- package/src/controls/moveCameraTouch.js +9 -6
- package/src/controls/notifyCameraTouchChange.js +1 -0
- package/src/controls/pitchDragAddHooks.js +1 -1
- package/src/controls/pitchDragRemoveHooks.js +1 -0
- package/src/controls/refreshRotateControl.js +2 -0
- package/src/controls/refreshRotateFocus.js +3 -2
- package/src/controls/removeCameraDrag.js +15 -12
- package/src/controls/resizeMap.js +5 -0
- package/src/controls/rotateButtonClick.js +6 -1
- package/src/controls/rotateButtonKeydown.js +10 -4
- package/src/controls/rotateControl.js +9 -1
- package/src/controls/rotateOnAdd.js +7 -1
- package/src/controls/rotateOnRemove.js +5 -0
- package/src/controls/shiftRotateAddHooks.js +1 -1
- package/src/controls/shiftRotateRemoveHooks.js +1 -0
- package/src/controls/shiftRotateWheel.js +9 -4
- package/src/controls/startCameraTouch.js +5 -2
- package/src/core/README.md +28 -0
- package/src/core/adjustCameraMarkerPan.js +7 -2
- package/src/core/cameraCircleBounds.js +5 -1
- package/src/core/cameraMarkerDrag.js +1 -2
- package/src/core/cameraMarkerOnDrag.js +7 -4
- package/src/core/closestCameraLayerPoint.js +7 -1
- package/src/core/constructLayer.js +7 -0
- package/src/core/extendLeafletClass.js +7 -0
- package/src/core/extendTerrainPixelBounds.js +10 -0
- package/src/core/fireRasterLoad.js +1 -1
- package/src/core/gridlayerGetEvents.js +5 -2
- package/src/core/gridlayerGetTiledPixelBounds.js +7 -1
- package/src/core/initializeGridContainer.js +1 -1
- package/src/core/initializeNativeLayer.js +1 -4
- package/src/core/layerAddInitHook.js +5 -0
- package/src/core/layerCallInitHooks.js +1 -2
- package/src/core/layerMergeOptions.js +7 -0
- package/src/core/markerGetEvents.js +5 -2
- package/src/core/markerInitInteraction.js +8 -5
- package/src/core/markerSetIcon.js +11 -6
- package/src/core/markerSetPos.js +5 -2
- package/src/core/markerSetRotation.js +10 -0
- package/src/core/markerUpdateZIndex.js +6 -4
- package/src/core/popupAdjustPan.js +5 -2
- package/src/core/popupGetEvents.js +5 -1
- package/src/core/popupUpdatePosition.js +1 -2
- package/src/core/projectNativePath.js +7 -0
- package/src/core/redrawPath.js +5 -0
- package/src/core/removeLayer.js +10 -7
- package/src/core/setRotation.js +7 -0
- package/src/core/tooltipGetEvents.js +5 -1
- package/src/core/tooltipSetPosition.js +5 -2
- package/src/core/updateGridOpacity.js +2 -1
- package/src/core/whenReady.js +9 -6
- package/src/geometry/README.md +29 -0
- package/src/geometry/addBridges.js +8 -6
- package/src/geometry/addGeneratedTriangle.js +8 -4
- package/src/geometry/appendAreaTriangle.js +15 -0
- package/src/geometry/appendNativeTriangle.js +14 -0
- package/src/geometry/appendRouteDash.js +18 -0
- package/src/geometry/appendRouteSegment.js +13 -0
- package/src/geometry/assembleAreaGeometry.js +7 -0
- package/src/geometry/boundsQuad.js +8 -0
- package/src/geometry/box.js +10 -0
- package/src/geometry/bridgeEdge.js +7 -0
- package/src/geometry/bridgeElevation.js +8 -1
- package/src/geometry/bridgeFaces.js +7 -0
- package/src/geometry/bridgePaths.js +8 -0
- package/src/geometry/bridgePolygon.js +6 -0
- package/src/geometry/bridgeSides.js +7 -0
- package/src/geometry/buildGeometryParts.js +7 -0
- package/src/geometry/buildProjectedPoint.js +11 -0
- package/src/geometry/buildProjectedPolygon.js +9 -0
- package/src/geometry/circleAt.js +15 -2
- package/src/geometry/circleGeometry.js +6 -0
- package/src/geometry/clipLine.js +8 -1
- package/src/geometry/clipSegment.js +9 -0
- package/src/geometry/computeBounds.js +5 -2
- package/src/geometry/conformModelToTerrain.js +6 -3
- package/src/geometry/createLampRing.js +8 -0
- package/src/geometry/createModelGeometry.js +11 -1
- package/src/geometry/createRasterQuadGeometry.js +7 -1
- package/src/geometry/createTreeRing.js +8 -1
- package/src/geometry/crossVector.js +8 -0
- package/src/geometry/dashValues.js +9 -0
- package/src/geometry/dashedSegment.js +12 -0
- package/src/geometry/disk.js +9 -0
- package/src/geometry/diskAt.js +14 -2
- package/src/geometry/emitter.js +10 -0
- package/src/geometry/fillNativePolygon.js +8 -0
- package/src/geometry/generateTreeGeometry.js +11 -5
- package/src/geometry/indexBridge.js +8 -2
- package/src/geometry/instanceAreaGeometry.js +7 -1
- package/src/geometry/interpolateRoute.js +10 -2
- package/src/geometry/lampPostGeometry.js +9 -2
- package/src/geometry/lightGeometry.js +9 -2
- package/src/geometry/line.js +7 -0
- package/src/geometry/lineJoin.js +9 -0
- package/src/geometry/markerImageBounds.js +9 -0
- package/src/geometry/markerQuadCorners.js +9 -3
- package/src/geometry/meshShadowBounds.js +9 -0
- package/src/geometry/nativeGeometry.js +9 -1
- package/src/geometry/offsetBelowGround.js +7 -0
- package/src/geometry/polygon.js +7 -0
- package/src/geometry/quad.js +14 -0
- package/src/geometry/restoreGeometry.js +6 -0
- package/src/geometry/roofCoverage.js +12 -5
- package/src/geometry/roofFootprint.js +12 -4
- package/src/geometry/routeGeometry.js +7 -2
- package/src/geometry/samePoint.js +8 -0
- package/src/geometry/segment.js +9 -0
- package/src/geometry/setVertexColor.js +1 -1
- package/src/geometry/shadowBounds.js +8 -0
- package/src/geometry/subtractRoofTile.js +9 -0
- package/src/geometry/subtractVector.js +8 -0
- package/src/geometry/surface.js +11 -1
- package/src/geometry/terrainBuffers.js +10 -3
- package/src/geometry/terrainGrid.js +7 -2
- package/src/geometry/terrainTileGeometry.js +13 -4
- package/src/geometry/treeGeometry.js +7 -4
- package/src/geometry/triangle.js +11 -0
- package/src/geometry/validateTree.js +12 -0
- package/src/geometry/vertexNormals.js +8 -2
- package/src/geometry/visitNativeCoordinates.js +7 -0
- package/src/globals/CELL.js +6 -2
- package/src/globals/Compass.js +5 -0
- package/src/globals/ContainerResize.js +5 -0
- package/src/globals/HEIGHT.js +5 -0
- package/src/globals/L.js +5 -0
- package/src/globals/PitchDrag.js +5 -0
- package/src/globals/README.md +28 -0
- package/src/globals/ShiftRotate.js +5 -0
- package/src/globals/TILE_RADIUS.js +5 -0
- package/src/globals/TILE_SIZE.js +5 -0
- package/src/globals/TouchMode.js +5 -0
- package/src/globals/alphaBlend.js +5 -0
- package/src/globals/archiveDecoder.js +5 -0
- package/src/globals/archiveNorthWest.js +5 -0
- package/src/globals/archiveSouthEast.js +5 -0
- package/src/globals/atmosphereColor.js +5 -0
- package/src/globals/atmosphereStops.js +5 -0
- package/src/globals/blobParts.js +5 -0
- package/src/globals/cameraAngles.js +5 -0
- package/src/globals/cameraAnimatedOptions.js +5 -0
- package/src/globals/cameraAnimationFrame.js +5 -0
- package/src/globals/cameraAnimations.js +5 -0
- package/src/globals/cameraBearingSensitivity.js +5 -0
- package/src/globals/cameraDragSensitivity.js +5 -0
- package/src/globals/cameraDrags.js +5 -0
- package/src/globals/cameraEmptyOptions.js +5 -0
- package/src/globals/cameraFocusOptions.js +5 -0
- package/src/globals/cameraFov.js +5 -0
- package/src/globals/cameraListenerOptions.js +5 -0
- package/src/globals/cameraTouchStates.js +5 -0
- package/src/globals/cameraZeroPadding.js +5 -0
- package/src/globals/cogTags.js +5 -0
- package/src/globals/colorLayout.js +5 -0
- package/src/globals/colorTexture.js +5 -0
- package/src/globals/coreEventTypes.js +5 -0
- package/src/globals/coreMatrixKeys.js +5 -0
- package/src/globals/coreQuadIndices.js +5 -0
- package/src/globals/coreQuadUV.js +5 -0
- package/src/globals/coreSampler.js +5 -0
- package/src/globals/coreWhite.js +5 -0
- package/src/globals/cosObliquity.js +5 -0
- package/src/globals/coverageTiles.js +5 -0
- package/src/globals/dark.js +5 -0
- package/src/globals/defaultMaterial.js +5 -0
- package/src/globals/degrees.js +5 -0
- package/src/globals/demBuffer.js +5 -0
- package/src/globals/demLayout.js +5 -0
- package/src/globals/demSize.js +5 -0
- package/src/globals/demTarget.js +5 -0
- package/src/globals/demTexture.js +5 -0
- package/src/globals/depthBindGroup.js +5 -0
- package/src/globals/depthTexture.js +5 -0
- package/src/globals/directoryReader.js +5 -0
- package/src/globals/disabledShadow.js +5 -0
- package/src/globals/drawEntries.js +5 -0
- package/src/globals/drawFrameEntry.js +5 -0
- package/src/globals/drawMeshEntry.js +5 -0
- package/src/globals/drawSamplerEntries.js +5 -0
- package/src/globals/drawTerrainEntry.js +5 -0
- package/src/globals/drawTextureEntries.js +5 -0
- package/src/globals/earthCirc.js +5 -0
- package/src/globals/elevationWGSL.js +2 -0
- package/src/globals/fragmentShader.js +5 -0
- package/src/globals/frameBuffer.js +5 -0
- package/src/globals/frameCommands.js +5 -0
- package/src/globals/frameLayoutEntry.js +5 -0
- package/src/globals/geometryDecoder.js +5 -0
- package/src/globals/geometryEmpty.js +5 -0
- package/src/globals/geometryImageOptions.js +5 -0
- package/src/globals/geometryPixelStates.js +5 -0
- package/src/globals/geometryQuaternion.js +5 -0
- package/src/globals/geometryScale.js +5 -0
- package/src/globals/geometrySemantics.js +5 -0
- package/src/globals/geometryTranslation.js +5 -0
- package/src/globals/geometryWorkerUrl.js +5 -0
- package/src/globals/glass.js +5 -0
- package/src/globals/gridEvents.js +5 -0
- package/src/globals/gridFadeFrame.js +5 -0
- package/src/globals/halfRadians.js +5 -0
- package/src/globals/headerBounds.js +5 -0
- package/src/globals/headerFlags.js +5 -0
- package/src/globals/headerOffsets.js +5 -0
- package/src/globals/headlight.js +5 -0
- package/src/globals/hull.js +5 -0
- package/src/globals/instanceLayout.js +5 -0
- package/src/globals/lampDirections.js +5 -0
- package/src/globals/layerControlAddItem.js +5 -0
- package/src/globals/layerProto.js +5 -0
- package/src/globals/leafletLayer.js +5 -0
- package/src/globals/lightScale.js +5 -0
- package/src/globals/limbs.js +5 -1
- package/src/globals/loading.js +5 -0
- package/src/globals/mapMethods.js +5 -0
- package/src/globals/markerMethods.js +5 -0
- package/src/globals/markerPanFrame.js +5 -0
- package/src/globals/meshBindGroup.js +5 -0
- package/src/globals/meshBuffer.js +5 -0
- package/src/globals/meshCopySize.js +5 -0
- package/src/globals/meshImage.js +5 -0
- package/src/globals/meshLayoutEntry.js +5 -0
- package/src/globals/meshOffsets.js +5 -0
- package/src/globals/meshPipeline.js +5 -0
- package/src/globals/meshStack.js +5 -0
- package/src/globals/meshTarget.js +5 -0
- package/src/globals/moves.js +5 -1
- package/src/globals/mvtTextDecoder.js +5 -0
- package/src/globals/nativeMethodHandlers.js +5 -0
- package/src/globals/nativeScalableStyleKeys.js +5 -0
- package/src/globals/nextId.js +5 -0
- package/src/globals/normalLayout.js +5 -0
- package/src/globals/paints.js +5 -0
- package/src/globals/parts.js +5 -0
- package/src/globals/pendingGridFades.js +5 -0
- package/src/globals/pendingInitializations.js +5 -0
- package/src/globals/pendingMapChanges.js +5 -0
- package/src/globals/pendingMarkerPan.js +5 -0
- package/src/globals/pendingPlacements.js +5 -0
- package/src/globals/pendingRasterLoads.js +5 -0
- package/src/globals/pendingUpdates.js +5 -0
- package/src/globals/pendingZoomAnimations.js +5 -0
- package/src/globals/pipelineLayout.js +5 -0
- package/src/globals/popupEvents.js +5 -0
- package/src/globals/popupPan.js +5 -0
- package/src/globals/popupPosition.js +5 -0
- package/src/globals/positionLayout.js +5 -0
- package/src/globals/programEntries.js +5 -0
- package/src/globals/programLayout.js +5 -0
- package/src/globals/radians.js +5 -0
- package/src/globals/rasterBuffer.js +5 -0
- package/src/globals/rasterIndices.js +5 -0
- package/src/globals/rasterNormals.js +5 -0
- package/src/globals/rasterPoint.js +5 -0
- package/src/globals/rasterPositions.js +5 -0
- package/src/globals/rasterSampler.js +5 -0
- package/src/globals/rasterTexture.js +5 -0
- package/src/globals/rasterUVs.js +5 -0
- package/src/globals/removeLayer.js +5 -0
- package/src/globals/renderEmpty.js +5 -0
- package/src/globals/ringDirections.js +5 -0
- package/src/globals/roofBindGroup.js +5 -0
- package/src/globals/roofBlitSampler.js +5 -0
- package/src/globals/roofBuffer.js +5 -0
- package/src/globals/roofCommands.js +5 -0
- package/src/globals/roofCopySize.js +5 -0
- package/src/globals/roofImage.js +5 -0
- package/src/globals/roofMin.js +5 -0
- package/src/globals/roofOpacities.js +5 -0
- package/src/globals/roofPass.js +5 -0
- package/src/globals/roofPipeline.js +5 -0
- package/src/globals/roofSampler.js +5 -0
- package/src/globals/roofShader.js +5 -0
- package/src/globals/roofSignatures.js +5 -0
- package/src/globals/roofSize.js +5 -0
- package/src/globals/roofTarget.js +5 -0
- package/src/globals/roofTexture.js +5 -0
- package/src/globals/roofTiles.js +5 -0
- package/src/globals/roundProfile.js +5 -0
- package/src/globals/samplerLayoutEntries.js +5 -0
- package/src/globals/sceneCleanupFields.js +5 -0
- package/src/globals/sceneEmptyOptions.js +5 -0
- package/src/globals/scenePass.js +5 -0
- package/src/globals/sceneSunlightUniforms.js +5 -0
- package/src/globals/sceneTransferFields.js +5 -0
- package/src/globals/sceneWalkHandlers.js +5 -0
- package/src/globals/shadowBindGroup.js +5 -0
- package/src/globals/shadowBounds.js +5 -0
- package/src/globals/shadowCamera.js +5 -0
- package/src/globals/shadowDepthLayout.js +5 -0
- package/src/globals/shadowHigh.js +5 -0
- package/src/globals/shadowInstanceLayouts.js +5 -0
- package/src/globals/shadowLayouts.js +5 -0
- package/src/globals/shadowLow.js +5 -0
- package/src/globals/shadowMeshLayout.js +5 -0
- package/src/globals/shadowOffsets.js +5 -0
- package/src/globals/shadowPass.js +5 -0
- package/src/globals/shadowPipeline.js +5 -0
- package/src/globals/shadowPipelineLayout.js +5 -0
- package/src/globals/shadowShader.js +5 -0
- package/src/globals/shadowTexture.js +5 -0
- package/src/globals/shadowValues.js +5 -0
- package/src/globals/shirt.js +5 -0
- package/src/globals/sinObliquity.js +5 -0
- package/src/globals/sizes.js +5 -0
- package/src/globals/skin.js +5 -0
- package/src/globals/speed.js +5 -1
- package/src/globals/sunBindGroup.js +5 -0
- package/src/globals/taillight.js +5 -0
- package/src/globals/tau.js +5 -0
- package/src/globals/terrainLayoutEntry.js +5 -0
- package/src/globals/textureLayoutEntries.js +5 -0
- package/src/globals/tiledBounds.js +5 -0
- package/src/globals/tooltipEvents.js +5 -0
- package/src/globals/tooltipPosition.js +5 -0
- package/src/globals/trafficClocks.js +5 -0
- package/src/globals/trafficEmptyList.js +5 -0
- package/src/globals/trafficEmptyOptions.js +5 -0
- package/src/globals/trafficRouteMaterial.js +5 -0
- package/src/globals/trafficShader.js +5 -1
- package/src/globals/triangleContexts.js +5 -0
- package/src/globals/trousers.js +5 -0
- package/src/globals/types.js +5 -0
- package/src/globals/tyre.js +5 -0
- package/src/globals/uVLayout.js +5 -0
- package/src/globals/vectorStyleNamedColors.js +5 -0
- package/src/globals/vectorTileEvents.js +5 -0
- package/src/globals/vehicles.js +2 -0
- package/src/globals/vertexShader.js +5 -0
- package/src/globals/wantedTiles.js +5 -0
- package/src/globals/white.js +5 -0
- package/src/globals/workerCogSource.js +5 -0
- package/src/gpu/README.md +29 -0
- package/src/gpu/initializeRendererResources.js +6 -1
- package/src/gpu/initializeSharedRenderer.js +15 -8
- package/src/gpu/mountRenderer.js +7 -1
- package/src/gpu/releaseRenderer.js +8 -0
- package/src/gpu/rendererDeviceError.js +5 -3
- package/src/gpu/rendererDeviceLost.js +5 -3
- package/src/gpu/reportShaderCompilation.js +8 -0
- package/src/gpu/requestAdapter.js +8 -0
- package/src/gpu/requestDevice.js +9 -0
- package/src/gpu/showWebGPUWarning.js +5 -0
- package/src/index.js +0 -2
- package/src/layer-controls/README.md +25 -0
- package/src/layer-controls/layerControlInputId.js +7 -0
- package/src/layer-controls/layerCountTitle.js +10 -0
- package/src/layer-controls/placeEntry.js +9 -0
- package/src/layer-controls/placeEntryElement.js +7 -0
- package/src/layer-controls/placeUnderEntry.js +7 -0
- package/src/layer-controls/removeEntry.js +1 -0
- package/src/layer-controls/renderLayerCount.js +9 -1
- package/src/layer-controls/replaceEntry.js +1 -2
- package/src/layer-controls/runPlacements.js +1 -2
- package/src/layer-controls/underEntry.js +6 -2
- package/src/layer-controls/updateLayerCount.js +5 -1
- package/src/lighting/README.md +28 -0
- package/src/lighting/cacheLightGrid.js +9 -1
- package/src/lighting/collectLightMeshes.js +7 -1
- package/src/lighting/lightGrid.js +10 -1
- package/src/lighting/updatePointLights.js +7 -3
- package/src/lighting/visitLightCells.js +14 -1
- package/src/lighting/visitLightGridCells.js +11 -0
- package/src/lighting/worldLights.js +8 -1
- package/src/lighting/writeLightCell.js +9 -0
- package/src/materials/README.md +28 -0
- package/src/materials/createProgram.js +8 -4
- package/src/materials/createProgramLayout.js +8 -0
- package/src/materials/createProgramUniforms.js +7 -0
- package/src/materials/modelMaterialFor.js +8 -0
- package/src/materials/prepareMeshCutout.js +9 -0
- package/src/materials/terrainRasterProgram.js +15 -8
- package/src/materials/validateRoofMaterial.js +7 -0
- package/src/models/README.md +27 -0
- package/src/models/applyModelTransform.js +6 -2
- package/src/models/buildModelNodes.js +10 -0
- package/src/models/createModelContext.js +9 -0
- package/src/models/decodeModel.js +13 -2
- package/src/models/hasUnsupportedPrimitives.js +7 -0
- package/src/models/loadBuffer.js +10 -0
- package/src/models/loadModel.js +10 -7
- package/src/models/loadModelResources.js +8 -0
- package/src/models/modelNode.js +11 -1
- package/src/models/normalizeAccessor.js +10 -0
- package/src/models/prepareModel.js +10 -0
- package/src/models/prepareModelGeometry.js +10 -0
- package/src/models/prepareModelPrimitive.js +8 -0
- package/src/models/readAccessor.js +10 -4
- package/src/models/readAccessorValue.js +9 -0
- package/src/models/readAccessorValues.js +17 -0
- package/src/models/readModelAttributes.js +12 -0
- package/src/models/readModelIndices.js +12 -0
- package/src/models/readSparseAccessor.js +12 -0
- package/src/models/releaseModelResources.js +5 -0
- package/src/mvt/README.md +28 -0
- package/src/mvt/addMvtCrossings.js +6 -0
- package/src/mvt/appendMvtBandTriangles.js +11 -0
- package/src/mvt/appendMvtCoordinates.js +9 -0
- package/src/mvt/appendMvtPolygonTriangles.js +10 -0
- package/src/mvt/beginMvtPath.js +10 -0
- package/src/mvt/closeMvtPath.js +9 -0
- package/src/mvt/collectMvtEdges.js +10 -0
- package/src/mvt/createMvtReader.js +7 -0
- package/src/mvt/decodeVectorTile.js +7 -0
- package/src/mvt/expectMvtWire.js +8 -0
- package/src/mvt/finishMvtPath.js +9 -0
- package/src/mvt/finiteMvtCoordinate.js +7 -0
- package/src/mvt/groupMvtPolygons.js +10 -0
- package/src/mvt/isMvtFallbackError.js +7 -0
- package/src/mvt/mergeMvtActiveEdges.js +9 -0
- package/src/mvt/mvtEdgeX.js +8 -0
- package/src/mvt/mvtPathsVertices.js +7 -0
- package/src/mvt/mvtPolygonPaths.js +7 -0
- package/src/mvt/numericMvtValue.js +7 -0
- package/src/mvt/readMvtFeature.js +12 -0
- package/src/mvt/readMvtField.js +9 -0
- package/src/mvt/readMvtGeometry.js +13 -0
- package/src/mvt/readMvtInteger.js +10 -0
- package/src/mvt/readMvtKnownValue.js +9 -0
- package/src/mvt/readMvtLayer.js +9 -0
- package/src/mvt/readMvtMessage.js +8 -0
- package/src/mvt/readMvtNumber.js +9 -0
- package/src/mvt/readMvtNumbers.js +7 -0
- package/src/mvt/readMvtString.js +8 -0
- package/src/mvt/readMvtValue.js +10 -0
- package/src/mvt/skipMvtField.js +8 -0
- package/src/mvt/sortMvtActiveEdges.js +5 -0
- package/src/mvt/sortedMvtLevels.js +7 -0
- package/src/mvt/takeMvtBytes.js +10 -0
- package/src/mvt/tessellateVectorRings.js +7 -0
- package/src/mvt/triangulateVectorRings.js +4 -0
- package/src/native/README.md +27 -0
- package/src/native/beforeNativeRender.js +5 -0
- package/src/native/bypassNativeEvent.js +10 -0
- package/src/native/canScaleNativeStyle.js +9 -0
- package/src/native/compareNativeHits.js +8 -0
- package/src/native/createNativeMesh.js +15 -0
- package/src/native/disposeNativeLayer.js +3 -2
- package/src/native/forwardNativeError.js +5 -0
- package/src/native/getGridTerrainTile.js +13 -0
- package/src/native/gridTerrainElevation.js +8 -0
- package/src/native/handleNativeMapEvent.js +9 -4
- package/src/native/hideTargets.js +6 -0
- package/src/native/initNativeGPU.js +6 -3
- package/src/native/isCurrentNativeLayer.js +9 -4
- package/src/native/loadGridTerrain.js +10 -0
- package/src/native/nativeAddLatLng.js +7 -0
- package/src/native/nativeBringToBack.js +7 -0
- package/src/native/nativeBringToFront.js +7 -0
- package/src/native/nativeEventSource.js +9 -0
- package/src/native/nativeEvents.js +5 -4
- package/src/native/nativeLayer.js +10 -6
- package/src/native/nativeLayerMethod.js +9 -2
- package/src/native/nativeProgram.js +8 -0
- package/src/native/nativeRedraw.js +7 -0
- package/src/native/nativeSetBounds.js +7 -0
- package/src/native/nativeSetIcon.js +7 -0
- package/src/native/nativeSetLatLng.js +7 -0
- package/src/native/nativeSetLatLngs.js +7 -0
- package/src/native/nativeSetOpacity.js +7 -0
- package/src/native/nativeSetRadius.js +7 -0
- package/src/native/nativeSetStyle.js +7 -0
- package/src/native/nativeSetUrl.js +7 -0
- package/src/native/nativeSetZIndex.js +7 -0
- package/src/native/nativeSetZIndexOffset.js +7 -0
- package/src/native/nativeTerrainElevation.js +11 -0
- package/src/native/nativeVectorGeometry.js +7 -0
- package/src/native/orderNativeGridLayer.js +6 -0
- package/src/native/prepareGridTerrainRequests.js +7 -0
- package/src/native/pruneNativeResources.js +5 -0
- package/src/native/putNativeMesh.js +14 -0
- package/src/native/quadNativeMesh.js +11 -1
- package/src/native/readyNativeGPU.js +10 -6
- package/src/native/refreshNativeEvent.js +5 -0
- package/src/native/refreshNativeLayer.js +5 -3
- package/src/native/refreshNativeLayerContract.js +5 -2
- package/src/native/rejectNativeReady.js +5 -0
- package/src/native/removeNativeEvents.js +7 -3
- package/src/native/removeTargets.js +5 -2
- package/src/native/reorderNativeLayer.js +5 -3
- package/src/native/resolveNativeReady.js +3 -0
- package/src/native/restoreNativeEvents.js +3 -0
- package/src/native/retainGridTerrain.js +5 -0
- package/src/native/styleNativeMesh.js +11 -5
- package/src/native/syncGridLayer.js +5 -1
- package/src/native/syncGridTile.js +10 -0
- package/src/native/syncImageOverlay.js +8 -3
- package/src/native/syncMarker.js +5 -0
- package/src/native/syncNativeStrokeAnchors.js +6 -0
- package/src/native/syncNativeStrokeZoom.js +5 -0
- package/src/native/syncTerrainGridTile.js +10 -0
- package/src/native/syncVectorLayer.js +5 -0
- package/src/native/synchronizeNativeLayer.js +5 -3
- package/src/native/terrainGridMesh.js +13 -0
- package/src/native/updateNativeHover.js +8 -0
- package/src/native/updateNativeLayerView.js +3 -3
- package/src/native/updateNativeStrokeRadius.js +5 -0
- package/src/picking/README.md +29 -0
- package/src/picking/collectVisibleMesh.js +8 -0
- package/src/picking/findFeature.js +4 -4
- package/src/picking/hit.js +14 -7
- package/src/picking/hitColliderCell.js +10 -0
- package/src/picking/hitMesh.js +8 -2
- package/src/picking/onClick.js +6 -5
- package/src/picking/onPointerLeave.js +5 -5
- package/src/picking/onPointerMove.js +6 -5
- package/src/picking/pointerClick.js +5 -0
- package/src/picking/pointerLeave.js +1 -0
- package/src/picking/pointerMove.js +5 -0
- package/src/picking/raycast.js +2 -4
- package/src/picking/setHighlight.js +6 -5
- package/src/picking/shouldSkipOther.js +8 -2
- package/src/picking/showFeature.js +7 -4
- package/src/picking/validateCameraInverse.js +7 -0
- package/src/projections/README.md +28 -0
- package/src/projections/cameraAngles.js +8 -1
- package/src/projections/displayContainerPoint.js +9 -0
- package/src/projections/groundBounds.js +9 -1
- package/src/projections/localPixel.js +8 -0
- package/src/projections/localPixelForGeometry.js +8 -1
- package/src/projections/localPosition.js +8 -2
- package/src/projections/markerCameraIconPoint.js +9 -1
- package/src/projections/projectBridgePoint.js +13 -1
- package/src/projections/projectCameraPoint.js +11 -1
- package/src/projections/projectCelestialBody.js +11 -2
- package/src/projections/projectRing.js +11 -1
- package/src/projections/projectTreePoint.js +9 -1
- package/src/projections/toPoint.js +9 -1
- package/src/projections/transformZoomAnimationPoint.js +12 -5
- package/src/projections/verticalGroundY.js +11 -0
- package/src/projections/walkerLocalPosition.js +7 -0
- package/src/raster/README.md +28 -0
- package/src/raster/addRasterTile.js +10 -2
- package/src/raster/comparePendingTiles.js +8 -0
- package/src/raster/createRasterMesh.js +6 -5
- package/src/raster/finishRasterAttachment.js +9 -4
- package/src/raster/finishRasterTile.js +11 -2
- package/src/raster/getRasterEvents.js +7 -0
- package/src/raster/getRasterTileSize.js +5 -1
- package/src/raster/initRaster.js +6 -3
- package/src/raster/isRasterLoading.js +7 -3
- package/src/raster/loadRasterTile.js +8 -3
- package/src/raster/onPMTileAdd.js +6 -3
- package/src/raster/onPMTileRemove.js +6 -3
- package/src/raster/pruneRasterTiles.js +7 -3
- package/src/raster/pumpRasterTiles.js +5 -4
- package/src/raster/rasterTileRange.js +9 -0
- package/src/raster/readyRaster.js +8 -3
- package/src/raster/registerTerrainTile.js +9 -3
- package/src/raster/releaseRasterTile.js +6 -3
- package/src/raster/releaseRasterTiles.js +5 -3
- package/src/raster/removeRasterTile.js +6 -3
- package/src/raster/reportRasterError.js +8 -0
- package/src/raster/retainRasterTiles.js +7 -2
- package/src/raster/setPMTileOpacity.js +8 -0
- package/src/raster/setPMTileZIndex.js +8 -0
- package/src/raster/setRasterOpacity.js +6 -3
- package/src/raster/setRasterTerrain.js +6 -3
- package/src/raster/setRasterZIndex.js +6 -3
- package/src/raster/updateAttachedTiles.js +9 -3
- package/src/raster/updateRasterTiles.js +5 -5
- package/src/rendering/README.md +32 -0
- package/src/rendering/collectFrameMeshes.js +7 -3
- package/src/rendering/collectMeshes.js +11 -0
- package/src/rendering/collectVisibleMesh.js +9 -0
- package/src/rendering/compareMeshDepth.js +8 -0
- package/src/rendering/compareMeshes.js +10 -1
- package/src/rendering/createMesh.js +8 -5
- package/src/rendering/disposeMesh.js +6 -0
- package/src/rendering/drawGeometry.js +9 -2
- package/src/rendering/drawPipeline.js +10 -0
- package/src/rendering/drawSceneMeshes.js +9 -3
- package/src/rendering/nativeStrokeExpansion.js +7 -0
- package/src/rendering/prepareFrameBuffer.js +8 -2
- package/src/rendering/prepareFrameMeshes.js +10 -3
- package/src/rendering/prepareFrameUniforms.js +8 -3
- package/src/rendering/prepareMeshUniforms.js +10 -1
- package/src/rendering/render.js +2 -5
- package/src/rendering/resizeRenderer.js +6 -3
- package/src/rendering/revealRoofMesh.js +10 -1
- package/src/scene/README.md +36 -0
- package/src/scene/addRegisteredLayer.js +5 -4
- package/src/scene/addSceneLayer.js +9 -3
- package/src/scene/attachLayer.js +8 -3
- package/src/scene/attachSharedScene.js +6 -1
- package/src/scene/callLayer.js +11 -5
- package/src/scene/cancelUpdate.js +5 -3
- package/src/scene/createLayer.js +8 -2
- package/src/scene/createSceneNode.js +5 -1
- package/src/scene/emptyEvents.js +5 -0
- package/src/scene/failAttachment.js +9 -3
- package/src/scene/get3DEvents.js +7 -3
- package/src/scene/getLocation.js +8 -4
- package/src/scene/init3D.js +6 -3
- package/src/scene/initializeLayer.js +9 -2
- package/src/scene/initializerFor.js +8 -0
- package/src/scene/isNativeLayer.js +8 -2
- package/src/scene/layerInitialize.js +7 -4
- package/src/scene/onAdd3DLayer.js +6 -4
- package/src/scene/onMapChange.js +0 -5
- package/src/scene/onRemove3DLayer.js +6 -5
- package/src/scene/ready3D.js +9 -3
- package/src/scene/releaseSharedScene.js +6 -2
- package/src/scene/removeLayerEvents.js +1 -3
- package/src/scene/removeSceneLayer.js +9 -3
- package/src/scene/renderPendingMapChange.js +1 -4
- package/src/scene/renderPendingUpdates.js +5 -4
- package/src/scene/reportLayerError.js +6 -0
- package/src/scene/resolveNextInitialization.js +5 -2
- package/src/scene/restoreObject.js +6 -3
- package/src/scene/scheduleSceneUpdate.js +7 -6
- package/src/scene/setParent.js +6 -2
- package/src/scene/traverse.js +7 -2
- package/src/shaders/README.md +29 -0
- package/src/shaders/materialBaseShader.js +9 -0
- package/src/shaders/materialShaders.js +9 -1
- package/src/shaders/materialSurfaceShader.js +13 -0
- package/src/shaders/materialVertexShader.js +22 -10
- package/src/shaders/nativeStrokeShader.js +7 -0
- package/src/shaders/roofVertexShader.js +7 -0
- package/src/shadows/README.md +28 -0
- package/src/shadows/bindSunlight.js +5 -3
- package/src/shadows/drawShadowMeshes.js +7 -2
- package/src/shadows/ensureShadowPipeline.js +7 -0
- package/src/shadows/renderSunlight.js +8 -4
- package/src/shadows/resizeSunlight.js +6 -3
- package/src/shadows/shadowCacheMatches.js +11 -1
- package/src/shadows/shadowMatrix.js +8 -1
- package/src/shadows/shadowMeshMatches.js +8 -0
- package/src/sources/README.md +33 -0
- package/src/sources/attachAreaMesh.js +5 -4
- package/src/sources/buildArea.js +13 -2
- package/src/sources/buildAreaFeature.js +7 -1
- package/src/sources/buildAreaFeatures.js +9 -0
- package/src/sources/compareAreaDistance.js +8 -0
- package/src/sources/extrusionStyle.js +11 -0
- package/src/sources/featureAnchor.js +12 -0
- package/src/sources/groundOffset.js +7 -0
- package/src/sources/initVectorTiles.js +6 -0
- package/src/sources/initializeGeoJSON.js +6 -3
- package/src/sources/isVectorTileSource.js +7 -0
- package/src/sources/matchesAreaTile.js +10 -0
- package/src/sources/pendingSourceAreas.js +9 -2
- package/src/sources/prepareAreaGeometryJob.js +10 -0
- package/src/sources/projectAreaPolygons.js +10 -0
- package/src/sources/pumpSourceAreas.js +6 -6
- package/src/sources/readyVectorTiles.js +7 -0
- package/src/sources/releaseArea.js +6 -4
- package/src/sources/setGeoJSONData.js +8 -3
- package/src/sources/setGeoJSONLayerData.js +7 -0
- package/src/sources/sourceAreaContext.js +9 -2
- package/src/sources/updateArea.js +5 -5
- package/src/sources/updateSourceStatus.js +6 -3
- package/src/sunlight/README.md +28 -0
- package/src/sunlight/addTimeControlToMap.js +8 -1
- package/src/sunlight/addTimeLayer.js +9 -4
- package/src/sunlight/atmosphere.js +9 -2
- package/src/sunlight/createSun.js +7 -0
- package/src/sunlight/initSunlight.js +5 -0
- package/src/sunlight/initializeTimeControl.js +8 -6
- package/src/sunlight/onAddSun.js +11 -2
- package/src/sunlight/onAddTimeControl.js +7 -0
- package/src/sunlight/onRemoveSun.js +1 -1
- package/src/sunlight/removeSun.js +7 -5
- package/src/sunlight/removeTimeControl.js +7 -1
- package/src/sunlight/removeTimeLayer.js +8 -5
- package/src/sunlight/requestSunlightRender.js +6 -3
- package/src/sunlight/styleTimeControl.js +6 -0
- package/src/sunlight/tickSun.js +5 -0
- package/src/sunlight/updateCelestialDisc.js +11 -0
- package/src/sunlight/updateSky.js +5 -3
- package/src/sunlight/updateSun.js +6 -4
- package/src/sunlight/useLiveTime.js +5 -0
- package/src/sunlight/useSelectedTime.js +6 -4
- package/src/terrain/README.md +30 -0
- package/src/terrain/applyTerrain.js +10 -4
- package/src/terrain/clearLayerTerrain.js +5 -3
- package/src/terrain/copyTerrainTile.js +8 -0
- package/src/terrain/getElevation.js +8 -5
- package/src/terrain/initTerrain.js +5 -3
- package/src/terrain/loadReadyTerrain.js +1 -0
- package/src/terrain/loadTerrain.js +10 -2
- package/src/terrain/loadTerrainTiles.js +10 -3
- package/src/terrain/mapElevationOf.js +8 -0
- package/src/terrain/onTerrainAdd.js +8 -4
- package/src/terrain/onTerrainChange.js +5 -5
- package/src/terrain/onTerrainRemove.js +6 -3
- package/src/terrain/readBridges.js +9 -0
- package/src/terrain/readyTerrainOf.js +7 -0
- package/src/terrain/sampleTerrainTile.js +9 -0
- package/src/terrain/setLayerTerrain.js +5 -3
- package/src/terrain/setTerrainHeight.js +5 -4
- package/src/terrain/terrainAtlas.js +8 -2
- package/src/terrain/terrainElevation.js +8 -2
- package/src/terrain/terrainTileQueue.js +10 -3
- package/src/textures/README.md +29 -0
- package/src/textures/addImageState.js +7 -2
- package/src/textures/attachRasterImage.js +1 -2
- package/src/textures/bindMeshTextures.js +7 -0
- package/src/textures/collectRoofTiles.js +9 -2
- package/src/textures/compareRoofTiles.js +8 -0
- package/src/textures/composeRoofAtlas.js +11 -3
- package/src/textures/destroyTexture.js +6 -4
- package/src/textures/destroyTextureAfterSubmission.js +9 -0
- package/src/textures/ensureRoofBlit.js +5 -0
- package/src/textures/loadModelImage.js +12 -2
- package/src/textures/modelTextureFor.js +12 -4
- package/src/textures/modelTextureSampler.js +7 -2
- package/src/textures/nativeImageError.js +5 -1
- package/src/textures/nativeImageRefresh.js +5 -2
- package/src/textures/nativeTextureFor.js +11 -3
- package/src/textures/prepareMeshTextures.js +8 -0
- package/src/textures/rebuildRoofAtlas.js +8 -3
- package/src/textures/removeImageState.js +8 -3
- package/src/textures/resizeRoofTexture.js +9 -2
- package/src/textures/restoreMaterialTextures.js +6 -0
- package/src/textures/textureBinding.js +9 -0
- package/src/textures/updateRoofAtlas.js +10 -4
- package/src/textures/updateRoofRaster.js +8 -0
- package/src/textures/uploadCanvasTexture.js +15 -0
- package/src/textures/uploadMeshTexture.js +6 -0
- package/src/textures/uploadNativeImage.js +13 -0
- package/src/textures/uploadRoofTile.js +6 -0
- package/src/traffic/README.md +30 -0
- package/src/traffic/addTraffic.js +5 -2
- package/src/traffic/clockMinutes.js +7 -0
- package/src/traffic/compareDepartures.js +8 -0
- package/src/traffic/createTrafficMesh.js +13 -2
- package/src/traffic/destroyTrafficGpu.js +5 -0
- package/src/traffic/disposeTrafficObject.js +13 -10
- package/src/traffic/drawTrafficRoute.js +5 -1
- package/src/traffic/failTraffic.js +6 -0
- package/src/traffic/failedTrafficLoad.js +10 -3
- package/src/traffic/featuresToTrafficLanes.js +8 -0
- package/src/traffic/fetchTrafficLanes.js +11 -0
- package/src/traffic/groundTraffic.js +5 -1
- package/src/traffic/initTraffic.js +17 -15
- package/src/traffic/loadTraffic.js +5 -0
- package/src/traffic/loadedTrafficLanes.js +11 -4
- package/src/traffic/locateTraffic.js +9 -0
- package/src/traffic/moveTraffic.js +6 -0
- package/src/traffic/placeTraffic.js +5 -0
- package/src/traffic/prepareTraffic.js +5 -3
- package/src/traffic/readyTraffic.js +7 -2
- package/src/traffic/rebaseTraffic.js +5 -3
- package/src/traffic/rebuildTrafficMesh.js +5 -1
- package/src/traffic/refreshTrafficTrips.js +10 -0
- package/src/traffic/removeTraffic.js +5 -2
- package/src/traffic/routeColor.js +7 -0
- package/src/traffic/scheduledTrips.js +5 -2
- package/src/traffic/startTraffic.js +7 -2
- package/src/traffic/tickTraffic.js +5 -3
- package/src/traffic/trafficBounds.js +5 -0
- package/src/traffic/trafficNow.js +9 -4
- package/src/traffic/trafficStatusText.js +8 -0
- package/src/traffic/trafficStorage.js +8 -0
- package/src/traffic/trafficTooltip.js +7 -0
- package/src/traffic/tripsAt.js +9 -2
- package/src/traffic/updateTraffic.js +10 -7
- package/src/traffic/updateTrafficLights.js +5 -0
- package/src/traffic/updateTrafficPose.js +7 -0
- package/src/traffic/updateTrafficTerrain.js +10 -5
- package/src/traffic/uploadTrafficLanes.js +6 -0
- package/src/traffic/vehicleOffsets.js +9 -3
- package/src/transforms/README.md +27 -0
- package/src/transforms/composeLocalTransform.js +7 -0
- package/src/transforms/modelNodeMatrix.js +7 -2
- package/src/transforms/transformNativePoint.js +12 -0
- package/src/transforms/updateWorldMatrix.js +5 -2
- package/src/transforms/worldMatrixChanged.js +8 -0
- package/src/triangulation/README.md +26 -0
- package/src/triangulation/area.js +7 -0
- package/src/triangulation/clean.js +9 -0
- package/src/triangulation/clipEars.js +9 -0
- package/src/triangulation/connectHole.js +12 -0
- package/src/triangulation/containsVertex.js +10 -0
- package/src/triangulation/cross.js +9 -0
- package/src/triangulation/crossesBoundary.js +10 -0
- package/src/triangulation/crossesRing.js +9 -0
- package/src/triangulation/equal.js +8 -0
- package/src/triangulation/inside.js +8 -0
- package/src/triangulation/insideHole.js +8 -0
- package/src/triangulation/intersects.js +10 -0
- package/src/triangulation/isClockWise.js +4 -1
- package/src/triangulation/mergeHoles.js +8 -0
- package/src/triangulation/minimumX.js +7 -0
- package/src/triangulation/on.js +9 -0
- package/src/triangulation/polygonRings.js +8 -0
- package/src/triangulation/sortHoles.js +7 -0
- package/src/triangulation/triangulate.js +3 -2
- package/src/triangulation/validateArea.js +9 -0
- package/src/utils/README.md +16 -0
- package/src/utils/compareDistance.js +8 -0
- package/src/utils/noOperation.js +1 -0
- package/src/utils/wrap.js +7 -0
- package/src/utils/yieldTask.js +7 -0
- package/src/vector-style/README.md +27 -0
- package/src/vector-style/appendQuotedStyleCharacter.js +8 -0
- package/src/vector-style/arrayContainsRange.js +10 -0
- package/src/vector-style/evaluateBoolean.js +13 -0
- package/src/vector-style/evaluateCoalesceOrCase.js +13 -0
- package/src/vector-style/evaluateComparison.js +13 -0
- package/src/vector-style/evaluateIExpression.js +13 -0
- package/src/vector-style/evaluateInput.js +10 -0
- package/src/vector-style/evaluateInterpolate.js +9 -0
- package/src/vector-style/evaluateMatch.js +9 -0
- package/src/vector-style/evaluateMath.js +12 -0
- package/src/vector-style/evaluateMembership.js +11 -0
- package/src/vector-style/evaluateNegation.js +13 -0
- package/src/vector-style/evaluatePrimitive.js +12 -0
- package/src/vector-style/evaluateStep.js +9 -0
- package/src/vector-style/evaluateStyle.js +10 -0
- package/src/vector-style/evaluateToExpression.js +13 -0
- package/src/vector-style/fillVectorPaint.js +9 -0
- package/src/vector-style/lineVectorPaint.js +10 -0
- package/src/vector-style/parseFunctionalColor.js +9 -0
- package/src/vector-style/parseHexColor.js +7 -0
- package/src/vector-style/parseVectorStyle.js +7 -0
- package/src/vector-style/readPaintValue.js +11 -0
- package/src/vector-style/removeTrailingCommas.js +7 -0
- package/src/vector-style/scaleDashArray.js +12 -0
- package/src/vector-style/skipStyleComment.js +11 -0
- package/src/vector-style/stripStyleComments.js +7 -0
- package/src/vector-style/styleColor.js +7 -0
- package/src/vector-style/validateVectorLayers.js +8 -0
- package/src/vector-style/vectorPaint.js +9 -0
- package/src/vector-style/visibleStyle.js +9 -0
- package/src/vector-tiles/README.md +30 -0
- package/src/vector-tiles/appendVectorBatch.js +12 -0
- package/src/vector-tiles/attachVectorTileBatch.js +8 -0
- package/src/vector-tiles/attachVectorTileBatches.js +11 -0
- package/src/vector-tiles/compareVectorLabelPriority.js +8 -0
- package/src/vector-tiles/compareVectorTileDistance.js +8 -0
- package/src/vector-tiles/configureVectorTileLayer.js +8 -0
- package/src/vector-tiles/createVectorLabel.js +15 -0
- package/src/vector-tiles/forwardVectorTileError.js +5 -0
- package/src/vector-tiles/loadVectorSprite.js +9 -0
- package/src/vector-tiles/loadVectorTile.js +9 -0
- package/src/vector-tiles/onVectorTileAdd.js +5 -0
- package/src/vector-tiles/onVectorTileMessage.js +5 -0
- package/src/vector-tiles/onVectorTileRemove.js +5 -0
- package/src/vector-tiles/onVectorTileWorkerError.js +5 -0
- package/src/vector-tiles/paintVectorTileBatch.js +6 -0
- package/src/vector-tiles/prepareVectorLabel.js +9 -0
- package/src/vector-tiles/prepareVectorStyleLayer.js +8 -0
- package/src/vector-tiles/prepareVectorTile.js +13 -0
- package/src/vector-tiles/projectVectorPaths.js +10 -0
- package/src/vector-tiles/projectVectorPoint.js +9 -0
- package/src/vector-tiles/projectVectorTriangles.js +10 -0
- package/src/vector-tiles/pruneVectorTiles.js +3 -0
- package/src/vector-tiles/pumpVectorTiles.js +3 -0
- package/src/vector-tiles/readTileJSON.js +10 -0
- package/src/vector-tiles/readVectorStyle.js +11 -0
- package/src/vector-tiles/refreshVectorTiles.js +3 -0
- package/src/vector-tiles/reserveVectorLabelCells.js +8 -0
- package/src/vector-tiles/retireVectorTileGroup.js +7 -0
- package/src/vector-tiles/revokeVectorWorkerUrl.js +5 -0
- package/src/vector-tiles/rotateVectorLabel.js +7 -0
- package/src/vector-tiles/rotateVectorLabels.js +3 -0
- package/src/vector-tiles/simplifyVectorPath.js +8 -0
- package/src/vector-tiles/updateVectorLabelMarker.js +9 -0
- package/src/vector-tiles/updateVectorLabelStyle.js +6 -0
- package/src/vector-tiles/updateVectorTileLabels.js +5 -0
- package/src/vector-tiles/updateVectorTilePaint.js +5 -0
- package/src/vector-tiles/updateVectorTiles.js +3 -0
- package/src/vector-tiles/validateVectorTileZooms.js +9 -0
- package/src/vector-tiles/vectorFeaturePaint.js +10 -0
- package/src/vector-tiles/vectorFeaturePaths.js +10 -0
- package/src/vector-tiles/vectorFeatureZoom.js +10 -0
- package/src/vector-tiles/vectorLabelAnchors.js +8 -1
- package/src/vector-tiles/vectorLabelCandidates.js +7 -0
- package/src/vector-tiles/vectorLabelCells.js +9 -0
- package/src/vector-tiles/vectorLabelIcon.js +8 -0
- package/src/vector-tiles/vectorLabelProperty.js +9 -0
- package/src/vector-tiles/vectorLabelText.js +9 -0
- package/src/vector-tiles/vectorSpriteIcon.js +8 -0
- package/src/vector-tiles/vectorStraightRun.js +10 -1
- package/src/vector-tiles/vectorStyleDependencies.js +7 -0
- package/src/vector-tiles/vectorStyleValue.js +11 -0
- package/src/vector-tiles/vectorStyleZoom.js +7 -1
- package/src/vector-tiles/vectorTileAwaited.js +8 -0
- package/src/vector-tiles/vectorTileOverlaps.js +8 -0
- package/src/vector-tiles/vectorTilePaint.js +8 -0
- package/src/vector-tiles/vectorTileSettings.js +10 -0
- package/src/vector-tiles/vectorTilesIdle.js +8 -0
- package/src/vector-tiles/vectorTolerance.js +8 -1
- package/src/vector-tiles/wrapVectorLabel.js +7 -1
- package/src/vehicles/README.md +27 -0
- package/src/vehicles/bicycleModel.js +7 -1
- package/src/vehicles/boatBenches.js +5 -0
- package/src/vehicles/boatModel.js +8 -8
- package/src/vehicles/buildCarriage.js +9 -1
- package/src/vehicles/busModel.js +11 -3
- package/src/vehicles/carModel.js +12 -11
- package/src/vehicles/metroModel.js +8 -0
- package/src/vehicles/mirrorVehiclePart.js +11 -0
- package/src/vehicles/pedestrianModel.js +7 -1
- package/src/vehicles/tramModel.js +8 -0
- package/src/walk/README.md +30 -0
- package/src/walk/animateWalker.js +5 -4
- package/src/walk/createWalk.js +6 -3
- package/src/walk/initWalk.js +5 -0
- package/src/walk/initializeWalkControl.js +6 -1
- package/src/walk/isWalkBlocked.js +9 -0
- package/src/walk/landWalker.js +12 -8
- package/src/walk/moveWalker.js +17 -4
- package/src/walk/onAddWalkControl.js +9 -0
- package/src/walk/onRemoveWalkControl.js +5 -0
- package/src/walk/onWalkBlur.js +1 -0
- package/src/walk/onWalkKey.js +5 -2
- package/src/walk/onWalkPointer.js +6 -0
- package/src/walk/onWalkTerrain.js +4 -3
- package/src/walk/placeWalker.js +1 -2
- package/src/walk/resolveWalkerPosition.js +5 -0
- package/src/walk/startWalking.js +1 -1
- package/src/walk/stepWalkerHeight.js +7 -0
- package/src/walk/stopWalking.js +1 -0
- package/src/walk/toggleWalking.js +5 -4
- package/src/walk/updateWalkerFrame.js +10 -0
- package/src/walk/updateWalkerView.js +9 -0
- package/src/weakmaps/README.md +33 -0
- package/src/weakmaps/addedByLayer.js +5 -0
- package/src/weakmaps/archiveHeaderByLayer.js +5 -0
- package/src/weakmaps/areasByLayer.js +5 -0
- package/src/weakmaps/boundsMethods.js +5 -0
- package/src/weakmaps/bridgeMeshByLayer.js +5 -0
- package/src/weakmaps/bridgesByLayer.js +5 -0
- package/src/weakmaps/cameraAnimationByMap.js +5 -0
- package/src/weakmaps/cameraBearingByMap.js +5 -0
- package/src/weakmaps/cameraByLayer.js +5 -0
- package/src/weakmaps/cameraDraggableByMap.js +5 -0
- package/src/weakmaps/cameraFields.js +5 -0
- package/src/weakmaps/cameraFrameByMap.js +5 -0
- package/src/weakmaps/cameraHandlersByMap.js +5 -0
- package/src/weakmaps/cameraMaps.js +5 -0
- package/src/weakmaps/cameraPitchByMap.js +5 -0
- package/src/weakmaps/cameraReadyByMap.js +5 -0
- package/src/weakmaps/cameraTouchStateByMap.js +5 -0
- package/src/weakmaps/cameraViewByMap.js +5 -0
- package/src/weakmaps/cameraZIndexOffsetByLayer.js +5 -0
- package/src/weakmaps/closestMethods.js +5 -0
- package/src/weakmaps/colliders.js +5 -0
- package/src/weakmaps/containerByLayer.js +5 -0
- package/src/weakmaps/controlByLayer.js +5 -0
- package/src/weakmaps/countStatusByLayer.js +5 -0
- package/src/weakmaps/cursorByLayer.js +5 -0
- package/src/weakmaps/demByLayer.js +5 -0
- package/src/weakmaps/directoriesByLayer.js +5 -0
- package/src/weakmaps/dragByHandler.js +5 -0
- package/src/weakmaps/dragStates.js +5 -0
- package/src/weakmaps/etagByLayer.js +5 -0
- package/src/weakmaps/eventMapByLayer.js +5 -0
- package/src/weakmaps/eventsByLayer.js +5 -0
- package/src/weakmaps/fadeFrameByLayer.js +5 -0
- package/src/weakmaps/fadeVersionByLayer.js +5 -0
- package/src/weakmaps/frameByLayer.js +5 -0
- package/src/weakmaps/geojsonByLayer.js +5 -0
- package/src/weakmaps/geometryWorkersByMap.js +5 -0
- package/src/weakmaps/gridInitializers.js +5 -0
- package/src/weakmaps/groupByLayer.js +5 -0
- package/src/weakmaps/headerByLayer.js +5 -0
- package/src/weakmaps/highlightedFeatureByLayer.js +5 -0
- package/src/weakmaps/hoveredFeatureByLayer.js +5 -0
- package/src/weakmaps/imageStates.js +5 -0
- package/src/weakmaps/inflightByLayer.js +5 -0
- package/src/weakmaps/kindByLayer.js +5 -0
- package/src/weakmaps/layersByLayer.js +5 -0
- package/src/weakmaps/loadingTilesByLayer.js +5 -0
- package/src/weakmaps/locationByLayer.js +5 -0
- package/src/weakmaps/modelByLayer.js +5 -0
- package/src/weakmaps/modelUrlByLayer.js +5 -0
- package/src/weakmaps/nativeEventMaps.js +5 -0
- package/src/weakmaps/nativeGPUBackByMap.js +5 -0
- package/src/weakmaps/nativeGPUByLayer.js +5 -0
- package/src/weakmaps/nativeGPUOrderByMap.js +5 -0
- package/src/weakmaps/nativeProgramsByRenderer.js +5 -0
- package/src/weakmaps/nativeRenderByLayer.js +5 -0
- package/src/weakmaps/pathProjectionByMap.js +5 -0
- package/src/weakmaps/pitchSkyByMap.js +5 -0
- package/src/weakmaps/pointerEventsByLayer.js +5 -0
- package/src/weakmaps/pruneAfterByLayer.js +5 -0
- package/src/weakmaps/pruneVersionByLayer.js +5 -0
- package/src/weakmaps/pruneWantedByLayer.js +5 -0
- package/src/weakmaps/queuedByLayer.js +5 -0
- package/src/weakmaps/rasterGeometryByLayer.js +5 -0
- package/src/weakmaps/rasterProgramByLayer.js +5 -0
- package/src/weakmaps/rasterTilesByLayer.js +5 -0
- package/src/weakmaps/rasterVersionByLayer.js +5 -0
- package/src/weakmaps/raycasterByLayer.js +5 -0
- package/src/weakmaps/readyByLayer.js +5 -0
- package/src/weakmaps/rendererByLayer.js +5 -0
- package/src/weakmaps/rendererDevices.js +5 -0
- package/src/weakmaps/rendererReadyByLayer.js +5 -0
- package/src/weakmaps/renderers.js +5 -0
- package/src/weakmaps/roofRasterByLayer.js +5 -0
- package/src/weakmaps/roofRastersByLayer.js +5 -0
- package/src/weakmaps/rootByLayer.js +5 -0
- package/src/weakmaps/rotateControlByMap.js +5 -0
- package/src/weakmaps/sceneByLayer.js +5 -0
- package/src/weakmaps/sceneFields.js +5 -0
- package/src/weakmaps/sceneLayers.js +5 -0
- package/src/weakmaps/sceneOriginByLayer.js +5 -0
- package/src/weakmaps/shadowMeshesByLayer.js +5 -0
- package/src/weakmaps/sharedByLayer.js +5 -0
- package/src/weakmaps/sizeByLayer.js +5 -0
- package/src/weakmaps/state3dByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByLayer.js +5 -0
- package/src/weakmaps/streamTerrainByMap.js +5 -0
- package/src/weakmaps/sunByMap.js +5 -0
- package/src/weakmaps/sunlightByControl.js +5 -0
- package/src/weakmaps/sunlightByMap.js +5 -0
- package/src/weakmaps/terrain3DByLayer.js +5 -0
- package/src/weakmaps/terrain3DByMap.js +5 -0
- package/src/weakmaps/terrainArchiveByLayer.js +5 -0
- package/src/weakmaps/terrainBaseYByLayer.js +5 -0
- package/src/weakmaps/terrainBoundsByLayer.js +5 -0
- package/src/weakmaps/terrainControllerByLayer.js +5 -0
- package/src/weakmaps/terrainGridsByLayer.js +5 -0
- package/src/weakmaps/terrainLoadingByLayer.js +5 -0
- package/src/weakmaps/terrainOriginElevationByLayer.js +5 -0
- package/src/weakmaps/terrainPromiseByLayer.js +5 -0
- package/src/weakmaps/terrainReadyByLayer.js +5 -0
- package/src/weakmaps/terrainRequestByLayer.js +5 -0
- package/src/weakmaps/terrainSourceByLayer.js +5 -0
- package/src/weakmaps/terrainTilesByLayer.js +5 -0
- package/src/weakmaps/terrainZoomByLayer.js +5 -0
- package/src/weakmaps/tileZoomByLayer.js +5 -0
- package/src/weakmaps/timeControlByMap.js +5 -0
- package/src/weakmaps/tooltipByLayer.js +5 -0
- package/src/weakmaps/touchByContainer.js +5 -0
- package/src/weakmaps/touchPitchByMap.js +5 -0
- package/src/weakmaps/touchRotateByMap.js +5 -0
- package/src/weakmaps/trafficByLayer.js +5 -0
- package/src/weakmaps/typeByLayer.js +5 -0
- package/src/weakmaps/urlByLayer.js +5 -0
- package/src/weakmaps/vectorTileOptionsByLayer.js +5 -0
- package/src/weakmaps/vectorWorkerByLayer.js +5 -0
- package/src/weakmaps/visibleMeshesByLayer.js +5 -0
- package/src/weakmaps/walkByMap.js +5 -0
- package/src/weakmaps/walkerByLayer.js +5 -0
- package/src/weakmaps/wantedRasterTilesByLayer.js +5 -0
- package/src/weakmaps/workerMapByLayer.js +5 -0
- package/src/weakmaps/zoomLevelByLayer.js +5 -0
- package/src/weakmaps/zoomTransitionsByLayer.js +5 -0
- package/src/weakmaps/zoomViewByLayer.js +5 -0
- package/src/workers/README.md +33 -0
- package/src/workers/acquireGeometryWorker.js +10 -0
- package/src/workers/buildAreaInWorker.js +8 -0
- package/src/workers/closeGeometryWorkers.js +5 -0
- package/src/workers/cogWorker.js +7 -0
- package/src/workers/createGeometryWorker.js +10 -0
- package/src/workers/geometryWorker.js +5 -0
- package/src/workers/getCogInWorker.js +11 -0
- package/src/workers/modelWorker.js +7 -0
- package/src/workers/openCogInWorker.js +8 -0
- package/src/workers/runSourceWorker.js +12 -0
- package/src/workers/settleGeometryWorker.js +6 -0
- package/src/workers/startGeometryWorker.js +7 -0
- package/src/workers/vectorTileWorker.js +5 -0
- package/src/collision/setTrafficNormal.js +0 -9
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { frameByLayer } from '../weakmaps/frameByLayer.js';
|
|
2
2
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
3
3
|
import { sharedByLayer } from '../weakmaps/sharedByLayer.js';
|
|
4
|
-
|
|
5
4
|
import { pendingUpdates } from '../globals/pendingUpdates.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
5
|
import { render } from '../rendering/render.js';
|
|
10
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Render queued shared scenes, continuing through failures before propagating the first.
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} The first rendering failure, if any.
|
|
11
|
+
*/
|
|
11
12
|
export function renderPendingUpdates() {
|
|
12
13
|
const updates = /* alloc */ [...pendingUpdates];
|
|
13
14
|
pendingUpdates.clear();
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { pendingInitializations } from '../globals/pendingInitializations.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
2
|
import { initializerFor } from './initializerFor.js';
|
|
5
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Dequeue an initialization and resolve its initializer or record an unknown-type error.
|
|
6
|
+
*
|
|
7
|
+
* @returns {Object} Initialization task.
|
|
8
|
+
*/
|
|
6
9
|
export function resolveNextInitialization() {
|
|
7
10
|
const task = pendingInitializations.shift();
|
|
8
11
|
task.initialize = initializerFor(task.type, task.settings);
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
2
|
import { sharedByLayer } from '../weakmaps/sharedByLayer.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
3
|
import { createProgram } from '../materials/createProgram.js';
|
|
7
4
|
import { restoreGeometry } from '../geometry/restoreGeometry.js';
|
|
8
5
|
import { restoreMaterialTextures } from '../textures/restoreMaterialTextures.js';
|
|
9
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Restore a scene object's GPU resources when it moves to a different device.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} object Scene object to restore.
|
|
11
|
+
* @param {L.Layer} layer Layer containing the object.
|
|
12
|
+
*/
|
|
10
13
|
export function restoreObject(object, layer) {
|
|
11
14
|
const shared = sharedByLayer.get(layer);
|
|
12
15
|
let texture;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { frameByLayer } from '../weakmaps/frameByLayer.js';
|
|
2
2
|
import { sharedByLayer } from '../weakmaps/sharedByLayer.js';
|
|
3
|
-
|
|
4
3
|
import { pendingUpdates } from '../globals/pendingUpdates.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
4
|
import { render } from "../rendering/render.js";
|
|
8
|
-
|
|
9
5
|
import { renderPendingUpdates } from './renderPendingUpdates.js';
|
|
10
6
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Schedule one shared-scene render on the next animation frame.
|
|
9
|
+
*
|
|
10
|
+
* @param {L.Layer} layer Layer whose content changed.
|
|
11
|
+
*
|
|
12
|
+
* @returns {L.Layer} The supplied layer.
|
|
13
|
+
*/
|
|
13
14
|
export function update(layer) {
|
|
14
15
|
const shared = sharedByLayer.get(layer);
|
|
15
16
|
if (!shared) return layer;
|
package/src/scene/setParent.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Reparent or detach scene data without drawing or disposing GPU resources.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} node Scene node to move.
|
|
5
|
+
* @param {Object|null} parent New parent, or null to detach.
|
|
6
|
+
*/
|
|
3
7
|
export function setParent(node, parent) {
|
|
4
8
|
if (node.parent) node.parent.children.splice(node.parent.children.indexOf(node), 1);
|
|
5
9
|
node.parent = parent;
|
package/src/scene/traverse.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Walk the scene depth-first; a truthy callback result skips that node's descendants.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} node Root node to visit.
|
|
5
|
+
* @param {Function} callback Called with each node and the supplied context.
|
|
6
|
+
* @param {*} context Context passed to the callback.
|
|
7
|
+
*/
|
|
3
8
|
export function traverse(node, callback, context) {
|
|
4
9
|
if (callback(node, context)) return;
|
|
5
10
|
let child;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Shaders
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Generates WGSL shader code for materials, native strokes and roof projection.
|
|
6
|
+
Material program setup and GPU resource binding live outside this folder.
|
|
7
|
+
|
|
8
|
+
## Generated variants
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
Material["Material flags"] --> Generate["materialShaders"]
|
|
13
|
+
Generate --> Vertex["Vertex WGSL"]
|
|
14
|
+
Generate --> Surface["Fragment WGSL"]
|
|
15
|
+
Generate --> Bindings["Texture bindings + feature flags"]
|
|
16
|
+
Vertex --> Program["GPU program"]
|
|
17
|
+
Surface --> Program
|
|
18
|
+
Bindings --> Program
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Generation does not require a GPU. Binding order, material layout, uniform
|
|
22
|
+
writes and vertex attributes must agree; compilation diagnostics come from
|
|
23
|
+
[gpu](../gpu/README.md).
|
|
24
|
+
|
|
25
|
+
- [materialShaders.js](./materialShaders.js): assemble material shader variants.
|
|
26
|
+
- [materialVertexShader.js](./materialVertexShader.js): generate vertex shader code.
|
|
27
|
+
- [materialBaseShader.js](./materialBaseShader.js): generate material fragment logic.
|
|
28
|
+
|
|
29
|
+
Related: [materials](../materials/README.md), [textures](../textures/README.md), [rendering](../rendering/README.md).
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate fragment code for base color, alpha and optional roof texture.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} material Material settings.
|
|
5
|
+
* @param {boolean} hasBase Whether a base texture is bound.
|
|
6
|
+
* @param {boolean} hasRoof Whether a roof texture is bound.
|
|
7
|
+
*
|
|
8
|
+
* @returns {string} WGSL fragment code.
|
|
9
|
+
*/
|
|
1
10
|
export function materialBaseShader(material, hasBase, hasRoof) {
|
|
2
11
|
return /* wgsl */ `
|
|
3
12
|
var normal = normalize(input.normal) * select(-1.0, 1.0, frontFacing);
|
|
@@ -4,7 +4,15 @@ import { validateRoofMaterial } from '../materials/validateRoofMaterial.js';
|
|
|
4
4
|
import { materialVertexShader } from './materialVertexShader.js';
|
|
5
5
|
import { materialSurfaceShader } from './materialSurfaceShader.js';
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Generate material WGSL and texture bindings without a GPU device or Leaflet layer.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} [material] Material settings.
|
|
11
|
+
* @param {boolean} [sparkle=false] Whether to include sparkle coordinates and shading.
|
|
12
|
+
* @param {string} [elevationWGSL=''] Terrain elevation WGSL functions.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Object} Vertex and fragment shaders, texture bindings and feature flags.
|
|
15
|
+
*/
|
|
8
16
|
export function materialShaders(material = defaultMaterial, sparkle = false, elevationWGSL = '') {
|
|
9
17
|
const hasBase = Boolean(material.baseTexture);
|
|
10
18
|
const hasMetal = Boolean(material.metalTexture);
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { materialBaseShader } from './materialBaseShader.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Generate lit or unlit material fragment code for the available textures.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} material Material settings.
|
|
7
|
+
* @param {boolean} sparkle Whether to include sparkle shading.
|
|
8
|
+
* @param {boolean} hasBase Whether a base texture is bound.
|
|
9
|
+
* @param {boolean} hasMetal Whether a metallic-roughness texture is bound.
|
|
10
|
+
* @param {boolean} hasEmissive Whether an emissive texture is bound.
|
|
11
|
+
* @param {boolean} hasOcclusion Whether an occlusion texture is bound.
|
|
12
|
+
* @param {boolean} hasRoof Whether a roof texture is bound.
|
|
13
|
+
*
|
|
14
|
+
* @returns {string} WGSL fragment code.
|
|
15
|
+
*/
|
|
3
16
|
export function materialSurfaceShader(material, sparkle, hasBase, hasMetal, hasEmissive, hasOcclusion, hasRoof) {
|
|
4
17
|
return material.unlit ? /* wgsl */ `
|
|
5
18
|
let rasterTexel = ${hasBase ? 'textureSample(baseTexture, baseTextureSampler, input.uv)' : 'vec4<f32>(input.color, 1.0)'};
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { roofVertexShader } from './roofVertexShader.js';
|
|
2
2
|
import { nativeStrokeShader } from './nativeStrokeShader.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Generate a vertex shader for the material and its enabled rendering features.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} material Material settings.
|
|
8
|
+
* @param {boolean} sparkle Whether to output local sparkle coordinates.
|
|
9
|
+
* @param {string} elevationWGSL Terrain elevation WGSL functions.
|
|
10
|
+
* @param {boolean} hasTerrain Whether terrain elevation is enabled.
|
|
11
|
+
* @param {boolean} textured Whether texture coordinates are needed.
|
|
12
|
+
* @param {boolean} hasRoof Whether roof texture coordinates are needed.
|
|
13
|
+
*
|
|
14
|
+
* @returns {string} WGSL vertex shader.
|
|
15
|
+
*/
|
|
4
16
|
export function materialVertexShader(material, sparkle, elevationWGSL, hasTerrain, textured, hasRoof) {
|
|
5
17
|
const instanceOffset = material.instanced ? ' + input.instanceOffset.xyz' : '';
|
|
6
18
|
const stroke = nativeStrokeShader(material);
|
|
@@ -23,11 +35,10 @@ export function materialVertexShader(material, sparkle, elevationWGSL, hasTerrai
|
|
|
23
35
|
skyDirection: vec4<f32>,
|
|
24
36
|
atmosphereTint: vec4<f32>,
|
|
25
37
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
${hasTerrain ? /* wgsl */ `@group(0) @binding(2) var dem: texture_2d<f32>;${elevationWGSL}` : ''}
|
|
38
|
+
struct Solar {
|
|
39
|
+
matrix: mat4x4<f32>,
|
|
40
|
+
params: vec4<f32>
|
|
41
|
+
};
|
|
31
42
|
struct VertexInput {
|
|
32
43
|
@location(0) position: vec3<f32>,
|
|
33
44
|
@location(1) normal: vec3<f32>,
|
|
@@ -46,6 +57,10 @@ export function materialVertexShader(material, sparkle, elevationWGSL, hasTerrai
|
|
|
46
57
|
${textured ? '@location(3) uv: vec2<f32>,' : ''}
|
|
47
58
|
${hasRoof ? '@location(4) roofUv: vec2<f32>, @location(5) roof: f32,' : ''}
|
|
48
59
|
};
|
|
60
|
+
@group(0) @binding(0) var<uniform> u: Mesh;
|
|
61
|
+
@group(0) @binding(1) var<uniform> frame: Frame;
|
|
62
|
+
@group(1) @binding(0) var<uniform> solar: Solar;
|
|
63
|
+
${hasTerrain ? /* wgsl */ `@group(0) @binding(2) var dem: texture_2d<f32>;${elevationWGSL}` : ''}
|
|
49
64
|
@vertex fn vertexMain(input: VertexInput, @builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
50
65
|
var output: VertexOutput;
|
|
51
66
|
var position = input.position${instanceOffset};
|
|
@@ -53,14 +68,11 @@ export function materialVertexShader(material, sparkle, elevationWGSL, hasTerrai
|
|
|
53
68
|
${hasTerrain ? 'position.y = elevation(u.terrain.xy + input.uv * u.terrain.z, u.terrain.w) - u.terrain.w;' : ''}
|
|
54
69
|
let featureVertex = f32(vertexIndex)${material.instanced ? ' + input.instanceOffset.w' : ''};
|
|
55
70
|
let highlighted = featureVertex >= u.highlight.x && featureVertex < u.highlight.y;
|
|
56
|
-
output.color = ${material.vertexColors
|
|
57
|
-
? 'select(input.color, vec3<f32>(72.0 / 255.0, 217.0 / 255.0, 1.0), highlighted)'
|
|
58
|
-
: 'u.baseColor.rgb'};
|
|
71
|
+
output.color = ${material.vertexColors ? 'select(input.color, vec3<f32>(72.0 / 255.0, 217.0 / 255.0, 1.0), highlighted)' : 'u.baseColor.rgb'};
|
|
59
72
|
// Inverse-transpose from cofactors; the camera view matrix is orthonormal.
|
|
60
73
|
let m = mat3x3<f32>(u.worldMatrix[0].xyz, u.worldMatrix[1].xyz, u.worldMatrix[2].xyz);
|
|
61
74
|
${stroke.normal}
|
|
62
|
-
let normal = (cross(m[1], m[2]) * sourceNormal.x + cross(m[2], m[0]) * sourceNormal.y +
|
|
63
|
-
cross(m[0], m[1]) * sourceNormal.z) / determinant(m);
|
|
75
|
+
let normal = (cross(m[1], m[2]) * sourceNormal.x + cross(m[2], m[0]) * sourceNormal.y + cross(m[0], m[1]) * sourceNormal.z) / determinant(m);
|
|
64
76
|
output.normal = (frame.viewMatrix * vec4<f32>(normal, 0.0)).xyz;
|
|
65
77
|
let world = u.worldMatrix * vec4<f32>(position, 1.0);
|
|
66
78
|
output.shadowPosition = solar.matrix * world;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate optional native-stroke position and normal vertex snippets.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} material Material settings.
|
|
5
|
+
*
|
|
6
|
+
* @returns {Object} WGSL position and normal snippets.
|
|
7
|
+
*/
|
|
1
8
|
export function nativeStrokeShader(material) {
|
|
2
9
|
return /* alloc */ {
|
|
3
10
|
position: material.nativeStroke ? 'position = input.normal + (input.position - input.normal) * u.nativeStroke.x;' : '',
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate vertex code for roof and wall texture coordinates and opacity.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} material Roof and wall texture settings.
|
|
5
|
+
*
|
|
6
|
+
* @returns {string} WGSL vertex code.
|
|
7
|
+
*/
|
|
1
8
|
export function roofVertexShader(material) {
|
|
2
9
|
const roofOpacity = Number(material.roofTexture ?? 0);
|
|
3
10
|
const wallOpacity = Number(material.wallTexture ?? 0);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Shadows
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Creates and renders directional sunlight shadow maps, with cached camera and
|
|
6
|
+
mesh state to avoid unnecessary redraws.
|
|
7
|
+
|
|
8
|
+
## Shadow pass and cache
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
Sun["Sun position"] --> Check{"Casters + sun altitude ≥ 3°?"}
|
|
13
|
+
Meshes["Loaded shadow casters"] --> Check
|
|
14
|
+
Check -->|no| Disable["Disable shadow pass"]
|
|
15
|
+
Check -->|yes| Cache{"Cache matches?"}
|
|
16
|
+
Cache -->|yes| Reuse["Reuse depth map"]
|
|
17
|
+
Cache -->|no| Draw["Fit matrix + render depth map"]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Loaded off-screen geometry can cast shadows. Cache snapshots include direction,
|
|
21
|
+
world versions, geometry and draw ranges: changes affecting shadows must
|
|
22
|
+
invalidate the cache. Point lights are separate.
|
|
23
|
+
|
|
24
|
+
- [renderSunlight.js](./renderSunlight.js): update sunlight shadow rendering.
|
|
25
|
+
- [shadowMatrix.js](./shadowMatrix.js): fit the shadow camera to scene bounds.
|
|
26
|
+
- [ensureShadowPipeline.js](./ensureShadowPipeline.js): prepare shadow GPU pipelines.
|
|
27
|
+
|
|
28
|
+
Related: [lighting](../lighting/README.md), [sunlight](../sunlight/README.md), [rendering](../rendering/README.md).
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { sunBindGroup } from '../globals/sunBindGroup.js';
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Bind the renderer's sunlight uniforms, shadow texture, sampler and light buffer.
|
|
6
|
+
*
|
|
7
|
+
* @param {L.Layer} layer Layer owning the renderer.
|
|
8
|
+
*/
|
|
7
9
|
export function bindSunlight(layer) {
|
|
8
10
|
const sun = rendererByLayer.get(layer).sunlight;
|
|
9
11
|
sun.bindGroup = rendererByLayer.get(layer).device.createBindGroup((
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { shadowPass } from '../globals/shadowPass.js';
|
|
4
3
|
import { shadowBindGroup } from '../globals/shadowBindGroup.js';
|
|
5
4
|
import { shadowOffsets } from '../globals/shadowOffsets.js';
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Encode the shadow depth pass for the supplied meshes.
|
|
8
|
+
*
|
|
9
|
+
* @param {L.Layer} layer Layer owning the renderer.
|
|
10
|
+
* @param {GPUCommandEncoder} encoder Encoder receiving the render pass.
|
|
11
|
+
* @param {Object[]} meshes Meshes to draw into the depth texture.
|
|
12
|
+
*/
|
|
8
13
|
export function drawShadowMeshes(layer, encoder, meshes) {
|
|
9
14
|
const renderer = rendererByLayer.get(layer), device = renderer.device, sun = renderer.sunlight;
|
|
10
15
|
const pass = encoder.beginRenderPass((
|
|
@@ -7,6 +7,13 @@ import { shadowPipelineLayout } from '../globals/shadowPipelineLayout.js';
|
|
|
7
7
|
import { shadowInstanceLayouts } from '../globals/shadowInstanceLayouts.js';
|
|
8
8
|
import { shadowLayouts } from '../globals/shadowLayouts.js';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Create the shadow pipeline and shared depth bindings if they are not yet available.
|
|
12
|
+
*
|
|
13
|
+
* @param {GPUDevice} device Device creating the GPU resources.
|
|
14
|
+
* @param {Object} sun Renderer sunlight state.
|
|
15
|
+
* @param {boolean} [instanced=false] Whether to create the instanced pipeline.
|
|
16
|
+
*/
|
|
10
17
|
export function ensureShadowPipeline(device, sun, instanced = false) {
|
|
11
18
|
const key = instanced ? 'instancePipeline' : 'pipeline';
|
|
12
19
|
if (!sun[key]) {
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { disabledShadow } from '../globals/disabledShadow.js';
|
|
4
3
|
import { shadowValues } from '../globals/shadowValues.js';
|
|
5
|
-
|
|
6
4
|
import { shadowCacheMatches } from './shadowCacheMatches.js';
|
|
7
5
|
import { shadowMatrix } from './shadowMatrix.js';
|
|
8
6
|
import { ensureShadowPipeline } from './ensureShadowPipeline.js';
|
|
9
7
|
import { drawShadowMeshes } from './drawShadowMeshes.js';
|
|
10
8
|
import { resizeSunlight } from './resizeSunlight.js';
|
|
11
9
|
|
|
12
|
-
/**
|
|
13
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Render one shared directional depth map, including off-screen loaded geometry.
|
|
12
|
+
*
|
|
13
|
+
* @param {L.Layer} layer Layer owning the renderer.
|
|
14
|
+
* @param {GPUCommandEncoder} encoder Encoder receiving the shadow pass.
|
|
15
|
+
* @param {Object[]} meshes Meshes that can cast shadows.
|
|
16
|
+
* @param {Object|null} sunlight Sun position and direction, if available.
|
|
17
|
+
*/
|
|
14
18
|
export function renderSunlight(layer, encoder, meshes, sunlight) {
|
|
15
19
|
const renderer = rendererByLayer.get(layer), device = renderer.device, sun = renderer.sunlight;
|
|
16
20
|
if (!meshes.length || !sunlight || sunlight.altitude < 3) {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
|
-
|
|
3
2
|
import { shadowTexture } from '../globals/shadowTexture.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
3
|
import { bindSunlight } from './bindSunlight.js';
|
|
7
4
|
import { destroyTexture } from '../textures/destroyTexture.js';
|
|
8
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Replace the shadow depth texture when its required size changes and rebind sunlight.
|
|
8
|
+
*
|
|
9
|
+
* @param {L.Layer} layer Layer owning the renderer.
|
|
10
|
+
* @param {number} size Width and height of the square texture in pixels.
|
|
11
|
+
*/
|
|
9
12
|
export function resizeSunlight(layer, size) {
|
|
10
13
|
const device = rendererByLayer.get(layer).device, sun = rendererByLayer.get(layer).sunlight;
|
|
11
14
|
if (sun.size === size) return;
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
import { shadowMeshMatches } from './shadowMeshMatches.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Check whether the cached shadow map still matches sunlight and all meshes.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} sun Renderer sunlight state and shadow cache.
|
|
7
|
+
* @param {Object[]} meshes Current shadow-casting meshes.
|
|
8
|
+
* @param {Object} sunlight Current sunlight direction.
|
|
9
|
+
*
|
|
10
|
+
* @returns {boolean|undefined} Truthy if the cache is still valid.
|
|
11
|
+
*/
|
|
1
12
|
export function shadowCacheMatches(sun, meshes, sunlight) {
|
|
2
13
|
const cache = sun.cache;
|
|
3
14
|
let unchanged = sun.enabled && cache?.meshes.size === meshes.length;
|
|
@@ -14,4 +25,3 @@ export function shadowCacheMatches(sun, meshes, sunlight) {
|
|
|
14
25
|
}
|
|
15
26
|
return unchanged;
|
|
16
27
|
}
|
|
17
|
-
import { shadowMeshMatches } from './shadowMeshMatches.js';
|
|
@@ -2,10 +2,17 @@ import { shadowBounds as sharedShadowBounds } from '../globals/shadowBounds.js';
|
|
|
2
2
|
import { shadowCamera } from '../globals/shadowCamera.js';
|
|
3
3
|
import { shadowLow } from '../globals/shadowLow.js';
|
|
4
4
|
import { shadowHigh } from '../globals/shadowHigh.js';
|
|
5
|
-
|
|
6
5
|
import { shadowBounds } from '../geometry/shadowBounds.js';
|
|
7
6
|
import { updateCamera } from '../camera/updateSceneCamera.js';
|
|
8
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Fit a directional shadow projection to the bounds of the supplied meshes.
|
|
10
|
+
*
|
|
11
|
+
* @param {Object[]} meshes Shadow-casting meshes.
|
|
12
|
+
* @param {Object} sunlight Sunlight direction.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Float32Array} Column-major shadow projection-view matrix.
|
|
15
|
+
*/
|
|
9
16
|
export function shadowMatrix(meshes, sunlight) {
|
|
10
17
|
const { min, max } = shadowBounds(meshes, sharedShadowBounds);
|
|
11
18
|
const camera = shadowCamera;
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check a mesh against its cached shadow state and pending attribute updates.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} cache Shadow cache containing mesh snapshots.
|
|
5
|
+
* @param {Object} mesh Mesh to compare.
|
|
6
|
+
*
|
|
7
|
+
* @returns {boolean} Whether the mesh still matches its snapshot.
|
|
8
|
+
*/
|
|
1
9
|
export function shadowMeshMatches(cache, mesh) {
|
|
2
10
|
const previous = cache.meshes.get(mesh), range = mesh.geometry.drawRange;
|
|
3
11
|
if (!(previous && previous.world === mesh._worldMatrixVersion && previous.geometry === mesh.geometry &&
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Vector sources
|
|
2
|
+
|
|
3
|
+
[Source guide](../README.md) | [Project README](../../README.md)
|
|
4
|
+
|
|
5
|
+
Initializes GeoJSON and vector tile sources and manages source areas, feature
|
|
6
|
+
preparation, loading queues and mesh attachment.
|
|
7
|
+
|
|
8
|
+
## From view to mesh
|
|
9
|
+
|
|
10
|
+
```mermaid
|
|
11
|
+
flowchart LR
|
|
12
|
+
View["Map view"] --> Areas["updateArea: retain / release"]
|
|
13
|
+
Areas --> Queue["pump: nearest areas"]
|
|
14
|
+
Queue --> Load["Load feature collection"]
|
|
15
|
+
Load --> Style["Style + project features"]
|
|
16
|
+
Style --> Worker["Worker: build geometry"]
|
|
17
|
+
Worker --> Check{"Still wanted?"}
|
|
18
|
+
Check -->|yes| Mesh["Attach mesh + schedule frame"]
|
|
19
|
+
Check -->|no| Stop["Discard"]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
GeoJSON uses one area; archive blocks include a view border. The
|
|
23
|
+
[pump](./pumpSourceAreas.js) allows four jobs per scene and two per layer.
|
|
24
|
+
`null` styles skip features; metadata and face ranges support
|
|
25
|
+
[picking](../picking/README.md). Errors emit `error`; released areas abort
|
|
26
|
+
work and destroy their buffers. [Vector tiles](../vector-tiles/README.md) have
|
|
27
|
+
a separate lifecycle.
|
|
28
|
+
|
|
29
|
+
- [initializeGeoJSON.js](./initializeGeoJSON.js): initialize a GeoJSON-backed layer.
|
|
30
|
+
- [updateArea.js](./updateArea.js): maintain the areas needed by the view.
|
|
31
|
+
- [buildArea.js](./buildArea.js): load features, build worker geometry and attach the mesh.
|
|
32
|
+
|
|
33
|
+
Related: [scene](../scene/README.md), [workers](../workers/README.md), [vector-tiles](../vector-tiles/README.md).
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { rendererByLayer } from '../weakmaps/rendererByLayer.js';
|
|
2
2
|
import { rootByLayer } from '../weakmaps/rootByLayer.js';
|
|
3
|
-
|
|
4
3
|
import { nextId } from '../globals/nextId.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
4
|
import { emptyNode } from '../scene/createSceneNode.js';
|
|
8
5
|
import { createProgram } from '../materials/createProgram.js';
|
|
9
|
-
|
|
10
6
|
import { setParent } from '../scene/setParent.js';
|
|
11
7
|
import { update } from '../scene/scheduleSceneUpdate.js';
|
|
12
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Attach an area's prepared geometry as a GPU mesh, or mark an empty area complete.
|
|
11
|
+
*
|
|
12
|
+
* @param {Object} context Area build context containing geometry and feature metadata.
|
|
13
|
+
*/
|
|
13
14
|
export function attachAreaMesh(context) {
|
|
14
15
|
const { backend: layer, area } = context;
|
|
15
16
|
if (!context.positions.length) {
|
package/src/sources/buildArea.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { geojsonByLayer } from '../weakmaps/geojsonByLayer.js';
|
|
2
2
|
import { inflightByLayer } from '../weakmaps/inflightByLayer.js';
|
|
3
3
|
import { cameraViewByMap } from '../weakmaps/cameraViewByMap.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
4
|
import { attachAreaMesh } from './attachAreaMesh.js';
|
|
7
5
|
import { loadSource } from '../archives/loadSource.js';
|
|
8
6
|
import { sourceAreaContext } from './sourceAreaContext.js';
|
|
@@ -10,6 +8,19 @@ import { pump } from './pumpSourceAreas.js';
|
|
|
10
8
|
import { buildAreaInWorker } from '../workers/buildAreaInWorker.js';
|
|
11
9
|
import { buildAreaFeatures } from './buildAreaFeatures.js';
|
|
12
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Load and build an area with worker geometry, reporting errors and releasing its load slot.
|
|
13
|
+
*
|
|
14
|
+
* @param {L.Layer} layer Source layer.
|
|
15
|
+
* @param {Object} area Area state and abort controller.
|
|
16
|
+
* @param {L.Map} map Map containing the layer.
|
|
17
|
+
*
|
|
18
|
+
* @returns {Promise<void>} Completion of the build attempt.
|
|
19
|
+
*
|
|
20
|
+
* @throws {Error} Internally if the response is not a GeoJSON feature collection; reported to the layer.
|
|
21
|
+
* @throws {Error} Internally if the GeoJSON style is not a function; reported to the layer.
|
|
22
|
+
* @throws {Error} Internally if workers are disabled; reported to the layer.
|
|
23
|
+
*/
|
|
13
24
|
export async function buildArea(layer, area, map) {
|
|
14
25
|
try {
|
|
15
26
|
await /* alloc */ new Promise(requestAnimationFrame);
|
|
@@ -4,6 +4,12 @@ import { extrusionStyle } from './extrusionStyle.js';
|
|
|
4
4
|
import { prepareAreaGeometryJob } from './prepareAreaGeometryJob.js';
|
|
5
5
|
import { matchesAreaTile } from './matchesAreaTile.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Queue geometry and picking metadata for a styled feature belonging to the current source area.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} context Area build context.
|
|
11
|
+
* @param {Object} feature GeoJSON feature to process.
|
|
12
|
+
*/
|
|
7
13
|
export function buildAreaFeature(context, feature) {
|
|
8
14
|
const { backend: layer, area, map } = context;
|
|
9
15
|
const coords = area.coords;
|
|
@@ -21,6 +27,6 @@ export function buildAreaFeature(context, feature) {
|
|
|
21
27
|
prepareAreaGeometryJob(context, feature, lon, lat, style, baseColor);
|
|
22
28
|
context.featureFaces.push(/* alloc */ {
|
|
23
29
|
id: feature.id ?? feature.properties?.objectid ?? JSON.stringify(geometry),
|
|
24
|
-
properties: feature.properties, baseColor,
|
|
30
|
+
properties: feature.properties, baseColor, polygon: geometry.type === 'Polygon' || geometry.type === 'MultiPolygon',
|
|
25
31
|
});
|
|
26
32
|
}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { buildAreaFeature } from './buildAreaFeature.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Process features in time-limited batches, stopping if the area request is aborted.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} context Area build context.
|
|
7
|
+
* @param {Object} area Area state and abort controller.
|
|
8
|
+
* @param {Array<Object>} features GeoJSON features to process.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Promise<void>} Completion of feature processing.
|
|
11
|
+
*/
|
|
3
12
|
export async function buildAreaFeatures(context, area, features) {
|
|
4
13
|
let deadline = performance.now() + 4, feature;
|
|
5
14
|
for (feature of features) {
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order area coordinates by their distance from the view center.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} a First area coordinates.
|
|
5
|
+
* @param {Object} b Second area coordinates.
|
|
6
|
+
*
|
|
7
|
+
* @returns {number} Sort comparison.
|
|
8
|
+
*/
|
|
1
9
|
export function compareAreaDistance(a, b) {
|
|
2
10
|
return a.distance - b.distance;
|
|
3
11
|
}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluate and validate a feature's extrusion style.
|
|
3
|
+
*
|
|
4
|
+
* @param {L.Layer} layer Source layer with a style function.
|
|
5
|
+
* @param {Object} feature GeoJSON feature.
|
|
6
|
+
*
|
|
7
|
+
* @returns {Object|null} Valid style, or null to skip the feature.
|
|
8
|
+
*
|
|
9
|
+
* @throws {Error} If the style is neither an object nor null.
|
|
10
|
+
* @throws {Error} If extrusion heights do not satisfy top > bottom >= 0.
|
|
11
|
+
*/
|
|
1
12
|
export function extrusionStyle(layer, feature) {
|
|
2
13
|
const style = layer.options.style(feature);
|
|
3
14
|
if (style === null) return null;
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return the point or first polygon coordinate used to assign a feature to an area.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} feature GeoJSON feature.
|
|
5
|
+
* @param {boolean} nightLight Whether point geometry is required for a night light.
|
|
6
|
+
*
|
|
7
|
+
* @returns {Array<number>} Anchor coordinates in longitude, latitude order.
|
|
8
|
+
*
|
|
9
|
+
* @throws {Error} If a night-light feature is not a point.
|
|
10
|
+
* @throws {Error} If the geometry type is unsupported.
|
|
11
|
+
* @throws {Error} If anchor coordinates are not finite.
|
|
12
|
+
*/
|
|
1
13
|
export function featureAnchor(feature, nightLight) {
|
|
2
14
|
const geometry = feature?.geometry, point = geometry?.type === 'Point';
|
|
3
15
|
if (nightLight && !point) throw /* alloc */ new Error('Night lights require Point geometry');
|