[HN Gopher] Stereokit - open-source mixed reality library by Mic... ___________________________________________________________________ Stereokit - open-source mixed reality library by Microsoft Author : yolo123 Score : 85 points Date : 2022-07-20 16:33 UTC (6 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | lostmsu wrote: | I see font rendering is not adapted to 3D in the screenshot, so | it is not yet ready for serious UI work. I presume curves are not | rendered in an adapted way either, so everything will look | pixelated around the edges. | koujaku wrote: | StereoKit doesn't currently do SDF font rendering yet, no, but | there is some shader work done to help make existing text a bit | clearer than the naive case. It does support Unicode font | rendering though, font glyphs are added to the font atlas on- | demand to ensure that's a smooth and automatic experience! | | The current implementation of SDF conversion is just a tad too | slow to make on-demand glyph rendering comfortable right now, | so there's a bit of additional optimization work that needs | done before we can switch to that. We were just prioritizing | language support over text clarity to start with. | wutwutwutwut wrote: | Is it not possible to do serious UI work without fonts adapted | to 3D? | koujaku wrote: | I would say that the majority of people don't notice | StereoKit uses regular raster for font rendering! However, | that number is definitely not zero, and there's definitely | people that can spot it right away, as evidenced. Designers | in particular would probably spot it right away. | | I'd say it's primarily a question of polish and feel! Those | that can't spot it right away would still prefer SDF fonts in | a side-by-side, and the difference becomes much more clear if | you start getting your head really close to the text. I | consider it to be an essential feature for a 1.0 version, but | not a blocker for right now. | lostmsu wrote: | I actually worry more about looking at longer and smaller | text in 3D. It is noticeably harder to read, which prevents | many use cases. For instance, you would not read HN in VR | using an RSS reader built with StereoKit. | koujaku wrote: | Ah yeah I think there's a collection of issues related to | small text within XR! The biggest one is really pixel | density on XR headsets, which is always an issue for | small text, or far-away text. XR also can't benefit from | sub-pixel approaches to font rendering either. Since you | can always move further from text, there's also the IRL | issue that the text is just too far to make out! | | The current raster technique should actually be fine for | smaller text, there's some super-sampling going on in the | shader that should help a bit here too! I'm not entirely | certain what else could be improved on in this case | besides font selection, I'd be open to suggestions or | tips :) | lostmsu wrote: | I am not an expert in the area, just somebody who read up | on it after realizing desktop in VR does not work out for | me (and usually low res is not a problem, so it is about | font aliasing). | | Something like https://github.com/servo/pathfinder | (newer) and as you mentioned SDF (older) are the latest | approaches. | koujaku wrote: | Thanks for the link! The path based approach has been of | interest to me, but I wasn't aware of an implementation | other than Slug, which I have been avoiding. Guess I can | finally do some real research on that topic now! :D | | SDF is probably still the most realistic path for now, | but I guess that may depend a bit on what comes up :) | flohofwoe wrote: | Kudos for the Zig and V examples (or rather example skeletons), | how very un-Microsoft-like to venture into such bleeding edge | territory ;) | | (the actually great thing is that the engine exposes a plain C | API: | https://github.com/StereoKit/StereoKit/blob/master/StereoKit...) | | PS: double-kudos for making the API C99 designated-init-friendly, | at least as far I can see from skimming over the source (e.g. | "zero means default": | https://github.com/StereoKit/StereoKit/blob/1bf86b281e883041...) | koujaku wrote: | Thanks! Your work has actually been quite an inspiration for me | personally, I've definitely picked up a few of your tricks here | and there :) | | Language bindings have always been a part of the long-term | plan, C# is just the golden path we've optimized for! A good | number of people do also use the C API, and there's some | community driven effort to create rust bindings as well. | kensai wrote: | I wonder if it can be embedded in the future in Unity. | koujaku wrote: | StereoKit is an alternative to Unity that skips all the bloat, | doesn't really work in concert with it. You could take some | inspiration from StereoKit, and maybe port some code snippets, | but you're better off using something like the MRTK if you're | working in Unity! | Vermeulen wrote: | Stereokit is fantastic. Ive been looking for a .net game engine | to try - and love the runtime asset importing. | | Are examples of its use for a traditional desktop use? Like | screen space UI. And maybe mobile touch input? Or are both of | those out of scope and XR is the focus. I am wanting to try a | side project in it - but hoping to make it both VR+Desktop. | koujaku wrote: | StereoKit very much prioritizes XR, I don't think I'd recommend | doing traditional flat or hybrid XR/flat experiences with it! | You might be able to do some flat 3d content, but the built-in | UI won't be very helpful in this environment. | verdverm wrote: | How does this relate to or overlap with Microsoft MRTK? | https://github.com/microsoft/MixedRealityToolkit-Unity | | (@koujaku) | koujaku wrote: | StereoKit and MRTK are currently part of the same team, so | these people are my co-workers! :) We swap techniques, code, | share design docs, etc. StereoKit joined the MR Middleware team | towards the start of this year, and over time you'll likely see | StereoKit move much closer to the Microsoft MRDL (Mixed Reality | Design Language) and pick up similar features. | jonhohle wrote: | Somewhat meta, but why would Microsoft I use the Kit suffix which | has been widely used by Apple adopted from NeXT? | koujaku wrote: | That'd be my fault, me and my co-workers were working with a | lot of tools that had the "Kit" suffix when we started on it :O | Apple's definitely not the only one who does it! | wutwutwutwut wrote: | Because the term is not allocated specifically to Apple. | tokinonagare wrote: | For the same reason they registered the domain | typescriptlang.org instead of typescript.org: riding on the | hype train created by others. | | Besides, the project looks really interesting, I'll have a look | into it. | evan_ wrote: | I think they probably used typescriptlang.org because | typescript.org was registered in 2006 for a CMS called | Typescript. | wutwutwutwut wrote: | What is the hype train you associate with typescriptlang.org? | "Lang"? | trzy wrote: | The time has never been better for a new "game engine" or 3D app | framework. Unity is trying to be everything for everyone and | hasn't done a great job of taking care of its core audience: | indie game developers. | | Unity is the de facto choice for XR developers but it's a poor | application framework. Something like StereoKit that caters to | non-game devs and can provide rendering, a flexible interaction | model, UI, and a good multi-user app model could really steal | Unity's thunder for multi-platform development. | koujaku wrote: | StereoKit started around 3 years ago, when the first pieces of | OpenXR started coming out! OpenXR's native experience really | showed just how good XR development _could_ be, and so we built | StereoKit around that :) | | And then yeah, if you're building apps, and not making a game | engine, there's a lot of things you decide differently about | the architecture! Like StereoKit's asset pipeline works at | runtime, with user-space formats like GLTF. You can load up | StereoKit's built-in file picker, and bring in an image or 3D | model with 3 or 4 lines of code! Or grab it from a REST API, | whatever. | matrixcubed wrote: | I'd recommend you take a look at Godot. With in-built VR and C# | support, a new major version peeking over the horizon, and | many, many Unity devs coming over due to recent fallout in | those circles, the time truly has never been better. | creativenolo wrote: | StereoKit seems like straight up cut to the fun. In my little | free time all the other VR & MR platforms have so much cruft. | Unity, endless configuration. Unreal, clone an fork of it and | build it. Please I want to play & occasionally teach. | | Any plans for AR support? | koujaku wrote: | StereoKit was initially created with HoloLens 2 in mind, so it | does plenty of AR! Also works on a North Star on Linux, as well | as Varjo and Quest's passthrough AR. The only catch there is it | doesn't do phone based AR like AR Core/Kit. Maybe someday, but | for now StereoKit is focused on OpenXR compatible devices. | creativenolo wrote: | Thanks for the reply (and great work on Stereokit) | | I was bucketing HL, Quest pass through, etc as MR and AR as | being phone/screen based. | | For example, I have been impressed by MRTK's AR support as a | potential XR(?) framework (but Unity and the setup is the | chore for experimentation) | | Hypothetical on the "someday", are OpenXR and WebXR related? | As in, could WebXR enable StereoKit to be AR "someday" before | ARCore/Kit? | koujaku wrote: | Haha, thanks! The terminology gradient gets pretty wild | sometimes :) | | On the "Someday" side of things, we have been actively | working on WASM/WebXR support for StereoKit! It's a bigger | feature that may still take some time, but the Simulator | already runs in a browser from the C side, with the C# side | _mostly_ working. WebXR comes after that, and I 've done | some proof-of-concept work there to make sure it's | feasible, which it totally is! | creativenolo wrote: | Amazing. Just noticed I missed WASM in the github README | (as I sit down to clone it). | | This all sounds super exciting. ___________________________________________________________________ (page generated 2022-07-20 23:00 UTC)