StereoKit is an easy-to-use open source mixed reality library for building HoloLens and VR applications with C# and OpenXR! Inspired by libraries like XNA and Processing, StereoKit is meant to be fun to use and easy to develop with, yet still quite capable of creating professional and business ready software.
The getting started guide can be found here!
Interested in news and updates about StereoKit? Maybe just looking for some extra help?
- Submit bugs on the Issues tab, and ask questions in the Discussions tab!
- Follow koujaku on Twitter for development news.
- Drop into the Discord channel for discussion, help and updates.
- Check out this blog for occasional substantial updates!
- Platforms: HoloLens 2, Oculus Quest, Windows Mixed Reality, Oculus Desktop, SteamVR, Monado Linux, and eventually everywhere OpenXR is!
- Flat screen MR simulator with input emulation for easy development
- Builds your application to device in seconds, not minutes
- Mixed Reality inputs like hands and eyes are trivial to access
- Easy and powerful UI and interactions
- Model formats: .gltf, .glb, .obj, .stl, ASCII .ply, procedural
- Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural
- Runtime asset loading
- Physics
- Performance-by-default instanced render pipeline
- Flexible shader/material system with built-in PBR
- Skeletal/skinned animation
- Documentation generated directly from the source code, including screenshots
Follow this guide for a detailed introduction! This repository is the raw source for those who wish to build StereoKit themselves, the Visul Studio templates and the NuGet packages referenced in the guide are how most people should build their applications!
StereoKit focuses on getting you productive with the least amount of code possible. You can actually do most tasks with a single line of code, including UI! Here's hello world with StereoKit, this is all you need to get up and running!
using StereoKit;
class Program
{
static void Main(string[] args)
{
SK.Initialize(new SKSettings{ appName = "Project" });
Model helmet = Model.FromFile("Assets/DamagedHelmet.gltf");
while (SK.Step(() => {
helmet.Draw(Matrix.TS(Vec3.Zero, 0.1f));
}));
SK.Shutdown();
}
}
For those that wish to build the test project, or perhaps the whole library, there's a guide to building StereoKit's repository! For those that wish to contribute features or fixes to StereoKit, awesome! There will soon be a contributor guide to help you navigate style and architecture requirements. In the meantime, check with the maintainer on either GitHub Issues or the Discord channel to help make sure contributions meet the project's standards.
Just like all software, StereoKit is built on the shoulders of incredible people! Here's a list of the libraries StereoKit uses to get things done.
- OpenXR
- ReactPhysics3D - physics
- cgltf - gltf format support
- Sean Barrett's stb libraries - image and font format support
- miniaudio - audio playback
- sokol_time - cross platform high performance time
- TinyCThread - for portable threading
And some of my own libraries that I maintain separately from this repository.
- sk_gpu.h - cross platform graphics API
- ferr_hash.h - string and data hashing
- array.h - dynamic arrays