You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: extensions/2.0/Khronos/KHR_gaussian_splatting/README.md
+30-2Lines changed: 30 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,6 +57,8 @@ Standard PLY splat formats have opacity and color separate, however they are com
57
57
58
58
This implementation only contains the zeroth spherical harmonic for diffuse color. Spherical Harmonic channels 1 through 15, which map the splat specular, are currently unused by the extension.
59
59
60
+
Utilizing the standard position and color attributes allows us to easily fall back in situations where `extensions.KHR_gaussian_splatting` isn't available. Or simply for alternative rendering.
61
+
60
62
### Extension attributes
61
63
62
64
`extensions.KHR_gaussian_splatting` may contain the following values:
@@ -77,7 +79,7 @@ This implementation only contains the zeroth spherical harmonic for diffuse colo
77
79
78
80
### Transforming Gaussian Splat Data for glTF
79
81
80
-
The data output from the Gaussian splat training process that is stored in the typical PLY must be transformed before storing in glTF.
82
+
The data output from the Gaussian splat training process that is stored in the typical PLY must be transformed before storing in glTF. These transformations make the data suitable for direct usage in glTF.
81
83
82
84
#### Diffuse Color
83
85
@@ -151,10 +153,26 @@ Sample:
151
153
152
154
_This section is non-normative_
153
155
154
-
In this example, we follow a reference implementation for rendering Gaussian Splats.
156
+
Rendering is broadly two phases: Pre-rasterization sorting and rasterization.
157
+
158
+
### Splat Sorting
159
+
160
+
Given that splatting uses many layered Gaussians blended to create complex effects, their ordering is view dependent and must be sorted based on their distance from the current camera position. The details are largely dependent on the platform targeted.
161
+
162
+
Two example approaches:
163
+
164
+
- Sorting the vertex buffers directly before submitting to the GPU
165
+
- Generating textures from splat data and updating the indexes into the texture each frame
166
+
167
+
### Rasterizing
155
168
156
169
In the vertex shader, we first must compute covariance in 3D and then 2D space. In optimizing implementations, 3D covariance can be computed ahead of time.
157
170
171
+
Our covariance matrix can be represented as:
172
+
$$\Sigma = RSS^TR^T$$
173
+
174
+
Where `S` is our scaling matrix and `R` is our rotation matrix
0 commit comments