-
-
Notifications
You must be signed in to change notification settings - Fork 735
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Globe - Add an atmosphere layer #3888
Comments
See my comment about the sky spec here: |
Bounty direction: |
@HarelM Could you assign it to me please ? |
I think it would also make sense to add an option for physically based sky, fog and atmosphere simulation to the sky implementation. Not right now, but sometime in the future. I think it could result in some very nice visuals, and provide an easy option for adding realistic sky and fog to terrain, and perhaps integrate seamlessly with atmosphere for globe. @Pheonor your globe's atmosphere implementation already looks very realistic. Do you actually simulate light scattering in the atmosphere? |
Yes, I simulate light scattering with the Rayleigh and Mie phases. It allows to have a reallistic rendering of the atmosphere. |
If this is the case, I would propose to open an issue in the spec repo and discuss the needed changes to the spec, either use the globe issue, the sky issue or a different one if this should be a different field, although I'm not sure it doesn't fall under the sky specifications. |
* Port of PoC atmosphere layer. * Fix resize for draw_atmosphere * Add some options. * Allow to change sun date and time * Fix import warning * Render atmosphere only when a Globe projection is selected * Add some comments * Add some comments * Change key * Update changelog * Fix merge with globe branch * Fix documentation and default background color. * Use black clear color only when atmosphere is on * Use atmosphere uniform for globe position, raidus in camera frame and inv projection matrix. * Remove unused project method * Update maplibre-gl-style-spec to 20.3.0 and use sky atmosphere parameter * Fix globe tests and use light position as Sun position. * Avoid type name collisions. * Add atmosphere test for globe projection. * Update expectedBytes for build test. * Fix PR comments. * Update Style test. * Remove unused method on projection * Add Sky Test. * Fix style test and add sky unit test. * Move getSunPos method * Fix mercator updateProjection * Remove isGlobe method and fix merge. * Fix globe atmosphere tests with new projection style. * Clean-up some projection and light. Fix setSky and add tests. * Remove sky test during update. * Clean-up
* Globe - basic infrastructure, raster layer adaptation for globe (#3783) * Port changes from main globe branch - basics Fix minor issues so that it compiles. * Fix PI redefinitions * Fix stencil shader * Port adaptation of raster layer for globe from main globe branch * Add globe.html example from pheonor's repo Minor changes (remove terrain, set initial zoom 0, change title and description) * Better map projection parameter doc comment, warn when using unknown projection * Mercator projectionData handles negative zoom correctly * Comment clarification * Fix spelling of "granularity" * Add missing docs * Convert ProjectionBase to an interface * Do not leak GL object in globe projection error measurement, add a destroy method to projection * Fix chrome performance warning, refactor error measurement Warning fixed by changing ring buffer size to 1, making ring buffer pointless, so I removed it. * Fix granularity capitalization * Fix capitalization * Fix typo * Fix stencil mask triangle index order (this was causing failing render tests) * Cleanup vertex shader projection interface * Move projection creation function into its own file * Remove getProjectionName * Added comment for deduplicateWrapped * Remove unused vertex-buffer-related code from image source * Add globe raster layer render test * More render tests - test transition to mercator * Remove pointless test, add test descriptions * Render test for rendering poles on globe * SubdivisionGranularitySetting constructor takes an object * Remove "defines" parameter from useProgram * Refactor useProgram and Program constructor * Properly format translatePosMatrix comment * Refactor globe-specific code outside projection classes, remove stencil-specific granularity settings * Refactor granularity settings to be more readable * Minor refactor of ProjectionErrorMeasurement * Refactor draw_raster.ts * Move globe utility functions to utils.ts, use easeCubicInOut instead of smoothStep * Simplify imports in globe.ts * globe.ts refactor * Move ProjectionErrorMeasurement to a separate file * Refactor ProjectionErrorMeasurement Change parseRGBA8float to a private static function, use isWebGL2 function instead of instanceof * Refactor draw_raster.ts * Refactor globe projection error measurement to not use Painter * Painter.clearStencil creates custom ProjectionData instead of calling getProjectionData(null, null) * Remove "deduplicateWrapped" functionality from source_cache.ts * Globe projection no longer requires a map instance * Painter doesn't pass `this` to `updateGPUdependent` * isRenderingDirty is now a function * Rename ProjectionBase to Projection * Replace globeView property with setGlobeViewAllowed * Add mercator and globe projection unit tests * Remove tests that test for exact clipping planes * Update build test with new bundle size * isRenderingDirty is now a function * Globe - fill layer (#3882) * Port changes from main globe branch - basics Fix minor issues so that it compiles. * Fix PI redefinitions * Fix stencil shader * Port adaptation of raster layer for globe from main globe branch * Add globe.html example from pheonor's repo Minor changes (remove terrain, set initial zoom 0, change title and description) * Better map projection parameter doc comment, warn when using unknown projection * Mercator projectionData handles negative zoom correctly * Comment clarification * Fix spelling of "granularity" * Add missing docs * Convert ProjectionBase to an interface * Do not leak GL object in globe projection error measurement, add a destroy method to projection * Fix chrome performance warning, refactor error measurement Warning fixed by changing ring buffer size to 1, making ring buffer pointless, so I removed it. * Fix granularity capitalization * Fix capitalization * Fix typo * Fix stencil mask triangle index order (this was causing failing render tests) * Cleanup vertex shader projection interface * Move projection creation function into its own file * Remove getProjectionName * Added comment for deduplicateWrapped * Remove unused vertex-buffer-related code from image source * Add globe raster layer render test * More render tests - test transition to mercator * Remove pointless test, add test descriptions * Render test for rendering poles on globe * SubdivisionGranularitySetting constructor takes an object * Remove "defines" parameter from useProgram * Refactor useProgram and Program constructor * Properly format translatePosMatrix comment * Refactor globe-specific code outside projection classes, remove stencil-specific granularity settings * Refactor granularity settings to be more readable * Minor refactor of ProjectionErrorMeasurement * Refactor draw_raster.ts * Move globe utility functions to utils.ts, use easeCubicInOut instead of smoothStep * Simplify imports in globe.ts * globe.ts refactor * Move ProjectionErrorMeasurement to a separate file * Refactor ProjectionErrorMeasurement Change parseRGBA8float to a private static function, use isWebGL2 function instead of instanceof * Refactor draw_raster.ts * Refactor globe projection error measurement to not use Painter * Painter.clearStencil creates custom ProjectionData instead of calling getProjectionData(null, null) * Remove "deduplicateWrapped" functionality from source_cache.ts * Globe projection no longer requires a map instance * Painter doesn't pass `this` to `updateGPUdependent` * isRenderingDirty is now a function * Rename ProjectionBase to Projection * Replace globeView property with setGlobeViewAllowed * Add mercator and globe projection unit tests * Remove tests that test for exact clipping planes * Update build test with new bundle size * isRenderingDirty is now a function * Fill, fill-extrusion, line layers, subdivision: Import changes from kubapelc/globe-vector branch * Fix unit tests * Subdivision: ensure consistent triangle winding order, fix unit tests * Fix terrain * Fix fill extrusion not working with terrain * Fix typos * Fix line gradient bug * Subdivision: fix line ring handling * Subdivision: fix unit test expecting an invalid line segment * Fix fill-extrusion ring handling * Fill-extrusion refactor and fix failing test * Update terrain fill extrusion test expected image * Render tests for fill, line and fill-extrusion for globe * Move fillArrays function into a separate file * Add vector globe example * Remove changes for line and fill-extrusion layers to make the PR smaller * Add unit tests for fillArrays() * fillArrays unit test has better segment size limits * Update build test build size * Fix html example description * Fix missing docs for granularity settings * Rename globe fill render test tile source layer to "vector_tiles" * Fix classifyRings comment format * Move subdivisionGranularitySettingsNoSubdivision constant to a static readonly field, shorten the name * Use `import type` for SubdivisionGranularitySetting where possible * Fix typo * Revert fill_attributes back to default exports * Improve comment for scanline subdivision * Subdivision: break up scanline subdivision function into more functions * Move SubdivisionGranularitySetting into its own file * Unit tests: use mock of MercatorProjection instead of the full class * Add SegmentVector unit tests * Subdivision: unit tests for poles, ring triangulation, fix bug in ring triangulation * Subdivision: more pole unit tests * Subdivision: fix wireframe generation, add unit test for wireframe * Rename subdivisionGranularitySettings.ts to subdivision_granularity_settings.ts * Move granularity settings registration to subdivision * Update build size * Rename `fillArrays` to `fillLargeMeshArrays` * Move virtual buffers to a test util file * Better warning for segments.ts vertex overflow * Better comment for projection subdivision granularity * Clarify mesh comparison in fill_large_mesh_arrays.test.ts * Move mesh creating functions into a separate file, add tests for mesh comparison and grid creation * Refactor and add better doc comment for `fillLargeMeshArrays` * Refactor fill_large_mesh_arrays by removing duplicated code * Move debug functions to mesh_utils.ts * Unit tests: use StructArrays instead of VirtualVertexBuffer, etc. * Subdivision: refactor * Subdivision: rename subdivideFill to subdividePolygon, remove wireframe function * Subdivision: throw when a vertex is outside int16 range * Subdivision: refactor generatePoleQuad into a proper function * Subdivision: add subdivision benchmark * Subdivision: split scanline subdivision into smaller functions * Remove wireframe generation function * Subdivision: better doc comments for scanline subdivision * Fix 'as any' in segment.ts * Reuse condition in fill_large_arrays * Deduplicate code in fill_large_arrays * Subdivision: remove redundant function in tests * Subdivision: improve scanline subdivision comments * Subdivision: benchmark is not async * Rename SegmentVector's invalidateLast to forceNewSegmentOnTextPrepare * More tests for segment.ts * Fix typo in forceNewSegmentOnNextPrepare * Subdivision: more tests for fillLargeMeshArrays * Subdivision: better comment in fillLargeMeshArrays * Fix build due to bad merge. * Globe - line layer (#3961) * Fix merge * Import line layer changes from kubapelc/globe-vector * Lines: shorten line_bucket.test.ts subdivision settings * Lines: minor refactor * Lines: update build size * Lines: minor refactor * Globe - fill extrusion layer (#3968) * Import changes for fill-extrusion from main vector globe branch * Fill extrusion: refactor * Fill extrusion: indent shader ifdefs * Fill extrusion: add example * Fill extrusion: update build size * Move globe specific projection methods to projection interface * Fix failing unit test * Use vec3.clone() instead of manually copying vector components * Kubapelc/globe pr hillshade (#3979) * Import background layer changes from main vector globe branch * Import hillshade layer changes from main vector globe branch * Subdivision: explicit types * Fix single-pixel seams in the oceans * Add render test for background pattern on globe * Refactor drawBackground * Refactor drawHillshade * Update build size * Update globe background-pattern render test with results from CI * Hillshade: refactor prepareHillshade * Add a render test for fill layer seams fix * Globe - circle and heatmap layers (#4015) * Import changes for circle and heatmap layers from the main vector globe branch * Minor refactors * Update build size * Use "/ 8.0" in shader instead of "* 0.125" * Update shader comments * Use a thin type instead of full Transform in projection * Only import types in projection.ts * getPixelScale and getCircleRadiusCorrection only need map center as argument * Only import types where possible in projection classes * Smaller refactors * Fix failing unit test * Add heatmap render test * More explicit types in projection interface * Globe plane equation is a vec4 * Fix wrong args in projection functions * Improve readibility of build test and fix it. * Globe - symbols & symbol bugfixes (#4067) * Import changes from main vector globe branch * Fix import * Remove unused code * Remove unused imports * Update build size test * Remove unused function * Add render test results for Debian * Add another Debian render test variant * Add more render test variants * Hide collision boxes on the backfacing side of the globe * Fix pitch-aligned texts getting hidden when their anchor is beyond horizon * Update build size * Fix merge * Better comment in draw_collision_debug * Update build size The 10 kb size increase seems to come from the main branch * Minor refactor * Use explicit types, even for unused parameters * Refactor screenspace path projection * Refactor imports for projection.ts and collision_index.ts * Fix import in collision_index.ts * Globe - example images (#4140) * Add example images * Add "-" into example name * Remove basic globe example * Globe - clipping fix (#4146) * HiSilicon fix: enable face culling whereever possible (cherry picked from commit fe439a5) * Improve circle layer performance by discarding empty pixels (cherry picked from commit 266897d) * HiSilicon fix: software clipping of polygon outlines (cherry picked from commit 98167ba) * HiSilicon fix: software clipping for line layer (cherry picked from commit d521e95) * HiSilicon fix: circle software clipping (cherry picked from commit f2ed744) * HiSilicon fix: enable backface culling for symbols (cherry picked from commit 54e3632) * Update build test * Fix terrain using a mirrored projection matrix * Fix typos * Fix terrain coord textures being flipped vertically * Update build size * Fix rendering of images with face culling, fix image rendering near pole regions * Add render test for images on a globe * Update comment in circle.vertex.glsl * Fix bad merge * Fix lint * Fix location of old vertex count * replace expected file for terrain changes * Fix rename in main merge branch * Fix build test * Move projection to style class (#4267) * Move projection to style class * Fix lint * Fix unit tests * Increase build size * Update docs, fix test * Fix lint * Add test to cover projection change * Added more tests * Add an Atmosphere layer for Globe (#3888) (#4020) * Port of PoC atmosphere layer. * Fix resize for draw_atmosphere * Add some options. * Allow to change sun date and time * Fix import warning * Render atmosphere only when a Globe projection is selected * Add some comments * Add some comments * Change key * Update changelog * Fix merge with globe branch * Fix documentation and default background color. * Use black clear color only when atmosphere is on * Use atmosphere uniform for globe position, raidus in camera frame and inv projection matrix. * Remove unused project method * Update maplibre-gl-style-spec to 20.3.0 and use sky atmosphere parameter * Fix globe tests and use light position as Sun position. * Avoid type name collisions. * Add atmosphere test for globe projection. * Update expectedBytes for build test. * Fix PR comments. * Update Style test. * Remove unused method on projection * Add Sky Test. * Fix style test and add sky unit test. * Move getSunPos method * Fix mercator updateProjection * Remove isGlobe method and fix merge. * Fix globe atmosphere tests with new projection style. * Clean-up some projection and light. Fix setSky and add tests. * Remove sky test during update. * Clean-up * missing fix from merge * Fix lint * Terrain fix (#4343) * Fix missing image for globe example * Update atmosphere (#4345) * Merge Sky and Atmosphere code. * Update changelog * Fix generate-struct-arrays * Globe - transform+projection changes (#4341) * Delete unused file * Rename projection.name to projection.projectionName Since this interface will be implemented by the transfrom class soon * Symbols: displayed collision circles now exactly match their computed positions * Globe: use mercator projection for symbol placement when globe rendering is disabled * Group all getters/setters in the transform class * Transform: move transform-related stuff from the projection interface to transform class (WIP) * Transform: finish moving parts of projection into mercator_transform.ts * Transform: remove posMatrix usage from line symbol placement (WIP) * Transform: temporarily remove globe stuff (WIP, compilable) * Transform: fix line symbols * Symbols: fix wrong function names * Fix line point projections * Fix line rendering Some things are still broken * Fix line symbols sometimes being incorrectly oriented * Fix some failing unit tests * Fix single glyph orientation * Add another image to render test No idea why it is shifted by a few pixels but I assume that the new expected image is also correct * Add another expected image to textFit-grid-long test It was only failing on my machine, works fine in github CI windows tests * Fix some failing unit tests * Simplify getProjectionData interface and terrain matrix passing * Change comment at calculatePosMatrix * Fix symbols not rendering, remove unused shader parameters * Bring back globe src files * globe.test.ts is now globe_transform.test.ts * Move stuff from globe.ts to globe_transform.ts * Fix showTileBoundaries not working Fix the three render tests related to showTileBoundaries timing out. * Remove irrelevant test * Fix failing unit test * Transform: move more stuff from globe to globe_transform * Transform: better comments * Transfrom: isRenderingDirty cleanup * Transform: no more errors in globe_transform.ts * Transform: remove `get point()` from transform class * Transform: globe_transform.ts is compilable * Re-enable globe projection * Fix source_cache.ts sometimes crashing * Fix globe.ts - globe_transform.ts circular dependency * Fix and refactor getProjectionData interface Now it is actually compilable, with many bugs * Transform: fix failing unit tests * Transform: fix symbols not rendering on globe * Transform: minor fixes * Transform: update globe symbol render tests * Transform: unify how symbol/projection.ts exports stuff * Transform: improve comments * Remove unused function in painter * Transform: cleanup unneeded abstract functions * Transform: replace abstract getHorizon function with more generic isPointOnMapSurface function * Fix useGlobeRendering not being set properly * Transform: proper implementation of isPointOnMapSurface and screen pixel unprojection for globe * Transform: adapt more functions for globe * Transform: fix locationPoint implementation * Controls: globe panning experiments * Controls: reasonable globe panning * Controls: centering zoom for globe experiment * Transform: fix globe unit tests * Transform: fix remaining unit tests * Move mercator_transform.test to src/geo/projection * Transform: globe bugfixes and more unit tests * Transform: bugfix globe setLocationAtPoint * Transform: isolate accesses to globe projection to avoid unintentional transform's state changes * Transform: move related tests so they are near each other * Transform: improve globe unprojection accuracy * Transform: fix globe bugs * Transform: move globe unit tests * Transform: another globe setLocationAtPoint implementation * Transform: fix globe zoom adjustment not working * Transform: fix setLocationAtPoint * Transform: setLocationAtPoint and zoom WIP * Transform: adjust unit test to accept positive longitudes * Transform: improve globe math precision (fp64) * Transform: precision improvement, better camera position * Transform: another test WIP * Transform: fix setLocationAtPoint condition * Transform: more reasonable zoom for globe Still has bugs though * Transform: globe zoom works well when cursor is outside the globe * Transform: globe more consistent zoom logic * Transform: experimental pole edge clamp for globe * Transform: fix maxLatitudeForZoomLevel math * Transform: globe constrain experiment * Transform: minor improvements * Transform: globe panning 2.0 * Transform: globe panning 2.1 Adjust more constants! * Transform: some math for globe zoom * Transform: globe: working zoom controls without glitches * Transform: globe zoom: fix some more glitching * Transform: globe zoom: reduce panning when zoom pixel is far from the planet * Transform: zoom globe: simplify, better behaviour around poles * Transform: globe zoom: exact zooming * Transform: globe zoom: better comments * Transform: temporarily disable camera easeTo and flyTo * Transform: calling project/unproject on a globe should fail, rename project/unproject to be more descriptive * Transform: fitBounds: initial implementation for globe_transform Not working * Transform: fitBounds: zoom is now correct * Transform: fitBounds: padding works for north/south * Transform: fitBounds: just build on top of mercator code * Transform: fitBounds: the original way * Transform: fitBounds: back to mercator-buildon + done * Transform: tighter bounds for zoom heuristic transition * Transform: easeTo: probably works * Transform: attempt to handle camera options apparent zoom for globe * Transform: easeTo fixes WIP * Transform: easeTo: mostly working implementation (still WIP) * Transform: easeTo: small fixes * Transform: easeTo: intertia works for panning * Transform: globe zoom: add globe radius based slowing factor * Transform: globe zoom adjustments * Transform: jumpTo adapted for globe * Transform: camera flyTo works for globe * Make (un)projectToWorldCoordinates into standalone functions * Fix inertia sometimes rotating in the wrong direction * Fix transform center sometimes not getting wrapped, leading to visual artifacts * Transform: easeTo: slerp experiment * Transform: easeTo: revert slerp, add note on why it is not used * Transform: improve center animation for easeTo and flyTo * Minor refactor & remove some outdated TODOs * More refactor and TODOs * Transform: globe remembers its globeness state after clone, fixes improper collision box when globe gets soft-disabled * Terrain matrix refactor WIP * Terrain fixes * Transform: better comments, rename angularCoordinatesToVector to angularCoordinatesToSurfaceVector, some functions for globe WIP * Transform: getBounds for globe works * Transform: remove some comments * Fix merge * Remove globe.test.ts (it is now globe_transform.test.ts) * Rename Transform.updateProjection to newFrameUpdate * Revert globe.ts to pre-merge state * Revert mercator.ts to pre-merge state * New mechanism for creating specialized transforms, more merge fixes * Rename projectionMatrix to modelViewProjectionMatrix, refactor mercator_transform.ts a bit * More merge fixes, minor refactor of transforms * Add transform getters for atmosphere * Fix forgotten useGlobeControls uses * Fix cyclical dependency * Fix tests * Fix crashes * Fix manually triggered globe transition animation * Fix collision boxes not respecting mercator transition * Blend out atmosphere when transitioning to mercator * Fix globe transitions when mercator should be constrained * Reload all tiles upon projection change * Fix failing style tests * Fix terrain source cache tests * Fix map zoom¢er being applied in wrong order, causing zoom to be wrongly constrained under globe * Update globe pole render tests with correct zoom * Update globe unit test zooms * Fix more unit tests * Fix transform.apply not copying everything, fix globe controls not wrapping longitudes * Fix some globe tests * Fix globe setLocationAtPoint * Fix docs & lint * Increase globe setLocationAtPoint test desired precision * Some camera tests for globe * Fix easeTo test suite name and placing * Add rotated setLocationAtPoint test for globe, fix failing test * Fix globe easeTo & flyTo with bearing to follow spec, add tests * easeTo globe tests * All relevant camera tests for globe implemented * Update build size test * Fix symbols not respecting mercator * Update build size again * Terrain fix * Fix merge * Fix terrain shaders * Fix merge * Revert controls changes * Fix reverted files * Fix reverted camera tests * Revert forgotten file, fix lint * Update build size * Feedback comments for unit tests * Convert setters to functions: runtime code * Convert setters to functions: test code * Convert last setter to function * Fix some tests * Transform is now an interface * Rename Transform to ITransform * Remove abstract functions from transform base class * TransformHelper wip * Rename transform files * Finish transform rewrite * Fix mercator transform tests * Fix mercator_transform constructor * Fix symbol bucket test * Fix source cache tests * Fix transform clone bug & tests * Improve comments * More comments * Fix import * Move helper functions in tests to beginning of file * Fix collision index test accessing a private field * Remove unneeded null check * New utils tests + quadratic solve fix * Add remapSaturate tests * Add explicit types to line glyph placement * Refactor placeGlyphsAlongLine args into an object * Fix merge, cleanup draw_custom.test, fix missing perspective offset in globe transform * Fix draw_custom test * Update build test * Fix crashes * Fix transform_helper apply function not setting bearing correctly * Add test for TransformHelper * Fix TransformHelper.apply * Fix flipped text placement * Add new expected image to render test * Fix marker tests * Update build size * Move functions from mercator_transform.ts to mercator_utils.ts * Refactor un/projectToWorldCoordinates function args * Make zoomScale and scaleZoom standalone functions * Fix unprojectFromWorldCoordinates arg type * Move globe functions to separate file * Fix private member access in source_cache.test.ts * Fix deck.gl missing dot * Fix missing globe_utils.ts * Better `angleToRotateBetweenVectors2D` doccomment * Remove unneeded `protected` * Cleanup transform interface and remove duplicate comments * Split mercator_utils tests into a separate file * Fix tests * Split globe locationPoint tests a bit * Add more mercator tests * More globe tests * Fix globe getBounds and add tests for it * Remove unneeded function, update build size * projectTileCoordinates for globe now covered by test * Add globe_utils tests * Split up globe tests more * Fix missing doccomment * Rename transform's projection/unprojection functions * Better ray intersection comment and type * Reduce indentation * Improve unproject math readability * Add point-plane distance util function * Move tileCoordinatesToMercatorCoordinates to mercator_utils * Better name for location to mercator coordinate functions * Move angleToRotateBetweenVectors2D to utils * Refactor _globeness usage * Remove _initialized from GlobeTransform * Remove translatePosition from transform interface * Add IReadonlyTransform interface * Update build size * Remove unneeded comment * Fix painter test * Fix lint * Update test/build/min.test.ts * Update changelog * Globe - camera controls (#4408) * Camera controls changes from dev branch * Move stuff from globe_control_utils to globe_utils * Better globe_utils comments * Fix markers not being updated when globe is toggled * Fix globe tests * Update build size * Better comments for camera helper functions * Move camera helper functions to beginning of file * Camera: more and better comments * Update build size * Fix globe transform error correction handling * Better comments for _last* fields in globe transform * Refactor newFrameUpdate * Better comments for CoveringTilesOptions type members. * Refactor globe camera tests to use more describe statements * Remove isTilePositionOccluded function from transform interface * Fix camera tests * Add more mercator_utils test * Add more globe_transform tests * Fix failing render tests * Make camera helper functions static * Remove `around` from flyTo options. * Update build size * CameraHelper: initial implementation, inertia handling * Move createVec* functions to util.ts * CameraHelper: panning and zooming * CameraHelpers: implement cameraForBounds * CameraHelpers: handle jumpTo * CameraHelper: easeTo * CameraHelper: flyTo * Projection event contains new projection name and is fired by changing style's projection * Fix lint * Fix test camera/map not having proper CameraHelper * Fix easeTo not emitting zoom events * Fix cameraForBoxAndBearing globe not returning anything, rename camera helter types * Fix globe easeTo ignoring offset * Fix one flyTo test not creating camera properly * Update build size * Add projection transition event tests * Add example on how to compensate for how globe size changes with latitude * Revert scrollzoom delete removal * Remove apparentZoom parameter * CameraHelper is set in camera constuctor * Use spy for projection event unit tests * Remove unnecessary done() in tests * Update build size * Remove more unneeded done() calls * Do not use map.once callback in projection events tests * Better zoom delta example title and description * Rename globe zoom delta and planet size function example * Add zoom planet size function example image * Reduce size of some globe example images using compresspng * Globe: bugfixes: raster layer & projection change (#4546) * Port bugfix changes * Update build size * Fix render tests * Add render test result for debian * Increase raster tile granularity some more * Adjust warped raster tile render test * Add missing tsdoc param * Use single checkerboard image for render test * Globe examples now use setProjection * Add new raster-pole render test image * Add another raster-warped expected image * Use "style.load" event on map instead of on style * Adapt new heatmap code for globe, update build size * Fix render tests Most tests had subpixel shifts * Globe - custom layers API and examples, globe dev guide (#4577) * Port custom layer changes and globe docs * Port transform changes * Fix custom layer unit test * Fix failing render tests * Update build size * Update globe custom layer example descritions, remove forgotten code * Remove unused util function * Incorporate globe docs feedback * Refactor and expose tile mesh generation * Refactor custom layers to get smaller args object and access map transform directly * Simplify more of the custom layer API * Clean up and adapt more examples * Fix mercator matrix precision * Fix 3D model on terrain example * Rename projectionDataForMercatorCoords to defaultProjectionData * Document ProjectionData type * Update build size * Update developer-guides/globe.md Co-authored-by: Harel M <[email protected]> * Decouple ProjectionData from rendering code Rename fields to camelCase, move it to a separate file * Rename ProjectionData members * Fix mercator transform unit tests * Add an example to createTileMesh * Rename CustomRenderMethodInput.shader to shaderData * Add shaderData examples * Document TileMesh and CreateTileMeshOptions types * Fix custom layers in render tests * Update render tests Fails other than raster-warped were caused by increasing pos matrix precision in mercator_transform to 64 bit floats * Add render test result from linux * Update build size * Update src/render/program/projection_program.ts Co-authored-by: Harel M <[email protected]> * Rename createTileMeshInternal to createTileMeshWithBuffers * Update build size * Improve doc comments --------- Co-authored-by: Harel M <[email protected]> * Globe - Covering tiles (#4615) * Import coveringTiles changes from dev branch * Remove duplicated tiles used in render tests * Remove unused function * Fix typo * Properly handle tile wraps and LOD across antimeridian * Discard previous changes and use custom wrap values instead * Update build size * Add render test for LOD at antimeridian * Convert visibility numbers to enum * Refactor globe covering tiles into a separate file * Add yet another raster-warped expected image * Add unit tests for globe covering tiles * Refactor globe coveringTiles math to assume worldSize=1 instead of tileSize=1 * Split globe coveringTiles into more functions * Explain radiusOfMaxLvlLodInTiles value * Explain why checking 4 tile corners is (mostly) enough to construct an AABB. * Move mercator coveringTiles into a separate file * Yet another raster-warped expected image * Remove ITileVisibilityProvider interface * Use explicit types * PR feedback * Rename coveringTiles stack types * fix typo * Remove sky disabling in examples as this is no longer needed. * Fix spelling * Fix spelling - unencode * Fix more spelling * Fix lint * Update CHANGELOG.md --------- Co-authored-by: Jakub Pelc <[email protected]> Co-authored-by: Larrieu Vivian <[email protected]> Co-authored-by: Jakub Pelc <[email protected]>
* Globe - basic infrastructure, raster layer adaptation for globe (#3783) * Port changes from main globe branch - basics Fix minor issues so that it compiles. * Fix PI redefinitions * Fix stencil shader * Port adaptation of raster layer for globe from main globe branch * Add globe.html example from pheonor's repo Minor changes (remove terrain, set initial zoom 0, change title and description) * Better map projection parameter doc comment, warn when using unknown projection * Mercator projectionData handles negative zoom correctly * Comment clarification * Fix spelling of "granularity" * Add missing docs * Convert ProjectionBase to an interface * Do not leak GL object in globe projection error measurement, add a destroy method to projection * Fix chrome performance warning, refactor error measurement Warning fixed by changing ring buffer size to 1, making ring buffer pointless, so I removed it. * Fix granularity capitalization * Fix capitalization * Fix typo * Fix stencil mask triangle index order (this was causing failing render tests) * Cleanup vertex shader projection interface * Move projection creation function into its own file * Remove getProjectionName * Added comment for deduplicateWrapped * Remove unused vertex-buffer-related code from image source * Add globe raster layer render test * More render tests - test transition to mercator * Remove pointless test, add test descriptions * Render test for rendering poles on globe * SubdivisionGranularitySetting constructor takes an object * Remove "defines" parameter from useProgram * Refactor useProgram and Program constructor * Properly format translatePosMatrix comment * Refactor globe-specific code outside projection classes, remove stencil-specific granularity settings * Refactor granularity settings to be more readable * Minor refactor of ProjectionErrorMeasurement * Refactor draw_raster.ts * Move globe utility functions to utils.ts, use easeCubicInOut instead of smoothStep * Simplify imports in globe.ts * globe.ts refactor * Move ProjectionErrorMeasurement to a separate file * Refactor ProjectionErrorMeasurement Change parseRGBA8float to a private static function, use isWebGL2 function instead of instanceof * Refactor draw_raster.ts * Refactor globe projection error measurement to not use Painter * Painter.clearStencil creates custom ProjectionData instead of calling getProjectionData(null, null) * Remove "deduplicateWrapped" functionality from source_cache.ts * Globe projection no longer requires a map instance * Painter doesn't pass `this` to `updateGPUdependent` * isRenderingDirty is now a function * Rename ProjectionBase to Projection * Replace globeView property with setGlobeViewAllowed * Add mercator and globe projection unit tests * Remove tests that test for exact clipping planes * Update build test with new bundle size * isRenderingDirty is now a function * Globe - fill layer (#3882) * Port changes from main globe branch - basics Fix minor issues so that it compiles. * Fix PI redefinitions * Fix stencil shader * Port adaptation of raster layer for globe from main globe branch * Add globe.html example from pheonor's repo Minor changes (remove terrain, set initial zoom 0, change title and description) * Better map projection parameter doc comment, warn when using unknown projection * Mercator projectionData handles negative zoom correctly * Comment clarification * Fix spelling of "granularity" * Add missing docs * Convert ProjectionBase to an interface * Do not leak GL object in globe projection error measurement, add a destroy method to projection * Fix chrome performance warning, refactor error measurement Warning fixed by changing ring buffer size to 1, making ring buffer pointless, so I removed it. * Fix granularity capitalization * Fix capitalization * Fix typo * Fix stencil mask triangle index order (this was causing failing render tests) * Cleanup vertex shader projection interface * Move projection creation function into its own file * Remove getProjectionName * Added comment for deduplicateWrapped * Remove unused vertex-buffer-related code from image source * Add globe raster layer render test * More render tests - test transition to mercator * Remove pointless test, add test descriptions * Render test for rendering poles on globe * SubdivisionGranularitySetting constructor takes an object * Remove "defines" parameter from useProgram * Refactor useProgram and Program constructor * Properly format translatePosMatrix comment * Refactor globe-specific code outside projection classes, remove stencil-specific granularity settings * Refactor granularity settings to be more readable * Minor refactor of ProjectionErrorMeasurement * Refactor draw_raster.ts * Move globe utility functions to utils.ts, use easeCubicInOut instead of smoothStep * Simplify imports in globe.ts * globe.ts refactor * Move ProjectionErrorMeasurement to a separate file * Refactor ProjectionErrorMeasurement Change parseRGBA8float to a private static function, use isWebGL2 function instead of instanceof * Refactor draw_raster.ts * Refactor globe projection error measurement to not use Painter * Painter.clearStencil creates custom ProjectionData instead of calling getProjectionData(null, null) * Remove "deduplicateWrapped" functionality from source_cache.ts * Globe projection no longer requires a map instance * Painter doesn't pass `this` to `updateGPUdependent` * isRenderingDirty is now a function * Rename ProjectionBase to Projection * Replace globeView property with setGlobeViewAllowed * Add mercator and globe projection unit tests * Remove tests that test for exact clipping planes * Update build test with new bundle size * isRenderingDirty is now a function * Fill, fill-extrusion, line layers, subdivision: Import changes from kubapelc/globe-vector branch * Fix unit tests * Subdivision: ensure consistent triangle winding order, fix unit tests * Fix terrain * Fix fill extrusion not working with terrain * Fix typos * Fix line gradient bug * Subdivision: fix line ring handling * Subdivision: fix unit test expecting an invalid line segment * Fix fill-extrusion ring handling * Fill-extrusion refactor and fix failing test * Update terrain fill extrusion test expected image * Render tests for fill, line and fill-extrusion for globe * Move fillArrays function into a separate file * Add vector globe example * Remove changes for line and fill-extrusion layers to make the PR smaller * Add unit tests for fillArrays() * fillArrays unit test has better segment size limits * Update build test build size * Fix html example description * Fix missing docs for granularity settings * Rename globe fill render test tile source layer to "vector_tiles" * Fix classifyRings comment format * Move subdivisionGranularitySettingsNoSubdivision constant to a static readonly field, shorten the name * Use `import type` for SubdivisionGranularitySetting where possible * Fix typo * Revert fill_attributes back to default exports * Improve comment for scanline subdivision * Subdivision: break up scanline subdivision function into more functions * Move SubdivisionGranularitySetting into its own file * Unit tests: use mock of MercatorProjection instead of the full class * Add SegmentVector unit tests * Subdivision: unit tests for poles, ring triangulation, fix bug in ring triangulation * Subdivision: more pole unit tests * Subdivision: fix wireframe generation, add unit test for wireframe * Rename subdivisionGranularitySettings.ts to subdivision_granularity_settings.ts * Move granularity settings registration to subdivision * Update build size * Rename `fillArrays` to `fillLargeMeshArrays` * Move virtual buffers to a test util file * Better warning for segments.ts vertex overflow * Better comment for projection subdivision granularity * Clarify mesh comparison in fill_large_mesh_arrays.test.ts * Move mesh creating functions into a separate file, add tests for mesh comparison and grid creation * Refactor and add better doc comment for `fillLargeMeshArrays` * Refactor fill_large_mesh_arrays by removing duplicated code * Move debug functions to mesh_utils.ts * Unit tests: use StructArrays instead of VirtualVertexBuffer, etc. * Subdivision: refactor * Subdivision: rename subdivideFill to subdividePolygon, remove wireframe function * Subdivision: throw when a vertex is outside int16 range * Subdivision: refactor generatePoleQuad into a proper function * Subdivision: add subdivision benchmark * Subdivision: split scanline subdivision into smaller functions * Remove wireframe generation function * Subdivision: better doc comments for scanline subdivision * Fix 'as any' in segment.ts * Reuse condition in fill_large_arrays * Deduplicate code in fill_large_arrays * Subdivision: remove redundant function in tests * Subdivision: improve scanline subdivision comments * Subdivision: benchmark is not async * Rename SegmentVector's invalidateLast to forceNewSegmentOnTextPrepare * More tests for segment.ts * Fix typo in forceNewSegmentOnNextPrepare * Subdivision: more tests for fillLargeMeshArrays * Subdivision: better comment in fillLargeMeshArrays * Fix build due to bad merge. * Globe - line layer (#3961) * Fix merge * Import line layer changes from kubapelc/globe-vector * Lines: shorten line_bucket.test.ts subdivision settings * Lines: minor refactor * Lines: update build size * Lines: minor refactor * Globe - fill extrusion layer (#3968) * Import changes for fill-extrusion from main vector globe branch * Fill extrusion: refactor * Fill extrusion: indent shader ifdefs * Fill extrusion: add example * Fill extrusion: update build size * Move globe specific projection methods to projection interface * Fix failing unit test * Use vec3.clone() instead of manually copying vector components * Kubapelc/globe pr hillshade (#3979) * Import background layer changes from main vector globe branch * Import hillshade layer changes from main vector globe branch * Subdivision: explicit types * Fix single-pixel seams in the oceans * Add render test for background pattern on globe * Refactor drawBackground * Refactor drawHillshade * Update build size * Update globe background-pattern render test with results from CI * Hillshade: refactor prepareHillshade * Add a render test for fill layer seams fix * Globe - circle and heatmap layers (#4015) * Import changes for circle and heatmap layers from the main vector globe branch * Minor refactors * Update build size * Use "/ 8.0" in shader instead of "* 0.125" * Update shader comments * Use a thin type instead of full Transform in projection * Only import types in projection.ts * getPixelScale and getCircleRadiusCorrection only need map center as argument * Only import types where possible in projection classes * Smaller refactors * Fix failing unit test * Add heatmap render test * More explicit types in projection interface * Globe plane equation is a vec4 * Fix wrong args in projection functions * Improve readibility of build test and fix it. * Globe - symbols & symbol bugfixes (#4067) * Import changes from main vector globe branch * Fix import * Remove unused code * Remove unused imports * Update build size test * Remove unused function * Add render test results for Debian * Add another Debian render test variant * Add more render test variants * Hide collision boxes on the backfacing side of the globe * Fix pitch-aligned texts getting hidden when their anchor is beyond horizon * Update build size * Fix merge * Better comment in draw_collision_debug * Update build size The 10 kb size increase seems to come from the main branch * Minor refactor * Use explicit types, even for unused parameters * Refactor screenspace path projection * Refactor imports for projection.ts and collision_index.ts * Fix import in collision_index.ts * Globe - example images (#4140) * Add example images * Add "-" into example name * Remove basic globe example * Globe - clipping fix (#4146) * HiSilicon fix: enable face culling whereever possible (cherry picked from commit fe439a5) * Improve circle layer performance by discarding empty pixels (cherry picked from commit 266897d) * HiSilicon fix: software clipping of polygon outlines (cherry picked from commit 98167ba) * HiSilicon fix: software clipping for line layer (cherry picked from commit d521e95) * HiSilicon fix: circle software clipping (cherry picked from commit f2ed744) * HiSilicon fix: enable backface culling for symbols (cherry picked from commit 54e3632) * Update build test * Fix terrain using a mirrored projection matrix * Fix typos * Fix terrain coord textures being flipped vertically * Update build size * Fix rendering of images with face culling, fix image rendering near pole regions * Add render test for images on a globe * Update comment in circle.vertex.glsl * Fix bad merge * Fix lint * Fix location of old vertex count * replace expected file for terrain changes * Fix rename in main merge branch * Fix build test * Move projection to style class (#4267) * Move projection to style class * Fix lint * Fix unit tests * Increase build size * Update docs, fix test * Fix lint * Add test to cover projection change * Added more tests * Add an Atmosphere layer for Globe (#3888) (#4020) * Port of PoC atmosphere layer. * Fix resize for draw_atmosphere * Add some options. * Allow to change sun date and time * Fix import warning * Render atmosphere only when a Globe projection is selected * Add some comments * Add some comments * Change key * Update changelog * Fix merge with globe branch * Fix documentation and default background color. * Use black clear color only when atmosphere is on * Use atmosphere uniform for globe position, raidus in camera frame and inv projection matrix. * Remove unused project method * Update maplibre-gl-style-spec to 20.3.0 and use sky atmosphere parameter * Fix globe tests and use light position as Sun position. * Avoid type name collisions. * Add atmosphere test for globe projection. * Update expectedBytes for build test. * Fix PR comments. * Update Style test. * Remove unused method on projection * Add Sky Test. * Fix style test and add sky unit test. * Move getSunPos method * Fix mercator updateProjection * Remove isGlobe method and fix merge. * Fix globe atmosphere tests with new projection style. * Clean-up some projection and light. Fix setSky and add tests. * Remove sky test during update. * Clean-up * missing fix from merge * Fix lint * Terrain fix (#4343) * Fix missing image for globe example * Update atmosphere (#4345) * Merge Sky and Atmosphere code. * Update changelog * Fix generate-struct-arrays * Globe - transform+projection changes (#4341) * Delete unused file * Rename projection.name to projection.projectionName Since this interface will be implemented by the transfrom class soon * Symbols: displayed collision circles now exactly match their computed positions * Globe: use mercator projection for symbol placement when globe rendering is disabled * Group all getters/setters in the transform class * Transform: move transform-related stuff from the projection interface to transform class (WIP) * Transform: finish moving parts of projection into mercator_transform.ts * Transform: remove posMatrix usage from line symbol placement (WIP) * Transform: temporarily remove globe stuff (WIP, compilable) * Transform: fix line symbols * Symbols: fix wrong function names * Fix line point projections * Fix line rendering Some things are still broken * Fix line symbols sometimes being incorrectly oriented * Fix some failing unit tests * Fix single glyph orientation * Add another image to render test No idea why it is shifted by a few pixels but I assume that the new expected image is also correct * Add another expected image to textFit-grid-long test It was only failing on my machine, works fine in github CI windows tests * Fix some failing unit tests * Simplify getProjectionData interface and terrain matrix passing * Change comment at calculatePosMatrix * Fix symbols not rendering, remove unused shader parameters * Bring back globe src files * globe.test.ts is now globe_transform.test.ts * Move stuff from globe.ts to globe_transform.ts * Fix showTileBoundaries not working Fix the three render tests related to showTileBoundaries timing out. * Remove irrelevant test * Fix failing unit test * Transform: move more stuff from globe to globe_transform * Transform: better comments * Transfrom: isRenderingDirty cleanup * Transform: no more errors in globe_transform.ts * Transform: remove `get point()` from transform class * Transform: globe_transform.ts is compilable * Re-enable globe projection * Fix source_cache.ts sometimes crashing * Fix globe.ts - globe_transform.ts circular dependency * Fix and refactor getProjectionData interface Now it is actually compilable, with many bugs * Transform: fix failing unit tests * Transform: fix symbols not rendering on globe * Transform: minor fixes * Transform: update globe symbol render tests * Transform: unify how symbol/projection.ts exports stuff * Transform: improve comments * Remove unused function in painter * Transform: cleanup unneeded abstract functions * Transform: replace abstract getHorizon function with more generic isPointOnMapSurface function * Fix useGlobeRendering not being set properly * Transform: proper implementation of isPointOnMapSurface and screen pixel unprojection for globe * Transform: adapt more functions for globe * Transform: fix locationPoint implementation * Controls: globe panning experiments * Controls: reasonable globe panning * Controls: centering zoom for globe experiment * Transform: fix globe unit tests * Transform: fix remaining unit tests * Move mercator_transform.test to src/geo/projection * Transform: globe bugfixes and more unit tests * Transform: bugfix globe setLocationAtPoint * Transform: isolate accesses to globe projection to avoid unintentional transform's state changes * Transform: move related tests so they are near each other * Transform: improve globe unprojection accuracy * Transform: fix globe bugs * Transform: move globe unit tests * Transform: another globe setLocationAtPoint implementation * Transform: fix globe zoom adjustment not working * Transform: fix setLocationAtPoint * Transform: setLocationAtPoint and zoom WIP * Transform: adjust unit test to accept positive longitudes * Transform: improve globe math precision (fp64) * Transform: precision improvement, better camera position * Transform: another test WIP * Transform: fix setLocationAtPoint condition * Transform: more reasonable zoom for globe Still has bugs though * Transform: globe zoom works well when cursor is outside the globe * Transform: globe more consistent zoom logic * Transform: experimental pole edge clamp for globe * Transform: fix maxLatitudeForZoomLevel math * Transform: globe constrain experiment * Transform: minor improvements * Transform: globe panning 2.0 * Transform: globe panning 2.1 Adjust more constants! * Transform: some math for globe zoom * Transform: globe: working zoom controls without glitches * Transform: globe zoom: fix some more glitching * Transform: globe zoom: reduce panning when zoom pixel is far from the planet * Transform: zoom globe: simplify, better behaviour around poles * Transform: globe zoom: exact zooming * Transform: globe zoom: better comments * Transform: temporarily disable camera easeTo and flyTo * Transform: calling project/unproject on a globe should fail, rename project/unproject to be more descriptive * Transform: fitBounds: initial implementation for globe_transform Not working * Transform: fitBounds: zoom is now correct * Transform: fitBounds: padding works for north/south * Transform: fitBounds: just build on top of mercator code * Transform: fitBounds: the original way * Transform: fitBounds: back to mercator-buildon + done * Transform: tighter bounds for zoom heuristic transition * Transform: easeTo: probably works * Transform: attempt to handle camera options apparent zoom for globe * Transform: easeTo fixes WIP * Transform: easeTo: mostly working implementation (still WIP) * Transform: easeTo: small fixes * Transform: easeTo: intertia works for panning * Transform: globe zoom: add globe radius based slowing factor * Transform: globe zoom adjustments * Transform: jumpTo adapted for globe * Transform: camera flyTo works for globe * Make (un)projectToWorldCoordinates into standalone functions * Fix inertia sometimes rotating in the wrong direction * Fix transform center sometimes not getting wrapped, leading to visual artifacts * Transform: easeTo: slerp experiment * Transform: easeTo: revert slerp, add note on why it is not used * Transform: improve center animation for easeTo and flyTo * Minor refactor & remove some outdated TODOs * More refactor and TODOs * Transform: globe remembers its globeness state after clone, fixes improper collision box when globe gets soft-disabled * Terrain matrix refactor WIP * Terrain fixes * Transform: better comments, rename angularCoordinatesToVector to angularCoordinatesToSurfaceVector, some functions for globe WIP * Transform: getBounds for globe works * Transform: remove some comments * Fix merge * Remove globe.test.ts (it is now globe_transform.test.ts) * Rename Transform.updateProjection to newFrameUpdate * Revert globe.ts to pre-merge state * Revert mercator.ts to pre-merge state * New mechanism for creating specialized transforms, more merge fixes * Rename projectionMatrix to modelViewProjectionMatrix, refactor mercator_transform.ts a bit * More merge fixes, minor refactor of transforms * Add transform getters for atmosphere * Fix forgotten useGlobeControls uses * Fix cyclical dependency * Fix tests * Fix crashes * Fix manually triggered globe transition animation * Fix collision boxes not respecting mercator transition * Blend out atmosphere when transitioning to mercator * Fix globe transitions when mercator should be constrained * Reload all tiles upon projection change * Fix failing style tests * Fix terrain source cache tests * Fix map zoom¢er being applied in wrong order, causing zoom to be wrongly constrained under globe * Update globe pole render tests with correct zoom * Update globe unit test zooms * Fix more unit tests * Fix transform.apply not copying everything, fix globe controls not wrapping longitudes * Fix some globe tests * Fix globe setLocationAtPoint * Fix docs & lint * Increase globe setLocationAtPoint test desired precision * Some camera tests for globe * Fix easeTo test suite name and placing * Add rotated setLocationAtPoint test for globe, fix failing test * Fix globe easeTo & flyTo with bearing to follow spec, add tests * easeTo globe tests * All relevant camera tests for globe implemented * Update build size test * Fix symbols not respecting mercator * Update build size again * Terrain fix * Fix merge * Fix terrain shaders * Fix merge * Revert controls changes * Fix reverted files * Fix reverted camera tests * Revert forgotten file, fix lint * Update build size * Feedback comments for unit tests * Convert setters to functions: runtime code * Convert setters to functions: test code * Convert last setter to function * Fix some tests * Transform is now an interface * Rename Transform to ITransform * Remove abstract functions from transform base class * TransformHelper wip * Rename transform files * Finish transform rewrite * Fix mercator transform tests * Fix mercator_transform constructor * Fix symbol bucket test * Fix source cache tests * Fix transform clone bug & tests * Improve comments * More comments * Fix import * Move helper functions in tests to beginning of file * Fix collision index test accessing a private field * Remove unneeded null check * New utils tests + quadratic solve fix * Add remapSaturate tests * Add explicit types to line glyph placement * Refactor placeGlyphsAlongLine args into an object * Fix merge, cleanup draw_custom.test, fix missing perspective offset in globe transform * Fix draw_custom test * Update build test * Fix crashes * Fix transform_helper apply function not setting bearing correctly * Add test for TransformHelper * Fix TransformHelper.apply * Fix flipped text placement * Add new expected image to render test * Fix marker tests * Update build size * Move functions from mercator_transform.ts to mercator_utils.ts * Refactor un/projectToWorldCoordinates function args * Make zoomScale and scaleZoom standalone functions * Fix unprojectFromWorldCoordinates arg type * Move globe functions to separate file * Fix private member access in source_cache.test.ts * Fix deck.gl missing dot * Fix missing globe_utils.ts * Better `angleToRotateBetweenVectors2D` doccomment * Remove unneeded `protected` * Cleanup transform interface and remove duplicate comments * Split mercator_utils tests into a separate file * Fix tests * Split globe locationPoint tests a bit * Add more mercator tests * More globe tests * Fix globe getBounds and add tests for it * Remove unneeded function, update build size * projectTileCoordinates for globe now covered by test * Add globe_utils tests * Split up globe tests more * Fix missing doccomment * Rename transform's projection/unprojection functions * Better ray intersection comment and type * Reduce indentation * Improve unproject math readability * Add point-plane distance util function * Move tileCoordinatesToMercatorCoordinates to mercator_utils * Better name for location to mercator coordinate functions * Move angleToRotateBetweenVectors2D to utils * Refactor _globeness usage * Remove _initialized from GlobeTransform * Remove translatePosition from transform interface * Add IReadonlyTransform interface * Update build size * Remove unneeded comment * Fix painter test * Fix lint * Update test/build/min.test.ts * Update changelog * Globe - camera controls (#4408) * Camera controls changes from dev branch * Move stuff from globe_control_utils to globe_utils * Better globe_utils comments * Fix markers not being updated when globe is toggled * Fix globe tests * Update build size * Better comments for camera helper functions * Move camera helper functions to beginning of file * Camera: more and better comments * Update build size * Fix globe transform error correction handling * Better comments for _last* fields in globe transform * Refactor newFrameUpdate * Better comments for CoveringTilesOptions type members. * Refactor globe camera tests to use more describe statements * Remove isTilePositionOccluded function from transform interface * Fix camera tests * Add more mercator_utils test * Add more globe_transform tests * Fix failing render tests * Make camera helper functions static * Remove `around` from flyTo options. * Update build size * CameraHelper: initial implementation, inertia handling * Move createVec* functions to util.ts * CameraHelper: panning and zooming * CameraHelpers: implement cameraForBounds * CameraHelpers: handle jumpTo * CameraHelper: easeTo * CameraHelper: flyTo * Projection event contains new projection name and is fired by changing style's projection * Fix lint * Fix test camera/map not having proper CameraHelper * Fix easeTo not emitting zoom events * Fix cameraForBoxAndBearing globe not returning anything, rename camera helter types * Fix globe easeTo ignoring offset * Fix one flyTo test not creating camera properly * Update build size * Add projection transition event tests * Add example on how to compensate for how globe size changes with latitude * Revert scrollzoom delete removal * Remove apparentZoom parameter * CameraHelper is set in camera constuctor * Use spy for projection event unit tests * Remove unnecessary done() in tests * Update build size * Remove more unneeded done() calls * Do not use map.once callback in projection events tests * Better zoom delta example title and description * Rename globe zoom delta and planet size function example * Add zoom planet size function example image * Reduce size of some globe example images using compresspng * Globe: bugfixes: raster layer & projection change (#4546) * Port bugfix changes * Update build size * Fix render tests * Add render test result for debian * Increase raster tile granularity some more * Adjust warped raster tile render test * Add missing tsdoc param * Use single checkerboard image for render test * Globe examples now use setProjection * Add new raster-pole render test image * Add another raster-warped expected image * Use "style.load" event on map instead of on style * Adapt new heatmap code for globe, update build size * Fix render tests Most tests had subpixel shifts * Globe - custom layers API and examples, globe dev guide (#4577) * Port custom layer changes and globe docs * Port transform changes * Fix custom layer unit test * Fix failing render tests * Update build size * Update globe custom layer example descritions, remove forgotten code * Remove unused util function * Incorporate globe docs feedback * Refactor and expose tile mesh generation * Refactor custom layers to get smaller args object and access map transform directly * Simplify more of the custom layer API * Clean up and adapt more examples * Fix mercator matrix precision * Fix 3D model on terrain example * Rename projectionDataForMercatorCoords to defaultProjectionData * Document ProjectionData type * Update build size * Update developer-guides/globe.md Co-authored-by: Harel M <[email protected]> * Decouple ProjectionData from rendering code Rename fields to camelCase, move it to a separate file * Rename ProjectionData members * Fix mercator transform unit tests * Add an example to createTileMesh * Rename CustomRenderMethodInput.shader to shaderData * Add shaderData examples * Document TileMesh and CreateTileMeshOptions types * Fix custom layers in render tests * Update render tests Fails other than raster-warped were caused by increasing pos matrix precision in mercator_transform to 64 bit floats * Add render test result from linux * Update build size * Update src/render/program/projection_program.ts Co-authored-by: Harel M <[email protected]> * Rename createTileMeshInternal to createTileMeshWithBuffers * Update build size * Improve doc comments --------- Co-authored-by: Harel M <[email protected]> * Globe - Covering tiles (#4615) * Import coveringTiles changes from dev branch * Remove duplicated tiles used in render tests * Remove unused function * Fix typo * Properly handle tile wraps and LOD across antimeridian * Discard previous changes and use custom wrap values instead * Update build size * Add render test for LOD at antimeridian * Convert visibility numbers to enum * Refactor globe covering tiles into a separate file * Add yet another raster-warped expected image * Add unit tests for globe covering tiles * Refactor globe coveringTiles math to assume worldSize=1 instead of tileSize=1 * Split globe coveringTiles into more functions * Explain radiusOfMaxLvlLodInTiles value * Explain why checking 4 tile corners is (mostly) enough to construct an AABB. * Move mercator coveringTiles into a separate file * Yet another raster-warped expected image * Remove ITileVisibilityProvider interface * Use explicit types * PR feedback * Rename coveringTiles stack types * fix typo * Remove sky disabling in examples as this is no longer needed. * Fix spelling * Fix spelling - unencode * Fix more spelling * Fix lint * Add basic roll capability * code hygiene * update sky shader to use roll angle * fix horizon /sky display when rolled * reduce repeat calls to potentially expensive functions * use slerp instread of euler angle interpolation for mercator easeTo(). Also reverses definition of roll. * safe roll pitch bearing near singularity * add option to use slerp or old linear interpolation of Euler angles * code hygiene * code hygiene * fix unit tests * add roll unit tests * change euler angle behavior at the end of easeTo() to use the representation specified by the caller. This only matters at the singularity (pitch = 0) * unit tests fro R2D and D2R * add euler angle unit tests * add roll to transform unit tests * add roll to transform helper test * code hygiene * add sky and fog render tests * code hygiene * this rotates labels as I intended it to when pitchWithMap = true, rotateWithMap= false, but I don't think that's what we want * Revert "this rotates labels as I intended it to when pitchWithMap = true, rotateWithMap= false, but I don't think that's what we want" This reverts commit 01845a9. * extend rotateWithMap to include the effects of camera roll * Add roll icon render tests * getPitchedLabelPlaneMatrix unit tests * add getPitchedLabelPlaneMatrix unit test * add getGlCoordMatrix unit tests * remove console.log * code hygiene * add roll text alignment render tests * fix lint * add text upright with roll render test * add combined rotation text upright render test * add text-pitch-scaling render test with roll * fix collision box when camera is rolled * add skew matrix tests at horizon. * faster getTileSkewMatrix * update changelog * updated expected build size * remove "useSlerp" flag from mercator transform, and use slerp in globe transform as well. * fix merge error * increase test coverage * switch from _underscore fields to getters * add render text for different text alignments with rolled horizon present. * change private angle names in transform to include prefix "InRadians", and add getters directly in radians. Remove ambiguous member "angle", which was negative bearingInRadians. * updated library size * use *InRadians where possible * combine duplicate interpolation code from mercator and globe * add roll to root style spec * change getTileSkewMatrix to return vectors instead of mat2 * fix lint * Add roll visualization to Navigation Control, and add mouse control of roll using Ctrl + right click. * Update style spec and remove "as any" in jumpTo() * rearrrange if-else * add roll and pitch control and visualization to navigation example * update build size * fix bad changelog merge * add mouseRollHandler and DragRotateHandler unit tests --------- Co-authored-by: Jakub Pelc <[email protected]> Co-authored-by: HarelM <[email protected]> Co-authored-by: Larrieu Vivian <[email protected]> Co-authored-by: Jakub Pelc <[email protected]>
* Globe - basic infrastructure, raster layer adaptation for globe (#3783) * Port changes from main globe branch - basics Fix minor issues so that it compiles. * Fix PI redefinitions * Fix stencil shader * Port adaptation of raster layer for globe from main globe branch * Add globe.html example from pheonor's repo Minor changes (remove terrain, set initial zoom 0, change title and description) * Better map projection parameter doc comment, warn when using unknown projection * Mercator projectionData handles negative zoom correctly * Comment clarification * Fix spelling of "granularity" * Add missing docs * Convert ProjectionBase to an interface * Do not leak GL object in globe projection error measurement, add a destroy method to projection * Fix chrome performance warning, refactor error measurement Warning fixed by changing ring buffer size to 1, making ring buffer pointless, so I removed it. * Fix granularity capitalization * Fix capitalization * Fix typo * Fix stencil mask triangle index order (this was causing failing render tests) * Cleanup vertex shader projection interface * Move projection creation function into its own file * Remove getProjectionName * Added comment for deduplicateWrapped * Remove unused vertex-buffer-related code from image source * Add globe raster layer render test * More render tests - test transition to mercator * Remove pointless test, add test descriptions * Render test for rendering poles on globe * SubdivisionGranularitySetting constructor takes an object * Remove "defines" parameter from useProgram * Refactor useProgram and Program constructor * Properly format translatePosMatrix comment * Refactor globe-specific code outside projection classes, remove stencil-specific granularity settings * Refactor granularity settings to be more readable * Minor refactor of ProjectionErrorMeasurement * Refactor draw_raster.ts * Move globe utility functions to utils.ts, use easeCubicInOut instead of smoothStep * Simplify imports in globe.ts * globe.ts refactor * Move ProjectionErrorMeasurement to a separate file * Refactor ProjectionErrorMeasurement Change parseRGBA8float to a private static function, use isWebGL2 function instead of instanceof * Refactor draw_raster.ts * Refactor globe projection error measurement to not use Painter * Painter.clearStencil creates custom ProjectionData instead of calling getProjectionData(null, null) * Remove "deduplicateWrapped" functionality from source_cache.ts * Globe projection no longer requires a map instance * Painter doesn't pass `this` to `updateGPUdependent` * isRenderingDirty is now a function * Rename ProjectionBase to Projection * Replace globeView property with setGlobeViewAllowed * Add mercator and globe projection unit tests * Remove tests that test for exact clipping planes * Update build test with new bundle size * isRenderingDirty is now a function * Globe - fill layer (#3882) * Port changes from main globe branch - basics Fix minor issues so that it compiles. * Fix PI redefinitions * Fix stencil shader * Port adaptation of raster layer for globe from main globe branch * Add globe.html example from pheonor's repo Minor changes (remove terrain, set initial zoom 0, change title and description) * Better map projection parameter doc comment, warn when using unknown projection * Mercator projectionData handles negative zoom correctly * Comment clarification * Fix spelling of "granularity" * Add missing docs * Convert ProjectionBase to an interface * Do not leak GL object in globe projection error measurement, add a destroy method to projection * Fix chrome performance warning, refactor error measurement Warning fixed by changing ring buffer size to 1, making ring buffer pointless, so I removed it. * Fix granularity capitalization * Fix capitalization * Fix typo * Fix stencil mask triangle index order (this was causing failing render tests) * Cleanup vertex shader projection interface * Move projection creation function into its own file * Remove getProjectionName * Added comment for deduplicateWrapped * Remove unused vertex-buffer-related code from image source * Add globe raster layer render test * More render tests - test transition to mercator * Remove pointless test, add test descriptions * Render test for rendering poles on globe * SubdivisionGranularitySetting constructor takes an object * Remove "defines" parameter from useProgram * Refactor useProgram and Program constructor * Properly format translatePosMatrix comment * Refactor globe-specific code outside projection classes, remove stencil-specific granularity settings * Refactor granularity settings to be more readable * Minor refactor of ProjectionErrorMeasurement * Refactor draw_raster.ts * Move globe utility functions to utils.ts, use easeCubicInOut instead of smoothStep * Simplify imports in globe.ts * globe.ts refactor * Move ProjectionErrorMeasurement to a separate file * Refactor ProjectionErrorMeasurement Change parseRGBA8float to a private static function, use isWebGL2 function instead of instanceof * Refactor draw_raster.ts * Refactor globe projection error measurement to not use Painter * Painter.clearStencil creates custom ProjectionData instead of calling getProjectionData(null, null) * Remove "deduplicateWrapped" functionality from source_cache.ts * Globe projection no longer requires a map instance * Painter doesn't pass `this` to `updateGPUdependent` * isRenderingDirty is now a function * Rename ProjectionBase to Projection * Replace globeView property with setGlobeViewAllowed * Add mercator and globe projection unit tests * Remove tests that test for exact clipping planes * Update build test with new bundle size * isRenderingDirty is now a function * Fill, fill-extrusion, line layers, subdivision: Import changes from kubapelc/globe-vector branch * Fix unit tests * Subdivision: ensure consistent triangle winding order, fix unit tests * Fix terrain * Fix fill extrusion not working with terrain * Fix typos * Fix line gradient bug * Subdivision: fix line ring handling * Subdivision: fix unit test expecting an invalid line segment * Fix fill-extrusion ring handling * Fill-extrusion refactor and fix failing test * Update terrain fill extrusion test expected image * Render tests for fill, line and fill-extrusion for globe * Move fillArrays function into a separate file * Add vector globe example * Remove changes for line and fill-extrusion layers to make the PR smaller * Add unit tests for fillArrays() * fillArrays unit test has better segment size limits * Update build test build size * Fix html example description * Fix missing docs for granularity settings * Rename globe fill render test tile source layer to "vector_tiles" * Fix classifyRings comment format * Move subdivisionGranularitySettingsNoSubdivision constant to a static readonly field, shorten the name * Use `import type` for SubdivisionGranularitySetting where possible * Fix typo * Revert fill_attributes back to default exports * Improve comment for scanline subdivision * Subdivision: break up scanline subdivision function into more functions * Move SubdivisionGranularitySetting into its own file * Unit tests: use mock of MercatorProjection instead of the full class * Add SegmentVector unit tests * Subdivision: unit tests for poles, ring triangulation, fix bug in ring triangulation * Subdivision: more pole unit tests * Subdivision: fix wireframe generation, add unit test for wireframe * Rename subdivisionGranularitySettings.ts to subdivision_granularity_settings.ts * Move granularity settings registration to subdivision * Update build size * Rename `fillArrays` to `fillLargeMeshArrays` * Move virtual buffers to a test util file * Better warning for segments.ts vertex overflow * Better comment for projection subdivision granularity * Clarify mesh comparison in fill_large_mesh_arrays.test.ts * Move mesh creating functions into a separate file, add tests for mesh comparison and grid creation * Refactor and add better doc comment for `fillLargeMeshArrays` * Refactor fill_large_mesh_arrays by removing duplicated code * Move debug functions to mesh_utils.ts * Unit tests: use StructArrays instead of VirtualVertexBuffer, etc. * Subdivision: refactor * Subdivision: rename subdivideFill to subdividePolygon, remove wireframe function * Subdivision: throw when a vertex is outside int16 range * Subdivision: refactor generatePoleQuad into a proper function * Subdivision: add subdivision benchmark * Subdivision: split scanline subdivision into smaller functions * Remove wireframe generation function * Subdivision: better doc comments for scanline subdivision * Fix 'as any' in segment.ts * Reuse condition in fill_large_arrays * Deduplicate code in fill_large_arrays * Subdivision: remove redundant function in tests * Subdivision: improve scanline subdivision comments * Subdivision: benchmark is not async * Rename SegmentVector's invalidateLast to forceNewSegmentOnTextPrepare * More tests for segment.ts * Fix typo in forceNewSegmentOnNextPrepare * Subdivision: more tests for fillLargeMeshArrays * Subdivision: better comment in fillLargeMeshArrays * Fix build due to bad merge. * Globe - line layer (#3961) * Fix merge * Import line layer changes from kubapelc/globe-vector * Lines: shorten line_bucket.test.ts subdivision settings * Lines: minor refactor * Lines: update build size * Lines: minor refactor * Globe - fill extrusion layer (#3968) * Import changes for fill-extrusion from main vector globe branch * Fill extrusion: refactor * Fill extrusion: indent shader ifdefs * Fill extrusion: add example * Fill extrusion: update build size * Move globe specific projection methods to projection interface * Fix failing unit test * Use vec3.clone() instead of manually copying vector components * Kubapelc/globe pr hillshade (#3979) * Import background layer changes from main vector globe branch * Import hillshade layer changes from main vector globe branch * Subdivision: explicit types * Fix single-pixel seams in the oceans * Add render test for background pattern on globe * Refactor drawBackground * Refactor drawHillshade * Update build size * Update globe background-pattern render test with results from CI * Hillshade: refactor prepareHillshade * Add a render test for fill layer seams fix * Globe - circle and heatmap layers (#4015) * Import changes for circle and heatmap layers from the main vector globe branch * Minor refactors * Update build size * Use "/ 8.0" in shader instead of "* 0.125" * Update shader comments * Use a thin type instead of full Transform in projection * Only import types in projection.ts * getPixelScale and getCircleRadiusCorrection only need map center as argument * Only import types where possible in projection classes * Smaller refactors * Fix failing unit test * Add heatmap render test * More explicit types in projection interface * Globe plane equation is a vec4 * Fix wrong args in projection functions * Improve readibility of build test and fix it. * Globe - symbols & symbol bugfixes (#4067) * Import changes from main vector globe branch * Fix import * Remove unused code * Remove unused imports * Update build size test * Remove unused function * Add render test results for Debian * Add another Debian render test variant * Add more render test variants * Hide collision boxes on the backfacing side of the globe * Fix pitch-aligned texts getting hidden when their anchor is beyond horizon * Update build size * Fix merge * Better comment in draw_collision_debug * Update build size The 10 kb size increase seems to come from the main branch * Minor refactor * Use explicit types, even for unused parameters * Refactor screenspace path projection * Refactor imports for projection.ts and collision_index.ts * Fix import in collision_index.ts * Globe - example images (#4140) * Add example images * Add "-" into example name * Remove basic globe example * Globe - clipping fix (#4146) * HiSilicon fix: enable face culling whereever possible (cherry picked from commit fe439a5) * Improve circle layer performance by discarding empty pixels (cherry picked from commit 266897d) * HiSilicon fix: software clipping of polygon outlines (cherry picked from commit 98167ba) * HiSilicon fix: software clipping for line layer (cherry picked from commit d521e95) * HiSilicon fix: circle software clipping (cherry picked from commit f2ed744) * HiSilicon fix: enable backface culling for symbols (cherry picked from commit 54e3632) * Update build test * Fix terrain using a mirrored projection matrix * Fix typos * Fix terrain coord textures being flipped vertically * Update build size * Fix rendering of images with face culling, fix image rendering near pole regions * Add render test for images on a globe * Update comment in circle.vertex.glsl * Fix bad merge * Fix lint * Fix location of old vertex count * replace expected file for terrain changes * Fix rename in main merge branch * Fix build test * Move projection to style class (#4267) * Move projection to style class * Fix lint * Fix unit tests * Increase build size * Update docs, fix test * Fix lint * Add test to cover projection change * Added more tests * Add an Atmosphere layer for Globe (#3888) (#4020) * Port of PoC atmosphere layer. * Fix resize for draw_atmosphere * Add some options. * Allow to change sun date and time * Fix import warning * Render atmosphere only when a Globe projection is selected * Add some comments * Add some comments * Change key * Update changelog * Fix merge with globe branch * Fix documentation and default background color. * Use black clear color only when atmosphere is on * Use atmosphere uniform for globe position, raidus in camera frame and inv projection matrix. * Remove unused project method * Update maplibre-gl-style-spec to 20.3.0 and use sky atmosphere parameter * Fix globe tests and use light position as Sun position. * Avoid type name collisions. * Add atmosphere test for globe projection. * Update expectedBytes for build test. * Fix PR comments. * Update Style test. * Remove unused method on projection * Add Sky Test. * Fix style test and add sky unit test. * Move getSunPos method * Fix mercator updateProjection * Remove isGlobe method and fix merge. * Fix globe atmosphere tests with new projection style. * Clean-up some projection and light. Fix setSky and add tests. * Remove sky test during update. * Clean-up * missing fix from merge * Fix lint * Terrain fix (#4343) * Fix missing image for globe example * Update atmosphere (#4345) * Merge Sky and Atmosphere code. * Update changelog * Fix generate-struct-arrays * Globe - transform+projection changes (#4341) * Delete unused file * Rename projection.name to projection.projectionName Since this interface will be implemented by the transfrom class soon * Symbols: displayed collision circles now exactly match their computed positions * Globe: use mercator projection for symbol placement when globe rendering is disabled * Group all getters/setters in the transform class * Transform: move transform-related stuff from the projection interface to transform class (WIP) * Transform: finish moving parts of projection into mercator_transform.ts * Transform: remove posMatrix usage from line symbol placement (WIP) * Transform: temporarily remove globe stuff (WIP, compilable) * Transform: fix line symbols * Symbols: fix wrong function names * Fix line point projections * Fix line rendering Some things are still broken * Fix line symbols sometimes being incorrectly oriented * Fix some failing unit tests * Fix single glyph orientation * Add another image to render test No idea why it is shifted by a few pixels but I assume that the new expected image is also correct * Add another expected image to textFit-grid-long test It was only failing on my machine, works fine in github CI windows tests * Fix some failing unit tests * Simplify getProjectionData interface and terrain matrix passing * Change comment at calculatePosMatrix * Fix symbols not rendering, remove unused shader parameters * Bring back globe src files * globe.test.ts is now globe_transform.test.ts * Move stuff from globe.ts to globe_transform.ts * Fix showTileBoundaries not working Fix the three render tests related to showTileBoundaries timing out. * Remove irrelevant test * Fix failing unit test * Transform: move more stuff from globe to globe_transform * Transform: better comments * Transfrom: isRenderingDirty cleanup * Transform: no more errors in globe_transform.ts * Transform: remove `get point()` from transform class * Transform: globe_transform.ts is compilable * Re-enable globe projection * Fix source_cache.ts sometimes crashing * Fix globe.ts - globe_transform.ts circular dependency * Fix and refactor getProjectionData interface Now it is actually compilable, with many bugs * Transform: fix failing unit tests * Transform: fix symbols not rendering on globe * Transform: minor fixes * Transform: update globe symbol render tests * Transform: unify how symbol/projection.ts exports stuff * Transform: improve comments * Remove unused function in painter * Transform: cleanup unneeded abstract functions * Transform: replace abstract getHorizon function with more generic isPointOnMapSurface function * Fix useGlobeRendering not being set properly * Transform: proper implementation of isPointOnMapSurface and screen pixel unprojection for globe * Transform: adapt more functions for globe * Transform: fix locationPoint implementation * Controls: globe panning experiments * Controls: reasonable globe panning * Controls: centering zoom for globe experiment * Transform: fix globe unit tests * Transform: fix remaining unit tests * Move mercator_transform.test to src/geo/projection * Transform: globe bugfixes and more unit tests * Transform: bugfix globe setLocationAtPoint * Transform: isolate accesses to globe projection to avoid unintentional transform's state changes * Transform: move related tests so they are near each other * Transform: improve globe unprojection accuracy * Transform: fix globe bugs * Transform: move globe unit tests * Transform: another globe setLocationAtPoint implementation * Transform: fix globe zoom adjustment not working * Transform: fix setLocationAtPoint * Transform: setLocationAtPoint and zoom WIP * Transform: adjust unit test to accept positive longitudes * Transform: improve globe math precision (fp64) * Transform: precision improvement, better camera position * Transform: another test WIP * Transform: fix setLocationAtPoint condition * Transform: more reasonable zoom for globe Still has bugs though * Transform: globe zoom works well when cursor is outside the globe * Transform: globe more consistent zoom logic * Transform: experimental pole edge clamp for globe * Transform: fix maxLatitudeForZoomLevel math * Transform: globe constrain experiment * Transform: minor improvements * Transform: globe panning 2.0 * Transform: globe panning 2.1 Adjust more constants! * Transform: some math for globe zoom * Transform: globe: working zoom controls without glitches * Transform: globe zoom: fix some more glitching * Transform: globe zoom: reduce panning when zoom pixel is far from the planet * Transform: zoom globe: simplify, better behaviour around poles * Transform: globe zoom: exact zooming * Transform: globe zoom: better comments * Transform: temporarily disable camera easeTo and flyTo * Transform: calling project/unproject on a globe should fail, rename project/unproject to be more descriptive * Transform: fitBounds: initial implementation for globe_transform Not working * Transform: fitBounds: zoom is now correct * Transform: fitBounds: padding works for north/south * Transform: fitBounds: just build on top of mercator code * Transform: fitBounds: the original way * Transform: fitBounds: back to mercator-buildon + done * Transform: tighter bounds for zoom heuristic transition * Transform: easeTo: probably works * Transform: attempt to handle camera options apparent zoom for globe * Transform: easeTo fixes WIP * Transform: easeTo: mostly working implementation (still WIP) * Transform: easeTo: small fixes * Transform: easeTo: intertia works for panning * Transform: globe zoom: add globe radius based slowing factor * Transform: globe zoom adjustments * Transform: jumpTo adapted for globe * Transform: camera flyTo works for globe * Make (un)projectToWorldCoordinates into standalone functions * Fix inertia sometimes rotating in the wrong direction * Fix transform center sometimes not getting wrapped, leading to visual artifacts * Transform: easeTo: slerp experiment * Transform: easeTo: revert slerp, add note on why it is not used * Transform: improve center animation for easeTo and flyTo * Minor refactor & remove some outdated TODOs * More refactor and TODOs * Transform: globe remembers its globeness state after clone, fixes improper collision box when globe gets soft-disabled * Terrain matrix refactor WIP * Terrain fixes * Transform: better comments, rename angularCoordinatesToVector to angularCoordinatesToSurfaceVector, some functions for globe WIP * Transform: getBounds for globe works * Transform: remove some comments * Fix merge * Remove globe.test.ts (it is now globe_transform.test.ts) * Rename Transform.updateProjection to newFrameUpdate * Revert globe.ts to pre-merge state * Revert mercator.ts to pre-merge state * New mechanism for creating specialized transforms, more merge fixes * Rename projectionMatrix to modelViewProjectionMatrix, refactor mercator_transform.ts a bit * More merge fixes, minor refactor of transforms * Add transform getters for atmosphere * Fix forgotten useGlobeControls uses * Fix cyclical dependency * Fix tests * Fix crashes * Fix manually triggered globe transition animation * Fix collision boxes not respecting mercator transition * Blend out atmosphere when transitioning to mercator * Fix globe transitions when mercator should be constrained * Reload all tiles upon projection change * Fix failing style tests * Fix terrain source cache tests * Fix map zoom¢er being applied in wrong order, causing zoom to be wrongly constrained under globe * Update globe pole render tests with correct zoom * Update globe unit test zooms * Fix more unit tests * Fix transform.apply not copying everything, fix globe controls not wrapping longitudes * Fix some globe tests * Fix globe setLocationAtPoint * Fix docs & lint * Increase globe setLocationAtPoint test desired precision * Some camera tests for globe * Fix easeTo test suite name and placing * Add rotated setLocationAtPoint test for globe, fix failing test * Fix globe easeTo & flyTo with bearing to follow spec, add tests * easeTo globe tests * All relevant camera tests for globe implemented * Update build size test * Fix symbols not respecting mercator * Update build size again * Terrain fix * Fix merge * Fix terrain shaders * Fix merge * Revert controls changes * Fix reverted files * Fix reverted camera tests * Revert forgotten file, fix lint * Update build size * Feedback comments for unit tests * Convert setters to functions: runtime code * Convert setters to functions: test code * Convert last setter to function * Fix some tests * Transform is now an interface * Rename Transform to ITransform * Remove abstract functions from transform base class * TransformHelper wip * Rename transform files * Finish transform rewrite * Fix mercator transform tests * Fix mercator_transform constructor * Fix symbol bucket test * Fix source cache tests * Fix transform clone bug & tests * Improve comments * More comments * Fix import * Move helper functions in tests to beginning of file * Fix collision index test accessing a private field * Remove unneeded null check * New utils tests + quadratic solve fix * Add remapSaturate tests * Add explicit types to line glyph placement * Refactor placeGlyphsAlongLine args into an object * Fix merge, cleanup draw_custom.test, fix missing perspective offset in globe transform * Fix draw_custom test * Update build test * Fix crashes * Fix transform_helper apply function not setting bearing correctly * Add test for TransformHelper * Fix TransformHelper.apply * Fix flipped text placement * Add new expected image to render test * Fix marker tests * Update build size * Move functions from mercator_transform.ts to mercator_utils.ts * Refactor un/projectToWorldCoordinates function args * Make zoomScale and scaleZoom standalone functions * Fix unprojectFromWorldCoordinates arg type * Move globe functions to separate file * Fix private member access in source_cache.test.ts * Fix deck.gl missing dot * Fix missing globe_utils.ts * Better `angleToRotateBetweenVectors2D` doccomment * Remove unneeded `protected` * Cleanup transform interface and remove duplicate comments * Split mercator_utils tests into a separate file * Fix tests * Split globe locationPoint tests a bit * Add more mercator tests * More globe tests * Fix globe getBounds and add tests for it * Remove unneeded function, update build size * projectTileCoordinates for globe now covered by test * Add globe_utils tests * Split up globe tests more * Fix missing doccomment * Rename transform's projection/unprojection functions * Better ray intersection comment and type * Reduce indentation * Improve unproject math readability * Add point-plane distance util function * Move tileCoordinatesToMercatorCoordinates to mercator_utils * Better name for location to mercator coordinate functions * Move angleToRotateBetweenVectors2D to utils * Refactor _globeness usage * Remove _initialized from GlobeTransform * Remove translatePosition from transform interface * Add IReadonlyTransform interface * Update build size * Remove unneeded comment * Fix painter test * Fix lint * Update test/build/min.test.ts * Update changelog * Globe - camera controls (#4408) * Camera controls changes from dev branch * Move stuff from globe_control_utils to globe_utils * Better globe_utils comments * Fix markers not being updated when globe is toggled * Fix globe tests * Update build size * Better comments for camera helper functions * Move camera helper functions to beginning of file * Camera: more and better comments * Update build size * Fix globe transform error correction handling * Better comments for _last* fields in globe transform * Refactor newFrameUpdate * Better comments for CoveringTilesOptions type members. * Refactor globe camera tests to use more describe statements * Remove isTilePositionOccluded function from transform interface * Fix camera tests * Add more mercator_utils test * Add more globe_transform tests * Fix failing render tests * Make camera helper functions static * Remove `around` from flyTo options. * Update build size * CameraHelper: initial implementation, inertia handling * Move createVec* functions to util.ts * CameraHelper: panning and zooming * CameraHelpers: implement cameraForBounds * CameraHelpers: handle jumpTo * CameraHelper: easeTo * CameraHelper: flyTo * Projection event contains new projection name and is fired by changing style's projection * Fix lint * Fix test camera/map not having proper CameraHelper * Fix easeTo not emitting zoom events * Fix cameraForBoxAndBearing globe not returning anything, rename camera helter types * Fix globe easeTo ignoring offset * Fix one flyTo test not creating camera properly * Update build size * Add projection transition event tests * Add example on how to compensate for how globe size changes with latitude * Revert scrollzoom delete removal * Remove apparentZoom parameter * CameraHelper is set in camera constuctor * Use spy for projection event unit tests * Remove unnecessary done() in tests * Update build size * Remove more unneeded done() calls * Do not use map.once callback in projection events tests * Better zoom delta example title and description * Rename globe zoom delta and planet size function example * Add zoom planet size function example image * Reduce size of some globe example images using compresspng * Globe: bugfixes: raster layer & projection change (#4546) * Port bugfix changes * Update build size * Fix render tests * Add render test result for debian * Increase raster tile granularity some more * Adjust warped raster tile render test * Add missing tsdoc param * Use single checkerboard image for render test * Globe examples now use setProjection * Add new raster-pole render test image * Add another raster-warped expected image * Use "style.load" event on map instead of on style * Adapt new heatmap code for globe, update build size * Fix render tests Most tests had subpixel shifts * Globe - custom layers API and examples, globe dev guide (#4577) * Port custom layer changes and globe docs * Port transform changes * Fix custom layer unit test * Fix failing render tests * Update build size * Update globe custom layer example descritions, remove forgotten code * Remove unused util function * Incorporate globe docs feedback * Refactor and expose tile mesh generation * Refactor custom layers to get smaller args object and access map transform directly * Simplify more of the custom layer API * Clean up and adapt more examples * Fix mercator matrix precision * Fix 3D model on terrain example * Rename projectionDataForMercatorCoords to defaultProjectionData * Document ProjectionData type * Update build size * Update developer-guides/globe.md Co-authored-by: Harel M <[email protected]> * Decouple ProjectionData from rendering code Rename fields to camelCase, move it to a separate file * Rename ProjectionData members * Fix mercator transform unit tests * Add an example to createTileMesh * Rename CustomRenderMethodInput.shader to shaderData * Add shaderData examples * Document TileMesh and CreateTileMeshOptions types * Fix custom layers in render tests * Update render tests Fails other than raster-warped were caused by increasing pos matrix precision in mercator_transform to 64 bit floats * Add render test result from linux * Update build size * Update src/render/program/projection_program.ts Co-authored-by: Harel M <[email protected]> * Rename createTileMeshInternal to createTileMeshWithBuffers * Update build size * Improve doc comments --------- Co-authored-by: Harel M <[email protected]> * Globe - Covering tiles (#4615) * Import coveringTiles changes from dev branch * Remove duplicated tiles used in render tests * Remove unused function * Fix typo * Properly handle tile wraps and LOD across antimeridian * Discard previous changes and use custom wrap values instead * Update build size * Add render test for LOD at antimeridian * Convert visibility numbers to enum * Refactor globe covering tiles into a separate file * Add yet another raster-warped expected image * Add unit tests for globe covering tiles * Refactor globe coveringTiles math to assume worldSize=1 instead of tileSize=1 * Split globe coveringTiles into more functions * Explain radiusOfMaxLvlLodInTiles value * Explain why checking 4 tile corners is (mostly) enough to construct an AABB. * Move mercator coveringTiles into a separate file * Yet another raster-warped expected image * Remove ITileVisibilityProvider interface * Use explicit types * PR feedback * Rename coveringTiles stack types * fix typo * Remove sky disabling in examples as this is no longer needed. * Fix spelling * Fix spelling - unencode * Fix more spelling * Fix lint * add failing unit tests to demonstrate issue # * fix failing unit tests * formatting * better calculation of distanceZ * update globe transform to calculate zoom level for each individual tile, updated unit test with large pitch angle to match new behavior * match behavior from globe to mercator * update changelog * fix distance units * code hygiene * fix source_cache unit tests (fix "overscaled" behavior) * fix degrees vs radians * load lower resolution tiles for terrain, based on parameter deltaZoom * fix failing unit test (caused by radians vs degrees fix) * update terrain shading results * update test results for failing render tests * update terrain/default render test * upadte terrain heatmap render test * fix globe raster-pole e render test by re-incorporating tileSize into zoom calculations * fix checkerboard render test, which was failing due to a very slight shift in the z-boundary between tiles (now z8 tiles are used when the requested zoom is in approximately [7.94, 8.94) instead of [8.0, 9.0).) * aded failing unit test for overscaled tiles * fix unit test with z < 0 * fix render test "projection/globe/collision-text-variable-anchor/pitched". I am not sure what the actual problem is, but it seems to have something to do with globeCoveringTiles() returning tiles that don't match the zoom level returned by globeCoveringZoom(). So we don't do that at low zoom levels. * code hygiene * add test that shows zoom levels at high pitch in terrain * actual ptich was limited to 60 degrees, so set it to 60 for clarity * code hygiene * remove osm tiles in terrain render tests and replace with number tiles * fix hardcoded terrain tileSize * fix unit test * Add parameter to change tile selection behavior at high pitch * remove console.log * fix bad merge * code hygiene * reduce formatting differences * rearrange mercatorCoveringTiles to be more like globe * make globe covering tiles more like mercator * make globe more like mercator * more rearranging * rearranging * rearranging * rearranging * rearranging * rearranging * rearranging * more rearranging * change globeTransform to always return for renderWorldCopies * rearranging * fix tile ordering for globe * code hygiene * combine globe and mercator coveringTiles() implementations * add types * comments * fix optinal param * documentation update * move coveringTiles helper functions into interface * add return type * always construct TerrainSourceCache with a sourceCache containing _source.tileSize * update render tests * update render test * update render test * update render tests * improve name of pitchBehavior -> pitchTileLoadingBehavior * add tileZoomDeadband property * lint * default tileZooomDeadband to 0 * update build size * fix merge errors * adjust build size * fix CHANGELOG * move calculateTileZoom() out to its own function, remove top-level parameters * allow overriding definition of calculateTileZoom * Update CHANGELOG.md Co-authored-by: Harel M <[email protected]> * Update src/geo/projection/covering_tiles.ts Co-authored-by: Harel M <[email protected]> * cameraVFOV -> cameraVerticalFOV * move coveringZoomLevel() and CoveringZoomOptions to covering_tiles * remove unneeded export * move coveringTilesDetails to re-used objects * fix coveringZoomLevel call * remove coveringTiles() interface from ITransform * Don't allow constant zoom level when the field of view extends near the horizon * restore missing /2 in calculateTileZoom() FOV adjustment * fix unit test * limit zoom change with FOV to a factor of 2. (only affects VFOV > 120 degrees) * rename covering tiles files * Move CoveringTilesDetailsProvider to its own file * fix a render test * move high-pitch terrain render test to location where tiles are available. * fix error in getCameraPoint() with roll * reduce pitch of render test to use tiles that exist * tsdoc comments * add comments * fix render test * fix render tests broken by last fix * move new globe terrain fog render test to location where terrain tiles exist in repo. * change projection/globe/terrain/line-translate expected results --------- Co-authored-by: Jakub Pelc <[email protected]> Co-authored-by: HarelM <[email protected]> Co-authored-by: Larrieu Vivian <[email protected]> Co-authored-by: Jakub Pelc <[email protected]>
I think this issue is resolved, as the following was merged, right? |
Yes, thanks, this is available in latest pre-release. |
User Story
As a User I can add a realistic atmosphere layer to the Globe, so that the Globe look more realistic when view from a far distance.
Rationale
A realistic atmosphere layer that appear and disappear fonction of the zoom level could add a touch of realism to Globe display.
Impact
A new layer with its associated style and configuration should be available.
The text was updated successfully, but these errors were encountered: