Another release wrapped up! This time around, I'm extremely thankful for last release's CI/CD, which made shipping preview builds joyful, and made this release much easier to put together! I'm also really thankful to @ponugotimanasaqc @austinbhale and @0y8w1x, who all contributed to this release.
This release we spent a lot of time working on UI and theming! SK's UI has never looked better, and grows increasingly more customizable by the day! A spatial anchor API was added in this release for those devices that support the MSFT anchor extensions (sorry Quest, next release!). We also did a lot of meaningful refactors to the platform code to enable the new SKSettings.mode
options, as well as some exciting graphics features still down the road!
You can see the raw changelog here, but here's the high level overview:
Anchor API
- Added an Anchor API for persistent spatial anchors! See here for an example of how to use them. Right now this only supports MSFT anchors and a stage space fallback. FB (Quest) anchors will be coming soon.
UI
- Reworked the default StereoKit theme! #821 No layout values were changed, just art assets and shaders. If you still need the previous theme, it can be recovered like so.
- Added
UI.HSpace
andUI.VSpace
.UI.Space
is now deprecated. #751 UI.ButtonImg
now has an overload that allows tinting the image. #811- Added a "Grab Aura" to
UI.Window
elements that makes it easier to grab windows. #784 - Added
UI.Push/PopGrabAura
to turn the aura on and off, andUI.GrabAuraEnabled
to check the current state. - Added
UI.SetElementColor
, allowing you to override the default color category of UI elements. #795 - Added
UI.SetElementSound
, allowing customization of UI element sounds. #795 - Added
UI.GenQuadrantMesh
, a tool for generating more complex UI meshes easily. - Added
sk_eye_offset
to global shader variables for determining which eye is currently being rendered. #862
New API Features
- Added
SKSettings.mode
, this replacesSKSettings.displayPreference
, which is now deprecated. This change comes with a big rework of platform code, and new ways of running StereoKit!AppMode.Window
allows for a simulator free flat window, andAppMode.Offscreen
allows for running StereoKit without a display surface at all. - Added
SKSettings.omitEmptyFrames
, which tells SK to skip submitting a frame to the compositor if nothing has been drawn. This can be useful for performance of overlay applications that want to be listening for input, but don't always need to draw. #745 - Added
Device.Runtime
, for the current OpenXR runtime's name. #871 - Added signed/unsigned/float variants for the
Tex.R16
texture format. #841 - Added
Tex.GetColorData
for more format flexibility, this replacesTex.GetColors
, which is now deprecated. #859 - Added a collection of built-in default
Sprite
s.Sprite.ArrowLeft/Right/Up/Down
,Sprite.Backspace
,Sprite.Shift
, andSprite.Close
. - Added
Renderer.SkyMaterial
for easy overriding of the skybox material. #863 - Added
World.Tracked
, to tell if the device itself is currently tracking. #851
Changes
- Fallback file-picker now has a list-mode, and uses a scroll bar! #834
- Fallback keyboard has been refactored, and includes some visual improvements. #806
- Updated to OpenXR Loader v1.0.34. #865
- StereoKit threads now have an ID attached to them in debuggers.
- Major overhaul of platform code to increase sharing of platform code and enable future features. #802
Platform.ForceFallbackKeyboard
now applies even in the presence of a physical keyboard. #847- UI.Handle now will always FaceUser from the center of the Handle. #826
- Log tool now shows performance graphs in addition to debug logs. #808
- Overlay app now obeys explicit blend mode selection. #756, #757
Fixes
- Fix for
Tex.R8g8
textures on OpenGL platforms. #868 - Various texture format/size fixes for OpenGL. #841
- Fix
Font.FromFile
when referencing fonts in the Assets folder. #853 - Fix
UI.ButtonImgAt
binding calling the incorrect native function. #850 - Fix for no final audio effect when a UI element vanishes. #773
- Fix an EGL attribute error for NVIDIAs Jetson Orin NX #838
- Fix JNI cleanup errors on shutdown. #832
- Fix for MSFT secondary view configuration. #750, #830
- Fix for some bounds calculation issues. #769
- Fix for model_node_info_get when key does not exist. #736, #737
Install or Update
Installation is via the dotnet templates and NuGet, please refer here for instructions!
https://stereokit.net/Pages/Guides/Getting-Started.html
If you already have a project using StereoKit, go to Project->Manage NuGet Packages, and update to this version! Do a full rebuild of your project afterwards.