0.13.0 - Fast time series, improved layout editing & UI overrides - 2024-02-12
<p align="center">
<img src="https://github.com/rerun-io/rerun/assets/49431240/cbbd6661-9a42-4278-88cb-6effdf4b96c6">
</p>
✨ Overview & highlights
This release focuses on scalar time series -- both from a performance and UI perspectives.
Check out our associated blog post for more information.
-
📈 Rerun can now visualize many time series in the kHz range in real-time:
- The new query cache optimizes data access, improving query performance by 20-50x
- Sub-pixel aggregation prevents unnecessary overdraw when rendering plots, improving rendering time by 30-120x
- Points, lines, arrows and boxes all benefit from query caching too to a lesser extent, yielding 2-5x performance improvements
-
🖼 UI overrides:
- The new
Scalar
, SeriesLine
& SeriesPoint
archetypes allow for customizing plots both at logging and visualization time - Customize marker shapes, marker sizes, etc from code or directly through the UI
- Specify axis labels, lock axes, etc from code or directly through the UI
-
🌁 Viewer:
- The number of compute threads can now be controlled using the
--threads
/-j
flag - Added support YUY2-encoded images (thanks @oxkitsune!)
- Space views can now be drag-and-dropped directly from the blueprint tree
- Scenes with 100+ entities are now up to 5x faster.
-
🚚 New Space View and Container creation workflow:
- When selected, containers have a children list in the Selection Panel, where new Space Views and Containers may be added.
- New modal dialog to add Space Views and Containers.
- The same dialog is also available from the
+
button of the Blueprint tree UI. - The Space View's origin can now be edited in the Selection Panel.
- The container hierarchy can now be cleaned up with the new
Simplify Hierarchy
button in the Selection Panel for containers.
-
🦀 The Rust SDK now exposes an optional integration with the mint
crate
-
🕸️ The web UI SDK now supports loading multiple .rrd
URLs
-
🔺 The web viewer now renders using WebGPU by default (when available), leading to lower memory usage on Chrome.
You can override this behavior using ?renderer=webgl
/?renderer=webgpu
url parameter, or restart with WebGL/WebGPU respectively from the options menu.
As well as a lot of miscellaneous bug fixes and usability improvements: see details below.
Check out our migration guide.
🔎 Details
🪵 Log API
- Mark TimeSeriesScalar as deprecated in all SDKs and documentation #5102
🌊 C++ API
- Document that in C++ PinholeProjection::from_mat3x3 is column major #4843
- Include LICENSE files into C++ SDK Assets #4870 (thanks @rgolovanov!)
- Fix C++ Arrow build flag forwarding #4921 (thanks @rgolovanov!)
🦀 Rust API
- Add integration with the
mint
crate #4753
🐍 Python API
- Fix support for compressing mono images by respecting mode to determine depth #4847
🪳 Bug fixes
- External loader: don't do process IO on compute thread-pool #4942
- Fix a Visible Time Range UI issue where the summary string would display the wrong data range #5034
- Clear empty containers after tile drag-and-drop #5044
- Allow for very large meshes & plots by always picking the largest available GPU buffer size #5053
- Fix forever repaint of big scenes #5071
- Fix
RERUN_FLUSH_NUM_BYTES
and data size estimations #5086 - Make
rectangle_fs.wgsl
compile on chrome despite angle/mesa bug (#3931) #5074
🌁 Viewer improvements
- Introduce Scalar, SeriesLine, and SeriesPoint archetypes with their own visualizers #4875
- Support modifying the plot style by introducing a generic framework for overriding components #4914
- Introduce a new blueprint archetype for AxisY configuration in a plot #5028
- Improve the selection/hover behavior for plots #5096
- Click a spatial space view background to select the space view itself #4796
- Double-clicking an entity in the blueprint & time panels focuses the 3D camera on it #4799
- When loading a .ply file, warn about ignored properties #4934
- Make it easier to position 3D eye-camera center #4943
- Include tessellation and rendering in CPU time shown in top bar #4951
- Allow selection of entities directly in the plot space view #4959
- Texture support for raw
Mesh3D
logging #4894
🚀 Performance improvements
- Add
--threads
/ -j
to control number of compute threads #5021 - Introduce the query cache:
- Primary caching 3: bare-bone latest-at caching #4659
- Primary caching 4: runtime toggle support #4680
- Primary caching 5: 2D & 3D point clouds #4681
- Primary caching 6: TextLogs & TimeSeries #4698
- Primary caching 7: Always expose the data time in query responses #4711
- Primary caching 8: implement latest-at data-time cache entry deduplication #4712
- Primary caching 9: timeless latest-at support #4721
- Primary caching 10: latest-at cache invalidation #4726
- Primary caching 11: cache stats and integration with memory panel #4773
- Primary caching 12: bare-bone range support #4784
- Primary caching 13: stats & memory panel integration for range queries #4785
- Primary caching 14: don't bake
LatestAt(T-1)
results into low-level range queries #4793 - Primary caching 15: range read performance optimization #4800
- Primary caching 16: context-free range semantics #4851
- Primary caching 17: timeless range #4852
- Primary caching 18: range invalidation (ENABLED BY DEFAULT :confetti_ball:) #4853
- Primary caching 19 (final): make cache globals non-static #4856
- Integrate query caching with more primitives:
- Cached 2D & 3D box clouds #5000
- Cached 2D & 3D line clouds #5083
- Cached 2D & 3D arrow clouds #5088
- Configurable dynamic plot aggregation based on zoom-level #4865
- Improved automatic view creation heuristic, major speedup for scenes with many entities #4874
- Optimize point clouds #4932
🧑🏫 Examples
- Update all examples that use
TimeSeriesScalar
to use Scalar
instead #5042
📚 Docs
- Improve documentation of the
Clear
archetype #4760 DisconnectedSpace
now only applies to spatial space views #4935- Fill gaps in image encoding documentation, fix how Python documents union variants #4988
🖼 UI improvements
- Improve timeseries Space Views:
- Introduce a new component for MarkerShape and use it in SeriesPoint #5004
- Introduce a new StrokeWidth component and use it for SeriesLine #5025
- Break up plot charts when there's a
Clear
#4957 - Only show the LegacyVisualizer if a user logs with TimeSeriesScalar archetype #5023
- Fix lagging time cursor when panning a time series plot #4972
- New Space View and Container creation workflow:
- Use the "Add space view/container" modal for the
+
button of the blueprint tree #5012 - Add support for removing container children from the selection panel #4930
- Add support for full span highlighting to modal and use it in the "Add space view or container" modal #4822
- Remove the "+" icon from the "Add SV/Container" modal and close on click #4927
- New empty space view defaults to uncollapsed in blueprint tree #4982
- Do not allow adding Horizontal/Vertical containers inside of containers with the same type #5091
- Selection improvements:
- Click a recording to select it #4761
- Press the escape key to clear the current selection #5103
- Clear selection when clicking blank space in the Blueprint View #4831
- Selecting/hovering components now highlights their parent entity #4748
- Add support for drag-and-drop in blueprint tree #4910
- Add support for editing a space view's space origin #4848
- Add Help and Discord to command palette #4752
- Syntax highlighting of entity paths and instance paths #4803
- Update container (and a couple other) icons #4814
- Make space view names optional and subdue placeholder view label in the UI #4682
- Show download sizes of in the example page #4841
- Style container's label as unnamed #4975
- Fix space view cloning to also copy entity properties (visible time range, etc.) #4978
- Improve how the root container is displayed and handled in the blueprint tree #4989
- Improve the UI for the entity query #5022
- Don't show the Blueprint header when on the welcome screen #5046
- Move Visible Time Range higher in the Selection Panel #5036
- Clean up time range UI #5089
- Improve preview UI for Component data #5093
- Paint closest labels on top of labels further away #5124
🕸️ Web
- Web: Support multiple
.rrd
URLs #4740 - Unify
web_viewer/index.html
and index_bundled.html
#4720 - Allow forcing WebGPU/WebGL on the web player, new command line argument to force graphics backend #4981
🎨 Renderer improvements
- Update to wgpu 0.19 and latest
egui
trunk #4885 - Support YUY2-encoded images #4877 (thanks @oxkitsune!)
🧑💻 Dev-experience
- Default to DEBUG log level in debug builds #4749
- New debug option to show an actual timeline for the Blueprint #4609
- Primary cache: basic debug tools via command palette #4948
🗣 Refactors
- Migrate from
egui_Tile::TileId
to proper blueprint IDs in ViewportBlueprint
API #4900
📦 Dependencies
- Remove
egui_plot
as dependency from re_sdk
#5099 - Update to egui 0.25 and winit 0.29 #4732
- Prune dependencies from
rerun
and re_sdk
#4824 - Relax pyarrow dependency to
>=14.0.2
#5054 - Update egui_tiles to 0.7.2 #5107
🤷 Other
🤷 Other
- Add
rerun --serve
and improve --help
#4834 rerun print
: print just summary, unless given --verbose
#5079