Vrui 2.4-xxx Release Notes
This page lists major changes between Vrui versions 2.3-xxx and 2.4-yyy, both for users and programmers.
User-Level Changes
-
Changed keyboard mapping and rendering behavior in desktop mode:
- Screenshots are requested via the Win+PrintScreen combination, and windows now print a confirmation message after a screenshot has been saved.
- Applications can still be shut down quickly by pressing the Esc key, but now without any modifier keys except NumLock or CapsLock.
- To show rendering frame rates, one has to enable FPS display through a window's configuration file section (enabled by default in packaged Vrui.cfg), and then enter "burn mode" via the Win+ScrollLock combination. In "burn mode," Vrui renders frames as rapidly as possible, and any windows with FPS display enabled show the current averaged frame rate. Upon leaving "burn mode" by pressing Win+ScrollLock again, Vrui prints the overall average frame rate to the console.
- New Vrui command line options to track Vrui's initialization and shutdown behavior:
- -vruiHelp prints all Vrui-wide command line options.
- -vruiVerbose prints detail messages during Vrui's initialization and shutdown procedures.
- -dumpConfig <configuration file name> writes the current configuration space, at the point in the command line where the option is encountered, to a configuration file of the given name.
- Comprehensive set of command line options to customize Vrui initialization:
- -setLinearUnit <unit name> <unit factor> defines the measurement unit of the application's navigational space, unless overridden by the application itself. For example, if one unit in navigation space corresponds to 2.0 meters, the option would be -setLinearUnit meter 2.0.
- -addToolClass <tool class name> loads a tool class not listed in the configuration space and makes it available for subsequent binding.
- -addTool <tool binding section name> creates the tool defined in the tool binding section of the given name.
- -loadInputGraph <input graph file name> loads a complete input graph from a file that was previously saved from within a Vrui application.
- -loadView <viewpoint file name> loads a previously saved viewpoint file.
- Slight change in input graph files: virtual devices created by a tool binding are now named after the name of the tool binding section, to simplify using virtual devices in subsequent sections for tool stacking. This might require small changes to existing input graph files.
- Movement buttons used by FPSNavigationTool can now be used by other tools while the navigation tool is inactive.
- Cascading menus are now centered on their cascading buttons for improved menu navigation.
- Improved placement options for Vrui windows to work around issues with dumb window managers or buggy multi-screen implementations. Windows now respect the top-left corner positions set in their configuration sections (the given position corresponds to the top-left inner corner of the window, not the frame), and window decorations can be turned off by setting decorate to false.
- Added device driver for several models of 5DT data gloves.
Programmer-Level Changes
- Added simple low-level helper function Misc::print to print all types of integers to Misc/PrintInteger.h.
- Added new unlimited and limited queue abstraction classes, Threads::Queue and Threads::LimitedQueue, respectively, to Threads library.
- API change: changed constructors of IO::StandardDirectory and Cluster::StandardDirectory to take const char* instead of std::string.
- Added experimental IO::FileMonitor class to monitor changes to files or directories; currently only on Linux.
- Added methods to couple and decouple cluster-forwarded pipes to Cluster::ClusterPipe to support more flexible use cases. While decoupled, slaves must not read from or write to pipe until re-coupled.
- Added Math::min, Math::max, and Math::clamp to Math/Math.h.
- Added integer versions of Math::floor and Math::ceil (both no-ops) to Math/Math.h to improve genericity.
- Added Math::Noise, a helper class to calculate 3D band-limited noise.
- Added orthogonalize, reflect, findParallelAxis, and findOrthogonalAxis methods and functions to Geometry::Vector.
- Added set of intersection test functions for common geometric objects to Geometry/IntersectionTests.h.
- Added detachPoints method to Geometry::ArrayKdTree to support in-place kd-tree creation.
- Added several convenience functions to compile and link GLSL shaders to GLARBShaderObject, GLARBVertexShader, GLARBGeometryShader4, and GLARBFragmentShader.
- Added convenience method GLMotif::PopupWindow::close to safely close and destroy a pop-up window from anywhere, and static GLMotif::PopupWindow::defaultCloseCallback to simplify GUI programming.
- API change: rebased GLMotif::FileSelectionDialog::CallbackData to GLMotif::PopupWindow::CallbackData and removed defaultCloseCallback and close methods from GLMotif::FileSelectionDialog; now handled by GLMotif::PopupWindow base class.
- Added inverseTransform method to Vrui::CoordinateTransform and all derived classes to support more flexible uses of custom transformations.
- Added ability to programmatically request additional visual properties such as stencil or accumulation buffers to Vrui's rendering windows by calling Vrui::requestWindowProperties before Vrui's main loop starts.
- Added application state retention to Vrui::SurfaceNavigationTool base class. Applications can store custom state that stays valid while a tool remains active.
- API change: removed limitAngle protected function from Vrui::SurfaceNavigationTool; replaced by Math::clamp in Math/Math.h.
- Added alternative appDefaults-less constructor for Vrui::Application.