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

GSplat speedup #6715

Merged
merged 7 commits into from
Jun 18, 2024
Merged

GSplat speedup #6715

merged 7 commits into from
Jun 18, 2024

Conversation

slimbuck
Copy link
Member

In this PR we:

  • speed up the load-time reordering of uncompressed splat data by roughly 1/3rd for large scenes
    • time to reorder the 6 million splat bicycle scene goes from 3.2s to 2.3s on Chrome Macbook M1
  • simplify code slightly by moving some of the load-time logic from GSplatData to PLYParser
  • small render speedup by removing the id varying in uncompressed shader when it's not needed

// */
constructor(elements, options = {}) {
constructor(elements) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we uncomment the JSDoc above?

Copy link
Member Author

Choose a reason for hiding this comment

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

These are being naughty - they reference types in a higher level module

@slimbuck slimbuck merged commit 980486e into playcanvas:main Jun 18, 2024
8 checks passed
@slimbuck slimbuck deleted the gsplat-dev-v2 branch June 18, 2024 14:53
slimbuck added a commit to slimbuck/engine that referenced this pull request Jun 18, 2024
@slimbuck slimbuck mentioned this pull request Jun 18, 2024
MAG-AdrianMeredith added a commit to magnopus/playcanvas-engine that referenced this pull request Aug 6, 2024
* Branch 1.71

* GS reorder fix (playcanvas#6409)

* Gsplat rendering fix (playcanvas#6590)

* [Fix] Add missing exposure handling from the Neutral tonemapping (playcanvas#6592)

* Examples app bundle v1 (playcanvas#6594)

* treeshake smallest enabled

* ignore playcanvas PCUI from being treeshaken

* treeshake ignore only pcui

* added device type constants directly (no playcanvas dependency)

* format rollup

* Updated PCUI

* removed PCUI aliasing

* added publint to ci; removed build:publish (playcanvas#6595)

* replaces slashes for windows (playcanvas#6603)

* fixed using query params with iframe example (playcanvas#6605)

* Fix types for calcAabb functions (playcanvas#6596)

* Exports and types fixes v1 (playcanvas#6624)

* cleaned up ts and js config; adds debug and profiler to exports

* set module resolution to node

* Examples config fixes v1 (playcanvas#6627)

* added package json for linting of example modules and renamed @examples to examples

* fixed missing merge conflict

* fixed fallback options (playcanvas#6629)

* fixed example types (playcanvas#6635)

* adjusted publint error

* Fix URL handling in ScriptHandler (playcanvas#6639) (playcanvas#6655)

* Particle system uses uint16 indices instead of uint32 (playcanvas#6661)

Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>

* Fix the definition of sheenTint Standard Material property (playcanvas#6665)

Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>

* Update to skybox shader to map it closer to the infinity (playcanvas#6664)

Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>

* Fix shader chunk error for tonemapped compressed GS (playcanvas#6670)

* Cherry picked: Add JSDoc for getters (playcanvas#6685)

* Gsplat fixes (playcanvas#6710)

* GSplat reorder and shader speedup (playcanvas#6715) (playcanvas#6716)

* Update setFromMat4 and add tests (playcanvas#6720)

* Do not compile different shader for opacity of 1 and diffuse tint of white (playcanvas#6721)

Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>

* Compressed splat update (playcanvas#6746)

* Unify gsplat shaders (playcanvas#6753)

* Branch 1.72

* Fix gsplat example (playcanvas#6754)

* Improve some JSDoc class descriptions (playcanvas#6725)

* Improve some JSDoc class descriptions

* Lint fixes

* Improve GSplatComponent

* Remove redundant debugRender from GSplat examples

* Improve the Color class description

* Leverage WebXR types in public API (playcanvas#6713)

* Improve typings and docs for XrPlane (playcanvas#6708)

* Improve typing for XrPlane#points

* Tweak docs for XrPlane#label

* Improve class description

* Improve orientation docs

* Tweak example source

* Correct XrTrackedImage construction docs

* Tighten type for XrPlane#orientation

* Tweaks to XrAnchor source (playcanvas#6706)

* Tweaks to XrAnchor source

* More minor docs tweaks

* Improve forget docs

* Invoke stopPropagation on pointer events handled by gizmo (playcanvas#6770)

* [Fix] Stencil clearing was not setting up the mask correctly (playcanvas#6778)

* Fix WebXR depth sensing on quest 3 (playcanvas#6774)

* Update Tags class to use spread instead of arguments (playcanvas#6775)

* Use object destructuring with vectors (playcanvas#6777)

* Minor refactor of Curve class (playcanvas#6780)

* Minor refactor of Curve class

* Tweaks to docs

* Gizmo event fix (playcanvas#6790)

* Small gizmo event handler fix (playcanvas#6811)

* Support for OffscreenCanvas in Web Workers (playcanvas#5167)

* Support for OffscreenCanvas in Web Workers playcanvas#2481

* Update graphics-device.js

* Update platform.js

---------

Co-authored-by: Will Eastcott <willeastcott@gmail.com>

* Add gsplat mapping (playcanvas#6824)

* array length fix

* Branch 1.73

* v1.73.0

* [Fix] Fix albedo debug output (playcanvas#6836)

Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>

* Fix gsplat sorting bug (playcanvas#6845)

* v1.73.1

* Small fix to gsplat sorter (playcanvas#6846)

* Allow blit to backbuffer (playcanvas#6849)

* always assign animation assets to anim component (playcanvas#6863)

* getAnimationAsset returns Asset (playcanvas#6864)

* fixed getAnimationAsset return to be asset

* reverts change as breaking and updates type to match

* Update src/framework/components/anim/component-layer.js

Co-authored-by: Will Eastcott <will@playcanvas.com>

* Update src/framework/components/anim/component-layer.js

Co-authored-by: Will Eastcott <will@playcanvas.com>

---------

Co-authored-by: Will Eastcott <will@playcanvas.com>

* 1.73.2

* v1.73.3

* v1.73.4

* Support for EXT_mesh_gpu_instancing extension (playcanvas#6869)

Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>

---------

Co-authored-by: Donovan Hutchence <slimbuck7@gmail.com>
Co-authored-by: Martin Valigursky <59932779+mvaligursky@users.noreply.github.com>
Co-authored-by: KPal <48248865+kpal81xd@users.noreply.github.com>
Co-authored-by: Will Eastcott <will@playcanvas.com>
Co-authored-by: kpal <kpal81xd@gmail.com>
Co-authored-by: Mark Lundin <marklundin@users.noreply.github.com>
Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>
Co-authored-by: mrmaxm <core@moka.co>
Co-authored-by: Michael Franzl <michael@franzl.name>
Co-authored-by: Will Eastcott <willeastcott@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: graphics Graphics related issue enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants