gaussian-splat-lite 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/README.md +22 -13
  3. package/dist/gaussian-splat-lite.cjs +700 -51
  4. package/dist/gaussian-splat-lite.cjs.map +1 -1
  5. package/dist/gaussian-splat-lite.min.cjs +40 -13
  6. package/dist/gaussian-splat-lite.min.cjs.map +1 -1
  7. package/dist/gaussian-splat-lite.module.js +702 -53
  8. package/dist/gaussian-splat-lite.module.js.map +1 -1
  9. package/dist/gaussian-splat-lite.module.min.js +2660 -2199
  10. package/dist/gaussian-splat-lite.module.min.js.map +1 -1
  11. package/dist/types/addons/TAAPass.d.cts +6 -15
  12. package/dist/types/addons/TAAPass.d.ts +6 -15
  13. package/dist/types/capture/SplatCapture.d.cts +66 -0
  14. package/dist/types/capture/SplatCapture.d.ts +66 -0
  15. package/dist/types/capture/WebGLCapture.d.cts +13 -0
  16. package/dist/types/capture/WebGLCapture.d.ts +13 -0
  17. package/dist/types/capture/WebGPUCapture.d.cts +17 -0
  18. package/dist/types/capture/WebGPUCapture.d.ts +17 -0
  19. package/dist/types/capture/pixels.d.cts +5 -0
  20. package/dist/types/capture/pixels.d.ts +5 -0
  21. package/dist/types/capture/rendererState.d.cts +3 -0
  22. package/dist/types/capture/rendererState.d.ts +3 -0
  23. package/dist/types/capture/sceneView.d.cts +3 -0
  24. package/dist/types/capture/sceneView.d.ts +3 -0
  25. package/dist/types/index.d.cts +1 -1
  26. package/dist/types/index.d.ts +1 -1
  27. package/dist/types/rendering/GaussianSplatRenderer.d.cts +13 -11
  28. package/dist/types/rendering/GaussianSplatRenderer.d.ts +13 -11
  29. package/dist/types/rendering/SplatAccumulator.d.cts +2 -1
  30. package/dist/types/rendering/SplatAccumulator.d.ts +2 -1
  31. package/dist/types/rendering/backend.d.cts +1 -1
  32. package/dist/types/rendering/backend.d.ts +1 -1
  33. package/dist/types/rendering/rendererUtils.d.cts +1 -5
  34. package/dist/types/rendering/rendererUtils.d.ts +1 -5
  35. package/dist/types/rendering/tsl/tslCompat.d.cts +1 -0
  36. package/dist/types/rendering/tsl/tslCompat.d.ts +1 -0
  37. package/dist/types/rendering/uniforms.d.cts +0 -3
  38. package/dist/types/rendering/uniforms.d.ts +0 -3
  39. package/dist/types/scene/SplatMesh.d.cts +1 -1
  40. package/dist/types/scene/SplatMesh.d.ts +1 -1
  41. package/docs/Architecture.md +48 -3
  42. package/docs/GaussianSplatRenderer.md +71 -55
  43. package/docs/PostDecode.md +52 -36
  44. package/docs/RadStreamScheduler.md +53 -41
  45. package/docs/SogStreamScheduler.md +49 -39
  46. package/docs/SplatCapture.md +147 -0
  47. package/docs/SplatEdit.md +33 -26
  48. package/docs/SplatFileType.md +11 -13
  49. package/docs/SplatLoader.md +19 -14
  50. package/docs/SplatMesh.md +69 -49
  51. package/docs/Splats.md +33 -26
  52. package/docs/StochasticRendering.md +27 -30
  53. package/docs/TAAPass.md +97 -73
  54. package/package.json +1 -1
  55. package/docs/SplatAccumulator.md +0 -37
package/CHANGELOG.md CHANGED
@@ -7,11 +7,33 @@ and this project follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.2.1] - 2026-10-06
11
+
12
+ ### Added
13
+
14
+ - Added `encodeLinear` to `GaussianSplatRenderer` to choose how model colors are converted before blending: `true` converts them to linear, `false` keeps their sRGB values. Left unset, the conversion is automatic as before.
15
+ - Added `SplatCapture` for rendering Splat scenes offscreen: render targets with optional supersampling and double buffering, RGBA pixel readback, cube maps, and environment maps for reflections. It works on WebGLRenderer and on WebGPURenderer with WebGPU or its WebGL2 fallback. Your render loop can keep running while a capture is in progress, and captures use your Splat renderer's quality settings. This brings back the capture methods `GaussianSplatRenderer` had in 1.1.8, under the same names. See [SplatCapture](docs/SplatCapture.md).
16
+
17
+ ### Changed
18
+
19
+ - The default `minAlpha` is now `1 / 255` instead of `0.5 / 255`. Set `minAlpha: 0.5 / 255` to keep the previous look.
20
+ - `TAAPass` is now used through `EffectComposer` with a final Three.js `OutputPass`; calling `taa.render(renderer)` on its own is no longer supported. Bloom and other effects go between the two passes without extra settings. Splat colors still match direct canvas rendering. `OutputPass` applies the renderer's tone mapping to the whole image, Splats included. See [TAAPass and TAANode](docs/TAAPass.md).
21
+
22
+ ### Removed
23
+
24
+ - Removed `maxPixelRadius`. A Splat's radius on screen is now limited automatically to the short side of the viewport.
25
+ - Removed `TAAPass.accumulateInOutputSpace`. Delete it from your code; effects after `TAAPass` no longer need it.
26
+ - Removed the `SplatAccumulator` class and the `SplatMapping` type from the package exports. `GaussianSplatRenderer` manages the combined scene data itself. To read a model's Splats, use [Splats](docs/Splats.md).
27
+
28
+ ### Fixed
29
+
30
+ - Fixed incorrect Splat colors that could appear on WebGPURenderer as models loaded into a previously empty scene.
31
+
10
32
  ## [1.2.0] - 2026-10-03
11
33
 
12
34
  ### Added
13
35
 
14
- - Exported `TAAPass(scene, camera)`, temporal anti-aliasing for WebGLRenderer that renders the scene itself and needs no velocity texture. Its result matches direct canvas colors and needs no `OutputPass`; set `accumulateInOutputSpace = false` for linear effects such as Bloom. Scene depth is exposed for depth effects. Exported `TAANode(scene, camera)` provides the same camera/depth reprojection in TSL for native WebGPU and WebGL2 fallback, accumulating in linear space for `RenderPipeline`, without a velocity attachment.
36
+ - Exported `TAAPass(scene, camera)`, temporal anti-aliasing for WebGLRenderer that renders the scene itself and needs no velocity texture. Its result matches direct canvas colors and needs no `OutputPass`. Scene depth is exposed for depth effects. Exported `TAANode(scene, camera)` provides the same camera/depth reprojection in TSL for native WebGPU and WebGL2 fallback, accumulating in the working color space for `RenderPipeline`, without a velocity attachment.
15
37
  - Added `stochasticSample` and `autoAdvanceStochasticSample` to control the stochastic noise pattern, for example in a custom temporal anti-aliasing integration.
16
38
  - Added `SplatLoader.abort()`, which cancels every load the loader has in progress.
17
39
  - PLY loading now accepts headers with Windows line endings, `int8`–`float64` type names, extra elements before the vertex data, and Gaussian files that store their base color as `red`/`green`/`blue`.
@@ -511,7 +533,8 @@ and this project follows [Semantic Versioning](https://semver.org/).
511
533
 
512
534
  - Initial public release of the Three.js Gaussian Splatting renderer.
513
535
 
514
- [Unreleased]: https://github.com/WilliamLiu-1997/Gaussian-Splat-Lite/compare/v1.2.0...HEAD
536
+ [Unreleased]: https://github.com/WilliamLiu-1997/Gaussian-Splat-Lite/compare/v1.2.1...HEAD
537
+ [1.2.1]: https://github.com/WilliamLiu-1997/Gaussian-Splat-Lite/compare/v1.2.0...v1.2.1
515
538
  [1.2.0]: https://github.com/WilliamLiu-1997/Gaussian-Splat-Lite/compare/v1.1.8...v1.2.0
516
539
  [1.1.8]: https://github.com/WilliamLiu-1997/Gaussian-Splat-Lite/compare/v1.1.7...v1.1.8
517
540
  [1.1.7]: https://github.com/WilliamLiu-1997/Gaussian-Splat-Lite/compare/v1.1.6...v1.1.7
package/README.md CHANGED
@@ -29,8 +29,9 @@ High performance 3D Gaussian Splatting (3DGS) renderer for **Three.js** with **W
29
29
  | Focus | What you get |
30
30
  | --- | --- |
31
31
  | **WebGPU / WebGL2** | Use the same Three.js scene API with either renderer |
32
- | **Stochastic rendering** | Optional transparency mode for use with temporal anti-aliasing |
33
32
  | **Large-scene streaming** | Load RAD and SOG detail as the camera moves, with smooth transitions |
33
+ | **Stochastic rendering** | Optional transparency mode, with built-in temporal anti-aliasing to smooth it |
34
+ | **Offscreen capture** | Render Splats to images, cube maps, and environment maps for reflections |
34
35
  | **SDF edits** | Recolor or hide parts of a model without moving Splats |
35
36
  | **Data and precision** | Load URLs, files, or bytes; place local models in large GIS/ECEF scenes |
36
37
 
@@ -107,7 +108,7 @@ Sorted alpha blending is the default. To enable stochastic rendering:
107
108
  splatRenderer.stochastic = true;
108
109
  ```
109
110
 
110
- This mode produces visible noise. Use the library's [TAAPass / TAANode](docs/TAAPass.md) to smooth it: `TAAPass` for `WebGLRenderer`, and `TAANode` for `WebGPURenderer` (including its WebGL2 fallback). See [Stochastic rendering](docs/StochasticRendering.md) for sorting options and TAA setup.
111
+ This mode produces visible noise. Smooth it with the library's [temporal anti-aliasing](docs/TAAPass.md): `TAAPass` for `WebGLRenderer`, and `TAANode` for `WebGPURenderer` (including its WebGL2 fallback). See [Stochastic rendering](docs/StochasticRendering.md) for the setup.
111
112
 
112
113
  ## Streaming large scenes
113
114
 
@@ -155,18 +156,26 @@ const streaming = new SogStreamScheduler({
155
156
 
156
157
  ## Documentation
157
158
 
158
- - [GaussianSplatRenderer](docs/GaussianSplatRenderer.md) — Rendering options and sorting.
159
- - [Stochastic rendering](docs/StochasticRendering.md) — Optional rendering mode, noise control, and temporal anti-aliasing.
160
- - [TAAPass / TAANode](docs/TAAPass.md) — Temporal reprojection for WebGLRenderer and WebGPURenderer without a velocity texture.
161
- - [SplatMesh](docs/SplatMesh.md) — Loading, transforms, animation, and raycasting.
162
- - [SplatLoader](docs/SplatLoader.md) — File loading.
159
+ **Rendering**
160
+
161
+ - [GaussianSplatRenderer](docs/GaussianSplatRenderer.md) — Rendering options, sorting, and on-demand rendering.
162
+ - [Stochastic rendering](docs/StochasticRendering.md) — The optional transparency mode and how to smooth its noise.
163
+ - [TAAPass and TAANode](docs/TAAPass.md) — Temporal anti-aliasing for WebGLRenderer and WebGPURenderer.
164
+ - [SplatCapture](docs/SplatCapture.md) — Offscreen images, pixel readback, cube maps, and environment maps.
165
+
166
+ **Models**
167
+
168
+ - [SplatMesh](docs/SplatMesh.md) — Loading, transforms, animation, and picking.
169
+ - [SplatLoader](docs/SplatLoader.md) — Three.js-style loading, progress, cancellation, and split files.
170
+ - [SplatFileType](docs/SplatFileType.md) — PLY, SPZ, SOG, and RAD formats.
171
+ - [postDecode](docs/PostDecode.md) — Change Splats while a model loads.
172
+ - [SplatEdit and SplatEditSdf](docs/SplatEdit.md) — Recolor, fade, or hide parts of a model.
173
+ - [Splats](docs/Splats.md) — Read a loaded model's data.
174
+
175
+ **Large scenes**
176
+
163
177
  - [RadStreamScheduler](docs/RadStreamScheduler.md) — Large RAD scenes with adaptive detail.
164
178
  - [SogStreamScheduler](docs/SogStreamScheduler.md) — Large SOG scenes with adaptive detail.
165
- - [Splats](docs/Splats.md) — Data access and updates.
166
- - [SplatFileType](docs/SplatFileType.md) — PLY/SPZ/SOG/RAD formats.
167
- - [SplatEdit / SplatEditSdf](docs/SplatEdit.md) — Color and opacity editing.
168
- - [postDecode](docs/PostDecode.md) — Transform models while loading.
169
- - [SplatAccumulator](docs/SplatAccumulator.md) — Combined model data for custom integrations.
170
179
 
171
180
  ## Development
172
181
 
@@ -180,7 +189,7 @@ npm run dev
180
189
 
181
190
  Open the URL printed by Vite (normally `http://localhost:8080/`) and drop a `.ply`, `.spz`, `.sog`, or `.rad` file into the viewer, choose a local file, or load one from an HTTP(S) URL. For split SOG, select or drop `meta.json` together with its `.webp` images; for split RAD, include the header and its `.radc` pages. Files are decoded locally. Choose **WebGPU / WebGL2 / WebGPU · WebGL2** in the viewer to compare backends.
182
191
 
183
- See [Contributing](CONTRIBUTING.md#validation) for validation commands. `npm run build` emits ESM, CommonJS, TypeScript declarations, and source maps in `dist/`.
192
+ See [Contributing](CONTRIBUTING.md#validation) for validation commands, and [Architecture](docs/Architecture.md) for how the library is built internally. `npm run build` emits ESM, CommonJS, TypeScript declarations, and source maps in `dist/`.
184
193
 
185
194
  ## Acknowledgements
186
195