Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
StereoKitTest_win32_x64_v0.3.8.zip | 2023-09-27 | 5.4 MB | |
net.stereokit.stereokittest_netandroid-v0.3.8.apk | 2023-09-27 | 9.1 MB | |
native_binaries_headers_v0.3.8.zip | 2023-09-27 | 56.5 MB | |
README.md | 2023-09-26 | 20.2 kB | |
v0.3.8.tar.gz | 2023-09-26 | 19.5 MB | |
v0.3.8.zip | 2023-09-26 | 19.9 MB | |
Totals: 6 Items | 110.5 MB | 0 |
It's finally here! After more than a year of development, v0.3.8 is ready at last! This release took way longer than expected, but includes a lot of really good work. Many thanks to all the contributors here with quite a variety of fixes and features!
Templates
New dotnet
powered templates are now available, and are the recommended way to develop going forward! These templates work both for Visual Studio 2022 as well as CLI environments like VSCode. And most notably, the templates now include an official Android compatible template! The getting started guide on stereokit.net has also been updated to use these templates.
Nightly Builds and CI / CD
StereoKit now uses GitHub Actions for nightly builds, releases, and verification of PRs! This helps catch and prevent certain bugs and build issues before they happen, and helps get you features and fixes sooner. All changes on the /develop
branch will be available the next day as a .preview build on NuGet! To get nightly builds, make sure to enable Include prerelease
in your Visual Studio NuGet Package Manager.
To help facilitate this, StereoKit's build tooling was also completely overhauled to make it easier to build the SDK from scratch. If you're interested in contributing to the core, things just got a bit easier for you :)
Demos, Samples and Tools
- Projects
- Demo project showing how to use Bepu 2 for physics with StereoKit.
- Demo project showing vertex light baking and static scene management in StereoKit.
IStepper
Tools- Added a Tool for displaying ReadyPlayerMe avatars.
- Added a Tool for displaying a Log window.
- Added a Tool for building and modifying UI Themes.
- Demos
- Cleaned up the StereoKitTest project, which now ships along with this release (see downloads below). The layout is more consistent and clean, with debug menus and tools now hidden away in the hand menu.
- Demos are now browsable with screenshots over on this page.
- Added an asset browser window demo showcasing the new
Asset
andUI.LayoutPushCut
APIs. - Added a small demo to show the new
Device
class. - Added an inverted shell outline material demo to illustrate the new
Material.Chain
feature. - Added a new Hand Pose editor demo for showcasing the new hand sim poses feature. [#149]
- Added a small render scale demo to illustrate usage of the new settings for render resolution.
- Added a UI 'tearsheet' demo that contains most of SK's UI elements.
- Added a UI grab bar demo, to illustrate moving a window via external handles.
- Added a new mic recording demo.
API Additions
Highlights
- Added the ability to change StereoKit's spatial reference point! Stage and Floor are now valid options in addition to Local. See:
SKSettings.origin
,World.OriginMode
andWorld.OriginOffset
. - Added a
Device
info class.Name
,GPU
,DeviceTracking
,DisplayBlend
,DisplayType
,ValidBlend
,HasEyeGaze
,HasHandTracking
. - Added
Material.Chain
for multi-pass materials. - Added
UI.LayoutPush
,UI.LayoutPushCut
, andUI.LayoutPop
for more flexible UI layouts.
UI
- Added overload to
UI.SetThemeColor
that allow for specifying separate colors for different element states. [#506] - Added overload to
UI.ButtonBehavior
to provide the interacting hand. - Added parameter to
UI.Handle
andUI.HandleBegin
to allow configuration of the activating gesture. [#601] - Added
UI.SystemMoveType
for configuring how SK provided UI windows move. [#479] - Added
UIVisual.ButtonRound
,UIVisual.Panel
, andUIVisual.Carat
for customizing a few more UI elements. [#484] - Added
UI.Toggle
overload with sprite arguments. [#514] - Added a
UINotify
property toUI.HSlider
to change notification behavior between 'on changed' and 'on finalized'. [#321] - Added
UI.VSlider
andUI.VSliderAt
. - Added
UI.TextAt
andUI.Text
with size. [#540] - Added a read only
UI.TextStyle
for peeking the current style. - Added a getter for
UI.Settings
. - Added a
UIBtnLayout.None
option to image button UI elements. - Added
UISettings.rounding
andUISettings.margin
. [#556] - Added
UIVis.SliderLineActive
andSliderLineInactive
. - Added overload for
UI.ButtonBehavior
that takes a depth and activation depth. - Added image overloads for
UI.Radio
, and addedUI.RadioAt
. [#571] - Added
UI.LastElementHandActive
andUI.LastElementHandFocused
. - Added
UI.PopupPose
, a function for getting a good popup location between the user and what they're interacting with. [#478] - Fallback soft keyboard and file picker popup now use
UI.PopupPose
for their location. [#478] - Deprecated
UI.LastElementHandUsed
.
Assets
- Added
Assets.All
,Assets.Type
, get/set properties for Id on assets, and all asset types now inherit from theIAsset
interface. [#432] - Added
Mesh.SetData
for setting vertices and indices at the same time. - Added
Mesh.GenerateCircle
, and addeddoubleSided
toMesh.GeneratePlane
, thanks jackdaus! [#503] - Added
calculateBounds
parameter toMesh.SetVerts
. - Added
Tex.Mips
,Tex.GetNativeSurface
, and a new overload forTex.GetColors
. [#466] - Added
Tex.GenParticle
. - Added
Tex.SetMemory
, thanks Austin!. [#574] - Added the ability to control ownership of a native texture resource when calling
Tex.SetNativeSurface
, thanks technobaboo! [#459] - Added a
Material
constructor that takes a shader filename. - Added getters for
Material
shader properties:GetTexture
,GetFloat
,GetInt
,GetUInt
,GetBool
,GetMatrix
,GetVector2
,GetVector3
,GetVector4
,GetColor
. - Added
Material.Chain
for multi-pass materials. - Added
ModelNode.Info
for storing per-node key/value pair data. GLTF also loads "extras" here [#447] - Added
Model.RecalculateBoundsExact
, thanks Paul! [#578] - Added overload to
Model.Draw
that allows for overriding theMaterial
s used. - Added
Sprite.Find
. - Added
TextStyle.FromFont
, a more consistent replacement forText.MakeStyle
. - Added a setter for
TextStyle.CharHeight
. - Deprecated the
Solid
asset. Reactphysics3d will be removed in v0.4. Please see this sample project for how to use a 3rd party library such as Bepu.
Math
- Added
Matrix.Transpose
andMatrix.Transposed
. - Added
Vec3.Direction
andVec2.Direction
, [#476] thanks Ethan Merchant! - Added
Quat.Delta
andQuat.Relative
, deprecatedQuat.Difference
, [#479] thanks Ethan Merchant! - Added a
Pose
constructor that defaults toQuat.Identity
for orientation. - Added
Matrix.Perspective
overload for camera perspectives. [#577], thanks Austin! - Added
Pose.LookAt
.
Backend
- Added
Backend.OpenXR.SystemId
,Backend.OpenXR.OnPreCreateSession
, <inline_block>2</inline_block>(#513, andBackend.OpenXR.AddEndFrameChain
. - Added
Backend.OpenXR.UseMinimumExts
to only load critical extensions by default, andBackend.OpenXR.ExcludeExt
to exclude specific extensions. [#444] - Added
Backend.OpenXR.SetHandJointScale
for scaling joint sizes that come from the hand tracking extension, for [#337] - Added
Backend.OpenGL_WGL
,OpenGL_GLX
, andOpenGLES_EGL
, along with related enum values toBackend.Graphics
. [#382]
Input
- Added
Input.HandSource
for figuring out what type of hand data is currently present. - Added
Input.Mouse.Ray
. - Added customizable poses for the hand simulation:
Input.HandSimPoseAdd
,Input.HandSimPoseRemove
, andInput.HandSimPoseClear
. [#149] - Added
Input.KeyInjectPress
/Release
andInput.TextInjectChar
to the public API. [#630] - Added OpenXR controller profile for Pico. [#603], [#632], thanks Ray!
- Added support for
XR_EXT_hand_tracking_data_source
. When present, this allows SK to properly handle controllers that pretend to be hands. [#667] - Added support for
XR_EXT_hand_interaction
. Prevents an error popup on HoloLens 2. [#490] - Added support for
XR_EXT_palm_pose
, controller simulated hands may show up with a 'better' orientation.
Miscellaneous
- Added
SK.GetStepper
andSK.GetOrCreateStepper
. - Added overload for
Renderer.Screenshot
that takes aPose
instead of 2 Vec3s. [#628] - Added
Renderer.Scaling
,Multisample
,SKSettings.renderScaling
andrenderMultisample
. May not work on some runtimes, use carefully! [#483] - Added PNG support and JPEG quality to
Renderer.Screenshot
. [#629] - Added overloads for
Renderer.Screenshot
that provide raw color buffers in custom formats. [#618], [#622], thanks Austin! - Added
RenderLayer.FirstPerson
,ThirdPerson
,AllFirstPerson
, andAllThirdPerson
enum values. - Default
RenderLayer
is nowRenderLayer.AllFirstPerson
. - Added IntPtr overloads for
Sound.Read
/WriteSamples
. - Added
Time.Frame
. - Added
Time.Step
and deprecatedTime.Elapsed
, and addedtime_total
instead oftime_get
in the C API. - Added extra operator overloads for doing math on Color.
- Added
backend_opengl_egl_get_config
to C API. Thanks technobaboo! [#451]
Improvements and Changes
- Mesh and Model bounds now update during animations.
- Improved performance of Model.AddNode for large numbers of nodes. [#383]
- Added support for multimaterial skinned meshes, thanks cameronfr! [#495]
- Text material now uses DepthTest.LessEq, should help reduce z-fighting artifacts on far text.
- Sprites now use DepthTest.LessEq by default.
- Added auto-compile for shaders in the Assets folder.
- Increased log verbosity for D3D11 calls and Linux/Win file loading.
- Shaders now use filename instead of meta name for their id. [#529]
UI.Input
now hides passwords. [#552]UI.Input
now scrolls when typing or moving past the end of the visible area.- Added a sound when dragging a
UI.H/VSlider
. - Added images to
UI.Toggle
andUI.Radio
. UI.Input
now usesButtonBehavior
code, gaining backpress prevention. [#600].UI.Slider
's push confirm mode can now also be pinched.- Improved layout for larger, custom sized image buttons. [#571]
- Improved layout of multiline
UI.Labels
. - Improvements to
UI.Panel
's behavior. - Added extra functionality to
UI.Input
, now supports carat navigation and keyboard-based text selection. No finger based selection or multi-line yet. [#434] - Android will no longer fall back to flatscreen if MixedReality is specified.
- Closing the SK Window when OpenXR+Win32 is running will now also close the SK app.
- StereoKit can now run and shut down multiple times in the same process. [#386]
- Added tex_scale property to the builtin Unlit shader.
- Improved SK's hash table implementation for ~10x speed improvement.
- D3D platforms now generate mip-maps for non-power-of-two textures.
- Single Sprites now pick their id based on the Texture's id.
- .obj loader now generates normals if none are found in the file.
- Threadsafe add/remove for ISteppers. [#542], [#538]
- OpenXR initialization now only happens once.
SK.Initialize
now picks an assembly based name if none is provided.- In stereokit.h, empty
()
parameter lists were switch to the more appropriate(void)
. - Added an improvement to the pinch point that prevents most "travel" when placing handles. [#676]
- Improved logging for OpenGL shader compile issues.
- Transparent displays no longer force a specific clear color, and the default clear color went from (0,0,0,1) to (0,0,0,0).
- When using
SK.Step
, calling StereoKit functions in the loop instead of the callback is now valid.
SDK and Build Systems
- .NET Core projects now obey
ApplicationIcon
. - Added auto-copy of Assets folder
SKCopyAssets
true/false,SKAssetFolder
path, andSKAssetDestination
path - Added ability to switch between the standard and Oculus version of the OpenXR Loader,
SKOpenXRLoader
. - Added
SKOpenXRLoaderFolder
andSKShaderStandardInclude
to the SK MSBuild properties. - Lots of build improvements for StereoKit's core code, /develop should be much nicer to build from scratch! [#392]
- Built-in shader files are now zipped, saves ~100kb.
- skshaderc no longer requires GLEW on Linux, [#291]
- Shader binary builds are now repeatable.
- Removed Linux dependencies on libjsoncpp and libglew. [#507] and [#485]
- Cmake now works with Android, thanks Malek! [#516]
- Updated OpenXR Loader to v1.0.30
- Updated cgltf to v1.13
- Updated miniaudio to v0.11.9.
- Replaced TinyCThread with engine specific code.
- StereoKit now targets Android v32 with a minimum of v29.
- No longer define a JNI_OnLoad when built as a static Android library. [#666]
- Added Android x64 and Win32 ARM64 binaries to the NuGet package.
- Docs are now in their own repository.
- OpenXR custom loader system now supports multiple binaries.
- OpenXR custom loader system will now also search in the openxr_loader folder in your project.
- On Android, StereoKitC and openxr_loader libraries are now automatically loaded by StereoKit.
- Simulator window on Win32 will now restore its location from the last session.
Fixes
- Fixed an issue with paths in skshaderc. [#390]
- Fixed a bug in PassthroughFBExt.cs where it was still enabled even when the extension was absent. [#392]
- Fixed a crash with GLTF files that don't have index buffers. [#398]
- Fixed rotation correction of linear/step mode animations on root nodes. Cubic still may have issues.
- Fixed a crash when switching to animations with more curves.
- Fixed 'blinking' animations with Models that had single frame animation curves. [#399]
- Fixed an issue with Windows style file paths preventing Android from locating a file. [#399]
- Fixed crash when destroying assets that are currently in the draw queue (C side issue). [#403]
- Fixed strange behavior of sound stream sample info. [#427]
- Fixed
SKG_LINUX_EGL
option failing to compile, thanks technobaboo! [#426] - Fixed
Model.Find
/PlayAnim
returning a valid result on failure. [#422] - Fixed mouse look on Wayland [#428], thanks slitcch!
- Fixed a number of multithreaded asset load bugs.
- Fixed
Solid
's deconstructor not releasing the asset properly. - Fixed performance report giving wrong values for shutdown time.
- Fixed mouse-based hand overshooting with movement during long frames.
- Fixed an issue with the fallback file picker with paths that have no folders.
- Fix for
UI.ButtonImg
's glitchy alpha fade. [#440] - Fixed extra padding on
UI.ButtonImg
with explicit size. [#448] - Fixed WASDQE during
UI.Input
text entry no longer moves the camera in the Simulator. [#365] - Fixed extra asset thread CPU usage. [#467]
- Fixed a number of dangling asset references. [#471]
- Fixed crash when failing to compile shaders.
- Fix for EGL crashing in XR mode on Linux, thanks technobaboo! [#458]
- Fixed issue with
Platform.WriteFile
adding an extra \0 character on Windows, [#477] - Fixed an issue with a missing library on UWP ARM via cmake, [#501]
- Fixed an issue with parsing certain URIs in GLTF files.
- Fixed an issue with the simulated hand's wrist joint not matching real hand data.
UI.Panel
now uses the correct visual element. [#484]- Fixed an issue where
ISteppers
would sometimesStep
beforeInitialize
when added from a separate thread. [#528] - Fixed an issue with C# projects not gathering shaders for build. [#537]
- Fixed an issue with asset reference counting where multithreaded dereferencing could occasionally cause an asset to be inappropriately destroyed. [#535]
- Fixed crash with
material.Shader = null
, now falls back to Unlit. - Fixed a crash when assigning a Material's Shader a Shader with no global parameters.
- Fixed UI using padding instead of gutter for spacing at the end of a Window.
- Fixed
UI.Text
using the wrong depth. - Fixed
UI.Label
sizing wrong when not using padding. - Fixed a crash with multithreaded calls to
Tex.SetColors
. [#528] - Fixed a crash with multithreaded Shader creation. [#561]
- Fixed multithreaded calls to
SK.ExecuteOnMain
. [#568] - Fixed an issue with not finding assets when invoking from
dotnet run
. - Fixed an issue with Model calculating incorrect bounds for some assets. [#567]
- Fixed .obj loader crashing when faces pointed to invalid data indices.
- Fix for custom GLX loader issue with Monado, thanks Moshi! [#581]
- Fixed a Maui hack related to UWP library references. [#586]
- Fixed glyph corruption bug when resizing font atlas. [#575]
- Fixed bug with UIWin.Empty not being grabbable.
- Fixed UIMove.None handles/windows showing far ray and focus highlighting.
- Fixed shader build issue on Linux. [#589]
- Fixed shader build issue with nested folders. [#588]
- Fixed issue with auto-layout windows growing under certain settings. [#593]
- Fixed issue with capabilities not being detected on the Holographic Remoting runtime.
- Fixed facing UI Windows "flailing" when too close to the viewer.
- Fixed UI.Popup offset when Renderer.CameraRoot was not identity.
- Fixed a padding issue for explicit size labels.
- Fixed an issue where untracked hands could interact with UI handles. Related to [#599]
- Fixed a performance issue when submitting many small chunks of text all at once.
- UI focus no longer changes over the course of the frame. [#599]
- Fix occasional issue when drawing text in zero width sized boxes. [#446]
- Fix return value for World.FromPerceptionAnchor when getting the pose was invalid. [#616], thanks Austin!
- Fixed an issue with mouse scroll on UWP. [#655], thanks Austin!
- Fix for crash when submitting a null image to a button and a non-none layout option.
- Fix reference space not getting properly updated during space changes when using stage fallback for Floor origin mode. [#715].
- Fixed an issue with transparent textures not downsampling properly when creating mip-maps.
- Various fixes for Snapdragon Spaces OpenXR runtime.
Internal Changes
- Changed ids for some internal assets
render/skybox_mesh
->sk/render/skybox_mesh
render/skybox_material
->sk/render/skybox_material
platform/swapchain
->sk/platform/swapchain
platform/swapchain_zbuffer
->sk/platform/swapchain_zbuffer
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.