Skip to content
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

Disable fog (opacity = 0) on globe with terrain elevation #4963

Merged
merged 12 commits into from
Nov 3, 2024

Conversation

birkskyum
Copy link
Member

@birkskyum birkskyum commented Nov 2, 2024

Closes #4928

Towards

As mentioned here, the globe doesn't support Fog "calculateFogMatrix is not supported on globe projection":

warnOnce('calculateFogMatrix is not supported on globe projection.');

Unfortunately, it's still trying to render it, which consistently breaks the map whenever the map is pitched just a bit.

This tiny PR simply set the opacity of the fog/horizon to 0 in globe+terrain mode. When the globe does support fog with terrain, this can easily be removed again:

Fog is still active on Terrain3D without Globe

With Globe - zoom level before mercator transition

Before
Screenshot 2024-11-02 at 17 13 01

After - main branch
Screenshot 2024-11-02 at 17 18 01

After - local branch
Screenshot 2024-11-02 at 17 10 52

With Globe - high zoom, after transition to mercator

Before
Screenshot 2024-11-02 at 18 30 42

After
Screenshot 2024-11-02 at 18 27 40

Without Globe - Fog Still Works

Before/After
Screenshot 2024-11-02 at 17 10 29

Launch Checklist

  • Confirm your changes do not include backports from Mapbox projects (unless with compliant license) - if you are not sure about this, please ask!

@birkskyum birkskyum requested a review from HarelM November 2, 2024 16:26
@codecov-commenter
Copy link

codecov-commenter commented Nov 2, 2024

Codecov Report

Attention: Patch coverage is 75.00000% with 1 line in your changes missing coverage. Please review.

Project coverage is 90.45%. Comparing base (51a2efd) to head (d6899ef).
Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
src/render/program/terrain_program.ts 66.66% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4963      +/-   ##
==========================================
- Coverage   90.67%   90.45%   -0.23%     
==========================================
  Files         266      266              
  Lines       38163    38164       +1     
  Branches     3164     3254      +90     
==========================================
- Hits        34606    34521      -85     
- Misses       2611     2650      +39     
- Partials      946      993      +47     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@birkskyum birkskyum requested a review from ibesora November 2, 2024 16:31
src/render/draw_terrain.ts Outdated Show resolved Hide resolved
@birkskyum birkskyum requested a review from HarelM November 2, 2024 18:19
@HarelM
Copy link
Collaborator

HarelM commented Nov 2, 2024

Can you add a unit test to cover this issue somehow?

@birkskyum
Copy link
Member Author

birkskyum commented Nov 2, 2024

@HarelM , I've added a unit tests, and a render test that can be used to help validate a fix to the fog

@birkskyum birkskyum changed the title Disable fog in Globe with Terrain3D Disable (opacity = 0) fog in Globe with Terrain3D Nov 2, 2024
@birkskyum birkskyum changed the title Disable (opacity = 0) fog in Globe with Terrain3D Disable (opacity = 0) fog on Globe with Terrain3D Nov 2, 2024
@birkskyum birkskyum changed the title Disable (opacity = 0) fog on Globe with Terrain3D Disable fog (opacity = 0) on Globe with Terrain3D Nov 2, 2024
@birkskyum birkskyum changed the title Disable fog (opacity = 0) on Globe with Terrain3D Disable fog (opacity = 0) on Globe with Terrain Nov 2, 2024
@birkskyum birkskyum changed the title Disable fog (opacity = 0) on Globe with Terrain Disable fog (opacity = 0) on Globe with Terrain Elevation Nov 2, 2024
@birkskyum birkskyum changed the title Disable fog (opacity = 0) on Globe with Terrain Elevation Disable fog (opacity = 0) on globe with terrain elevation Nov 2, 2024
@birkskyum birkskyum enabled auto-merge (squash) November 2, 2024 23:02
@HarelM
Copy link
Collaborator

HarelM commented Nov 3, 2024

Overall approved, let me know if the file I commented on is needed.

@HarelM
Copy link
Collaborator

HarelM commented Nov 3, 2024

Please add a changelog entry.

@birkskyum birkskyum disabled auto-merge November 3, 2024 13:27
CHANGELOG.md Outdated Show resolved Hide resolved
@birkskyum birkskyum enabled auto-merge (squash) November 3, 2024 13:41
@birkskyum birkskyum merged commit 69664b8 into maplibre:main Nov 3, 2024
15 checks passed
alexandresoro pushed a commit to alexandresoro/ouca-web that referenced this pull request Feb 5, 2025
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [maplibre-gl](https://maplibre.org/) ([source](https://github.com/maplibre/maplibre-gl-js)) | dependencies | major | [`4.7.1` -> `5.1.0`](https://renovatebot.com/diffs/npm/maplibre-gl/4.7.1/5.1.0) |

---

### Release Notes

<details>
<summary>maplibre/maplibre-gl-js (maplibre-gl)</summary>

### [`v5.1.0`](https://github.com/maplibre/maplibre-gl-js/blob/HEAD/CHANGELOG.md#510)

[Compare Source](maplibre/maplibre-gl-js@v5.0.1...v5.1.0)

##### ✨ Features and improvements

-   Add support for `vertical-align` in `format` expression ([specification](https://maplibre.org/maplibre-style-spec/expressions/#format))([#&#8203;5043](https://github.com/maplibre/maplibre-gl-js/pull/5043)).

##### 🐞 Bug fixes

-   Render frame synchronized again in requestAnimationFrame callback ([#&#8203;4535](maplibre/maplibre-gl-js#4535))

### [`v5.0.1`](https://github.com/maplibre/maplibre-gl-js/blob/HEAD/CHANGELOG.md#501)

[Compare Source](maplibre/maplibre-gl-js@v5.0.0...v5.0.1)

##### ✨ Features and improvements

-   ⚠️ Revert changes made in `geometry-type` ([#&#8203;5285](maplibre/maplibre-gl-js#5331)). This change was causing issues in a [large number of styles](maplibre/maplibre-style-spec#965) and thus reverted.

##### 🐞 Bug fixes

-   Skip control button css hover effects on touch devices ([#&#8203;5285](maplibre/maplibre-gl-js#5285))

### [`v5.0.0`](https://github.com/maplibre/maplibre-gl-js/blob/HEAD/CHANGELOG.md#500)

[Compare Source](maplibre/maplibre-gl-js@v4.7.1...v5.0.0)

##### ✨ Features and improvements

-   \~~⚠️ Changed `geometry-type` to identify "Multi-" features ([#&#8203;4877](maplibre/maplibre-gl-js#4877)). Use `$type` which has no "Multi-" support or use `in` expression to get the previous behavior.~~
-   ⚠️ `StyleLayer`'s `queryIntersectsFeature` method parameters were moved to `QueryIntersectsFeatureParams`. ([#&#8203;5276](maplibre/maplibre-gl-js#5276)) Wrap the method parameters with `{}` to solve this
-   ⚠️ Support setting WebGL context options on map creation ([#&#8203;5196](maplibre/maplibre-gl-js#5196)). Previously supported WebGL context options like `antialias`, `preserveDrawingBuffer` and `failIfMajorPerformanceCaveat` must now be defined inside the `canvasContextAttributes` object on `MapOptions`.
-   ⚠️ Change the return type of `on` method to return a `Subscription` to allow for easy unsubscribe ([#&#8203;5080](maplibre/maplibre-gl-js#5080)). `map.on('x').on('y')` => `map.on('x'); map.on('y');`.
-   ⚠️ Change drag rotate behavior to be around the center of the screen ([#&#8203;5074](maplibre/maplibre-gl-js#5074))
-   ⚠️ Return actual altitude from queryTerrainElevation + Pass non-translated matrices to custom layer on mercator map ([#&#8203;3854](maplibre/maplibre-gl-js#3854))
-   ⚠️ Remove unminified prod build ([#&#8203;4906](maplibre/maplibre-gl-js#4906)). You'll need to use a different build.
-   Allows setting the desired WebGL version to use ([#&#8203;5236](maplibre/maplibre-gl-js#5236)). You can now use `contextType` inside `canvasContextAttributes` to choose which WebGL version to use
-   Dual-Stack WebGL Runtime with WebGL2 to WebGL1 Fallback ([#&#8203;5198](maplibre/maplibre-gl-js#5198))
-   Add support for projection type expression as part of a refactoring of the transfrom and projection classes ([#&#8203;5139](maplibre/maplibre-gl-js#5139))
-   Export `Event` class ([#&#8203;5016](maplibre/maplibre-gl-js#5016))
-   Support Vertical Perspective projection ([#&#8203;5023](maplibre/maplibre-gl-js#5023))
-   When clustering circles and the promoteId is set to some parameter, the promoted ID is used on non-clustered features and the cluster_id is used on clustered features. Previously the ID was undefined for non-clustered features ([#&#8203;4899](maplibre/maplibre-gl-js#4899))
-   Support Terrain in Globe projection ([#&#8203;4976](maplibre/maplibre-gl-js#4976))
-   Improved performance of the `coveringTiles` (tile culling) function for globe ([#&#8203;4937](maplibre/maplibre-gl-js#4937))
-   Catches network fetching errors such as CORS, DNS or malformed URL as actual `AJAXError` to expose HTTP request details to the `"error"` event (maplibre/maplibre-gl-js#4822)
-   Add setVerticalFieldOfView() to public API ([#&#8203;4717](maplibre/maplibre-gl-js#4717))
-   Disable sky when using globe and blend it in when changing to mercator ([#&#8203;4853](maplibre/maplibre-gl-js#4853))
-   New GlobeControl ([#&#8203;4960](maplibre/maplibre-gl-js#4960))
-   Add support for pitch > 90 degrees ([#&#8203;4717](maplibre/maplibre-gl-js#4717))
-   Add support for camera roll angle ([#&#8203;4717](maplibre/maplibre-gl-js#4717))
-   Improve performance of `queryRenderedFeatures` by using JavaScript `Set`s to assess layer membership internally ([#&#8203;4777](maplibre/maplibre-gl-js#4777))
-   Support globe mode ([#&#8203;3963](maplibre/maplibre-gl-js#3963))
-   Merge atmosphere and sky implementation ([#&#8203;3888](maplibre/maplibre-gl-js#3888))
-   Add option to display a realistic atmosphere when using a Globe projection ([#&#8203;3888](maplibre/maplibre-gl-js#3888))

##### 🐞 Bug fixes

-   ⚠️ Fix level of detail at high pitch angle by changing which tiles to load ([#&#8203;3983](maplibre/maplibre-gl-js#3983))
-   Fix holes at the poles when terrain is used with globe ([#&#8203;5232](maplibre/maplibre-gl-js#5232))
-   Fix geometry artifacts when globe terrain is zoomed out too much ([#&#8203;5232](maplibre/maplibre-gl-js#5232))
-   Fix center being incorrectly constrained when using globe ([#&#8203;5186](maplibre/maplibre-gl-js#5186))
-   Fix atmosphere improperly blending into the background ([#&#8203;5235](maplibre/maplibre-gl-js#5235))
-   Fix parsing wrong hash location ([#&#8203;5131](maplibre/maplibre-gl-js#5131))
-   Fix swallowing of errors ([#&#8203;4532](maplibre/maplibre-gl-js#4532))
-   Fix erroring requests not reported on `error` handler ([#&#8203;4613](maplibre/maplibre-gl-js#4613))
-   Fix children not retained when using globe ([#&#8203;5271](maplibre/maplibre-gl-js#5271))
-   Fix symbol size increasing when looking from poles ([#&#8203;5275](maplibre/maplibre-gl-js#5275))
-   Fix globe custom layers being supplied incorrect matrices after projection transition to mercator ([#&#8203;5150](maplibre/maplibre-gl-js#5150))
-   Fix custom 3D models disappearing during projection transition ([#&#8203;5150](maplibre/maplibre-gl-js#5150))
-   Fix regression in NavigationControl compass on Firefox and Safari browsers ([#&#8203;5205](maplibre/maplibre-gl-js#5205))
-   Fix smooth mouse wheel zooming ([#&#8203;5154](maplibre/maplibre-gl-js#5154))
-   Change drag rotate behavior to be less abrupt around the center ([#&#8203;5104](maplibre/maplibre-gl-js#5104))
-   Fix regression in render world copies ([#&#8203;5101](maplibre/maplibre-gl-js#5101))
-   Fix unwanted roll when motion is interrupted ([#&#8203;5083](maplibre/maplibre-gl-js#5083))
-   Fix `geometry-type` filter expression results ([#&#8203;5132](maplibre/maplibre-gl-js#5132))
-   Fix easeTo not applying padding in globe projection ([#&#8203;5134](maplibre/maplibre-gl-js#5134))
-   Convert WebGL1 shaders to WebGL2 ([#&#8203;5166](maplibre/maplibre-gl-js#5166))
-   Fixes line flickering problem ([#&#8203;5094](maplibre/maplibre-gl-js#5094))
-   Fix poor performance in Chrome related to passing matrices to WebGL ([#&#8203;5072](maplibre/maplibre-gl-js#5072))
-   Fixes scale control for globe on zoom out ([#&#8203;4897](maplibre/maplibre-gl-js#4897))
-   Fixes cooperative gestures displaying the mobile help text when screen width is smaller than 480px on non-touch devices ([#&#8203;5053](maplibre/maplibre-gl-js#5053))
-   Fixes incorrect cluster radius scaling in `GeoJSONSource.setClusterOptions()` ([#&#8203;5055](maplibre/maplibre-gl-js#5055))
-   Improve innerHTML handling in code ([#&#8203;5057](maplibre/maplibre-gl-js#5057)))
-   Fix geometry beyond tile borders being rendered ([#&#8203;4868](maplibre/maplibre-gl-js#4868))
-   Fix line-placed map-pitch-aligned texts being too large when viewed from some latitudes on a globe ([#&#8203;4786](maplibre/maplibre-gl-js#4786))
-   Disabled unsupported Fog rendering, for Terrain3D on Globe ([#&#8203;4963](maplibre/maplibre-gl-js#4963))
-   Fix issue where raster tile source won't fetch updates following request error ([#&#8203;4890](maplibre/maplibre-gl-js#4890))
-   Fix 3D models in custom layers not being properly occluded by the globe ([#&#8203;4817](maplibre/maplibre-gl-js#4817))
-   Fix issue where raster tiles were not rendered correctly when using globe and terrain ([#&#8203;4912](maplibre/maplibre-gl-js#4912))
-   Fix text not being hidden behind the globe when overlap mode was set to `always` ([#&#8203;4802](maplibre/maplibre-gl-js#4802))
-   Fix a single white frame being displayed when the map internally transitions from mercator to globe projection ([#&#8203;4816](maplibre/maplibre-gl-js#4816))
-   Fix loading of RTL plugin version 0.3.0 ([#&#8203;4860](maplibre/maplibre-gl-js#4860))
-   Fix a memory leak due to missing removal of event listener registration ([#&#8203;4824](maplibre/maplibre-gl-js#4824))
-   Improve symbol collision performance for both mercator and globe projections ([#&#8203;4778](maplibre/maplibre-gl-js#4778))
-   Fix bad line scaling near the poles under globe projection ([#&#8203;4778](maplibre/maplibre-gl-js#4778))
-   Fix globe loading many tiles at an unnecessarily high zoom level when the camera is pitched ([#&#8203;4778](maplibre/maplibre-gl-js#4778))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS45OS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTU5LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->

Reviewed-on: https://git.tristess.app/alexandresoro/ouca-web/pulls/5
Reviewed-by: Alexandre Soro <code@soro.dev>
Co-authored-by: renovate <renovate@git.tristess.app>
Co-committed-by: renovate <renovate@git.tristess.app>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

The unsupported Fog/Horizon is isn't disabled properly on Globe with Terrain3D
3 participants