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

v3.0.0-rc.1 (performance improvements and bug fixes) #12958

Merged
48 commits merged into from
Nov 7, 2023
Merged

v3.0.0-rc.1 (performance improvements and bug fixes) #12958

48 commits merged into from
Nov 7, 2023

Conversation

stepankuzmin
Copy link
Contributor

See #12829 for more information about the v3 release. Changes since v3.0.0-beta.5:

Features and improvements ✨

  • Enable zoom-based expressions for model rotation, scale and translation.
  • Optimize shader compilation to reduce stuttering on complex 3D styles.
  • Reduce stuttering when loading 3D tiles with models.
  • Improve memory footprint when rendering ground lighting effects.
  • Reduce flickering of symbols along lines due to rounding errors.
  • Improve panning over bumpy terrain so that it feels smooth.
  • Optimize switching between styles that have imports.
  • Add support for slot in custom layers.

Bug fixes 🐞

  • Fix rendering of line layers with data-driven line-border.
  • Fix an issue with lighting inconsistency between rendering with and without terrain.
  • Fix an issue with symbols sometimes not rendering correctly over terrain on top-down view.
  • Fix an issue with raster-color sometimes causing memory issues.
  • Fix an issue with non-1 alpha in fill-extrusion-color causing rendering issues in 3D lighting mode.
  • Disallow duplicate style import IDs.
  • Disallow duplicate directional and ambient lights.
  • Fix wireframe debug mode for model rendering.
  • Root style top-level properties take precedence over children import top-level properties

endanke and others added 30 commits November 7, 2023 17:03
* Include shader preludes explicitly

* Use RENDER_LINE_BORDER_AUTO only if line borders are visible
…r fill-extrusion and ground effects (internal-871)

* filter out unused mutually exclusive data-driven properties between fill-extrusion and ground effect to improve memory footprint

* missing property
…-883)

* Remove line anchor rounding

* update unit test

* lint

* Update render test expectation

* Update tests expectations

* Update tests expectations

* update render tests
Bumps [stylelint](https://github.com/stylelint/stylelint) from 15.10.3 to 15.11.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](stylelint/stylelint@15.10.3...15.11.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [sinon](https://github.com/sinonjs/sinon) from 16.1.0 to 17.0.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](sinonjs/sinon@v16.1.0...v17.0.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [tape](https://github.com/ljharb/tape) from 5.7.1 to 5.7.2.
- [Changelog](https://github.com/ljharb/tape/blob/master/CHANGELOG.md)
- [Commits](tape-testing/tape@v5.7.1...v5.7.2)

---
updated-dependencies:
- dependency-name: tape
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [puppeteer-core](https://github.com/puppeteer/puppeteer) from 21.3.6 to 21.4.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/release-please-config.json)
- [Commits](puppeteer/puppeteer@puppeteer-core-v21.3.6...puppeteer-core-v21.4.0)

---
updated-dependencies:
- dependency-name: puppeteer-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…h (internal-886)

* [MAPS3D-1040] shader changes to get directional component in sync with

    lighting in area of terrain without shadows was noticeabvly different from immediate mode or terrain shadow mode, in some light settings (most prominent in Dusk).  now they are in sync.

* add render test

---------

Co-authored-by: Fouad Valadbeigi <[email protected]>
…(internal-885)

* [MAPS3D-1123] Ortho camera: Fix bumpy pan terrain at zero pitch

This solves two issues when panning over terrain, when orthographic camera is enabled on low pitch and when pitch is 0.
- on drag end, recenter, and even without it, updated zoom during pan would trigger sudden offset of camera from terrain. It is important to keep the same zoom as the zoom when the drag gesture started. This cannot be moved to transform as generic case, as it is specific to this case and mercator projection.
- on inertia, easeTo prepare would again reset to sea reference triggering zoom change in set center
```
            if (this.cameraElevationReference === "ground") {
                this._updateCameraOnTerrain();
            } else {
                this._updateZoomFromElevation();
            }
```

gl-js doesn't have any issues when dragging when the pitch is low (e.g. 5 degrees), the issues that gl-native has.

Fix also resolves the same on panning using keyboard gesture. This is for drag only.

Next: check gl-native implenentation and get it in sync with gl-js.

* cleanup and unit test
* Add render test for large fill extrusions
Bumps [browserify-sign](https://github.com/crypto-browserify/browserify-sign) from 4.2.1 to 4.2.2.
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](browserify/browserify-sign@v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: browserify-sign
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [react-devtools-core](https://github.com/facebook/react/tree/HEAD/packages/react-devtools-core) from 4.25.0 to 4.28.5.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/react-devtools-core)

---
updated-dependencies:
- dependency-name: react-devtools-core
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…rrain and avoid rendering of the depth texture when orthographic camera is in use (internal-891)

* Disable occlusion culling of symbols on terrain when orthographic camera is in use

* [MAPS3D-1135] Avoid rendering to depth texture when orthographic camera is in use

* [MAPS3D-1135] small refactor
Bumps [@rollup/plugin-replace](https://github.com/rollup/plugins/tree/HEAD/packages/replace) from 5.0.4 to 5.0.5.
- [Changelog](https://github.com/rollup/plugins/blob/master/packages/replace/CHANGELOG.md)
- [Commits](https://github.com/rollup/plugins/commits/inject-v5.0.5/packages/replace)

---
updated-dependencies:
- dependency-name: "@rollup/plugin-replace"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [puppeteer-core](https://github.com/puppeteer/puppeteer) from 21.4.0 to 21.4.1.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/release-please-config.json)
- [Commits](puppeteer/puppeteer@puppeteer-core-v21.4.0...puppeteer-core-v21.4.1)

---
updated-dependencies:
- dependency-name: puppeteer-core
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
stepankuzmin and others added 18 commits November 7, 2023 17:21
Bumps [rollup](https://github.com/rollup/rollup) from 4.1.4 to 4.1.5.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](rollup/rollup@v4.1.4...v4.1.5)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Do not use TERRAIN_DEM_FLOAT_FORMAT without terrain except for hillshade_prepare

* Provide full program creation parameters for precompilation

* Formatting fixes

* Add program ids to symbol layer

* Limit precompilation to style load, compile fog variants in advance

* Precompile rtt variant

* Only mark precompileDone when style has layers available

* Replace UseProgramParams with CreateProgramParams
* Only add ZERO_EXAGGERATION define when elevation is used

* Drop RENDER_LINE_ALPHA_DISCARD define

* Skip precompilation of fill extrusion programs

* Only add PROJECTED_POS_ON_VIEWPORT for globe projection
…ernal-906)

This avoids stuttering and frame misses when loading fresh tiled 3d model tiles
…hting mode (internal-907)

* Ignore FE color alpha also in 3D lighting mode

* Add test to catch color alpha affecting opacity in 3D lighting mode
Refactor style merging

Add fqid to StyleLayer

Pass scope to createStyleLayer

Cleanup

Don't scope Layers in StyleLayerIndex

Revert to styleLayer.setScope

Cleanup

Fix fog

Use fqids in buckets

Add SharedStyleUpdates

Fix fog

Add keepScope option to serialization

Fix fog transition and remove camera from serialization

Move shared style state to a separate class

Fix state

Drop isolation

Use Style._merged*

Use Style in loadVectorData

Use Style._merged*

Use Style._mergedSourceCaches in terrain

Update placements in imports

Use _updateMergedPlacement

Add StyleMerger

Use StyleMerger everywhere

Replace StyleState with StyleMerger

Use StyleMerger's layers order

Move symbols and circles bookkeeping to StyleMerger

Fix Terrain#_clearLineLayersFromRenderCache

Use root style fog and terrain in StyleMerger

Fix some unit tests

Move main queryRenderedFeatures logic to StyleMerger

Fix lint

Use layer fqids in buckets

Use fqids in merged sources

Fix CrossTileSymbols, sources updates

Fix terrain in imports

Add some render tests

Update style diffing

Cleanup, fix unit tests

Fix Style#_getTransitionParameters

Fix defaultTransition, lint

drop bench/benchmarks/

Implement addFragment/removeFragment

Rename Style fragment accessors to import accessors

More granular imports diffing: setImportUrl and setImportData

Revert unrelevant changes

Cleanup after comments

Rename StyleImport -> Fragment

Cleanup naming in StyleMerger

Fix unit tests

Restructure Style.js

Prefix internal Style accessors with underscore

Drop StyleMerger, move logic back to Style

Fix render tests

Revert Style structure

More reverting Style structure

Rename layerFqids -> layerIds

Rename SourceCache.fqid -> SourceCache.id

Replace underscore prefix in Style with "own"

Fix projection merging

Skip calculating queryRadius when loading vector data if no layer found in bucket

Add projection precedence for imports render test

Fix import reordering on diff, add unit tests

Reduce fqid/id naming distinction in Style

Add setState unit tests for imports

Require id and scope when accessing source cache from Style instead of fqid

Fix "Drag pan ortho" unit test

Add missing schema to Style serialization

Add multiple inlined imports render test

Adjust size

Don't merge root properties on updating root style camera

Update src/style/style.js

Co-authored-by: Volodymyr Agafonkin <[email protected]>

Update src/style/style.js

Co-authored-by: Volodymyr Agafonkin <[email protected]>

Drop layer bookkeeping leftovers

Add Style.getImportIndex

Add separate mergeTerrain and mergeProjection

Use layer fqids as tile bucket ids

Fix Style.getLayer unit test

Fix SymbolBucket unit tests

Fix SourceCache reloading on updating layers

Add imports setStyle render test
…sabled from within Terrain.update (internal-911)

* [GLJS-546] Fix setting Transform.elevation to null when terrain is disabled from within Terrain.update

Recent change is that zoom based exaggeration change of terrain leads to switch to immediate mode on high zooms.
However, this was not correctly done from Transform pount of view, since Transform.elevation should be set to null always when terrain is disabled.
Having Transform.elevation not null but (Transform.elevation: Terrain).enabled == false was problematic in Transform.elevation as we check only `(if transform.elevation)`. This led to incorrect state where recenter was called and camera positioned on fixed height (sea level zoom).

* Update render test to get it in sync with gl native
* Share changes between all Style instances

* Fix StyleChanges _removedLayers usage

* Fix indentation

* Fix StyleChanges#getLayerUpdatesByScope

* Fix style._changed reference in unit tests

* Pass StyleChanges to the import fragments

* Fix terrain serialization

* Fix scoped terrain serialization
* Disable Terrain render cache on 3D Lights transition

* Cleanup
Bumps [puppeteer-core](https://github.com/puppeteer/puppeteer) from 21.4.1 to 21.5.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/release-please-config.json)
- [Commits](puppeteer/puppeteer@puppeteer-core-v21.4.1...puppeteer-core-v21.5.0)

---
updated-dependencies:
- dependency-name: puppeteer-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.14.0 to 4.15.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](SeleniumHQ/selenium@selenium-4.14.0...selenium-4.15.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [rollup](https://github.com/rollup/rollup) from 4.1.5 to 4.3.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](rollup/rollup@v4.1.5...v4.3.0)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [sinon](https://github.com/sinonjs/sinon) from 17.0.0 to 17.0.1.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](sinonjs/sinon@v17.0.0...v17.0.1)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* v3.0.0-rc.1

* fix unit test

* fixup

* Update CHANGELOG.md

---------

Co-authored-by: Stepan Kuzmin <[email protected]>
@stepankuzmin stepankuzmin added the skip changelog Used for PRs that do not need a changelog entry label Nov 7, 2023
@stepankuzmin stepankuzmin requested a review from a team as a code owner November 7, 2023 16:03
src/style/style_changes.js Dismissed Show dismissed Hide dismissed
Copy link
Contributor

@astojilj astojilj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

@stepankuzmin stepankuzmin closed this pull request by merging all changes into main in 466ee28 Nov 7, 2023
@stepankuzmin stepankuzmin deleted the v3-staging-rc branch November 7, 2023 16:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
skip changelog Used for PRs that do not need a changelog entry
Projects
None yet
Development

Successfully merging this pull request may close these issues.