-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
Splat shader #12364
Draft
keyboardspecialist
wants to merge
99
commits into
main
Choose a base branch
from
splat-shader
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Splat shader #12364
+4,111
−33
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
interesting scaling decomposed covariance
fragment shader impl
need to get instanced drawarrays working
…loading. Setup for instanced rendering of quads
Attempting to fix splat scaling
new uniforms for camera data, no more computing in vertex shader renamed splat stage define
some clean up
correctly uses viewProjection when sorting
prop cleanup
shader tweaks
updates geometry pipeline stage to use modelutility to find attributes
…g as it's only used on the instanced quad Simplified updateGaussianSplatting in Model.js, camera check caused more issues than it solved. Index sorting is fast enough, and resolves some edge cases where fast rotations with lots of tiles would orphan some and leave them unsorted
Thanks for all the updates here @keyboardspecialist! What is the current status of this PR and where can we help with reviews?
|
… for splats vertex shader tweaked to account for transform scale when calculating 2d covariance
…on moved to Model from PrimitiveLoadPlan (where is was synchronous).. Reworked logic in runtime primitive. No longer auto fallback to other pipeline.
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Opening as a draft as some things are still in progress, and this is a long running feature branch.
This adds support for rendering Gaussian splats from 3D Tiles 1.1 using a proposed draft extension here
description in progress
PixelFormat, PixelDatatype - Support added for integer textures with pixel formats R32UI/R32I, RG32UI/RG32I, RGB32UI/RGB32I.
GaussianSplatPipelineStage - This is the old pipeline. May be removed in the future, but doesn't rely on any web assembly.
GaussianSplatTexturePipelineStage - New pipeline. Renders from an attribute texture. Uses web assembly for texture generation and sorting the indexes for retrieving attributes from the texture. Texture format is RGBAUI.
Both use PrimitiveLoadPlan to prep their attributes. The only pipeline simply uses this to keep attributes in CPU memory, so they can sorted later. The new pipeline generates it's texture here, and inserts an index attribute to read from that texture.
GeometryPipelineStage - This is where we determine if we are actually rendering splats. Since we use a point primitive in the glTF we can switch between them at runtime. If disabled, we follow the point cloud pipeline as usual.
Model.js - Sorting updates occur here. We check for camera movement then sort and rebuild the command list.
Model, Cesium3DTileStyle - Styling for scale and toggling splats/point rendering
TODO
@cesium/wasm-utils
once publishedIssue number and link
Testing plan
TBD. Will include a sandcastle.
Author checklist
CONTRIBUTORS.md
CHANGES.md
with a short summary of my change