-
Notifications
You must be signed in to change notification settings - Fork 33
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
Performance ideas / benchmarking #3
Comments
Thank you for sharing interesting information. Also, thanks for the pull requests. I'll check them later. I bought the Quest 3 today and made code modifications to support VR mode. It is very intriguing. |
Please pleaseee let me know too ! |
I've read Aras's impressive work!
Could you elaborate on this idea? |
I’ve studied alpha hashing. I’ll test it later. 🤓 |
I've tested alpha hashing, but it didn't improve the performance |
@quadjr the alpha-hashing branch is 100% identical to the main branch |
@electrum-bowie |
@hybridherbst For the LOD system, small splats with high transparency at a distance will be removed during the sorting process. Data compression might enhance performance. I need to set up image quality evaluation programs. I've also implemented incremental loading. I've done almost everything I can think for now. I'll shift my focus to the generation software. |
Thank you, that does sound like great improvements! The current threshold of -0.001 did have a very noticeable quality impact on my "FH Portrait" dataset though; I've set it to -0.0001 as a quick test which looks fine, but haven't looked for a proper upper bound. I'll do some more testing with your updates. One question out of curiosity, the sortSplats method currently allocates new arrays on each run – doesn't that have a performance impact and/or would it be better to cache those instead? |
Thank you for the reports.
Yeah, There are some unnecessary allocations during the loading and sorting processes. |
Maybe consider integrating https://github.com/mkkellogg/GaussianSplats3D, which uses a wasm module for sorting. The author has also done some other interesting optimizations. |
Hi, will the mkkellogg .splat format (that add further optimization) mkkellogg/GaussianSplats3D#28 will be compatible with the .splat of this implementation? |
@quadjr @hybridherbst I made this repo to share our small splats for renderer testing. I tested this branch out with our small splat and I'm only pulling 45 FPS from AFrame in VR mode on Quest 3. It's unclear to me whether it's something to do with AFrame itself or with this component implementation. Feel free to ping me at [email protected] if you wanna chat more about this |
@dlazares 90fps sounds great! How can I give your renderer a try? Couldn't find the repo. I'm working on integrating a component on A-Frame core. Thanks so much |
Some ideas in regards to performance. Ultimately it would be nice to get (a subset of) this to work on a Quest 2 / 3; currently that's running at 5-10 fps and very choppy. So are the other three.js implementations though!
Regarding loading behaviour, I've dabbled a bit with creating splats already while loading, will see if I can make a PR for parts of that.
And it would be interesting to load compressed data, again Aras (link above) has some ideas around that and tooling to generate byte buffers that are already optimized (10-20x size reduction).
The text was updated successfully, but these errors were encountered: