Skip to content

0.13.0 - Fast time series, improved layout editing & UI overrides

Compare
Choose a tag to compare
@rerun-bot rerun-bot released this 12 Feb 16:07
· 689 commits to main since this release

Rerun is an easy-to-use visualization toolbox for multimodal and temporal data.
Try it live at https://app.rerun.io/.

This release focuses on scalar time series -- both from a performance and UI perspectives. Check out our associated blog post for more information.

Overview & Highlights

  • 📈 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 🎊) #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

  • Add rerun --serve and improve --help #4834
  • rerun print: print just summary, unless given --verbose #5079