v0.13.2
·
301 commits
to master
since this release
Major Features
- Gaussian splat rendering: upload a set of 3D Gaussian primitives once via
upload_gaussian_splatsand reference it each frame withGaussianSplatItem. Each splat is an anisotropic ellipsoid defined by a center, per-axis scale, and quaternion rotation.
Improvements
- Multiple (non-planar) clip volumes now compose. Previously only the first box or sphere took effect. We now support up to 4 box, sphere, or cylinder entries. 6 planes can be active at once.
ClipShape::Cylinder: a new cylinder clip shape.
API changes
Camera::znearis nowOption<f32>.None(the default) lets the library maintain a 10,000:1 near/far ratio automatically, so depth precision stays usable at any zoom level without any configuration.Some(value)pins the near plane exactly as before. Callers that readcam.znearfor their own NDC math should switch tocam.effective_znear().
Fixes
- Volume clip planes cut on the wrong side -- inconsistent with how it worked with other viewport types.
- Objects behind opaque surfaces could bleed through at large camera distances. At zoom levels where the znear/zfar ratio exceeds 10,000:1, f32 depth values lose enough precision that two distinct surfaces map to the same depth sample. The library now caps the effective near plane automatically when
znearisNone, keeping the ratio within a range where f32 depth is reliable. - Dark or light rectangular patches on large flat surfaces when zooming out: surfaces using
BackfacePolicy::Identicalon thin box geometry could show back-face fragments at distance due to depth buffer precision limits, producing rectangular shading artifacts. Removed the two-sided policy from ground plane boxes in the affected showcase scenes.