diff --git a/404.html b/404.html index 3a8399f4..c3bcfd25 100644 --- a/404.html +++ b/404.html @@ -5,13 +5,13 @@ Page Not Found | Stardust XR - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/js/2a2a0c40.d8aa302d.js b/assets/js/2a2a0c40.141588d2.js similarity index 95% rename from assets/js/2a2a0c40.d8aa302d.js rename to assets/js/2a2a0c40.141588d2.js index 31c8a5d2..280a6f17 100644 --- a/assets/js/2a2a0c40.d8aa302d.js +++ b/assets/js/2a2a0c40.141588d2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[697],{5238:function(e,t,a){a.r(t),a.d(t,{contentTitle:function(){return d},default:function(){return c},frontMatter:function(){return s},metadata:function(){return o},toc:function(){return u}});var i=a(7462),l=a(3366),n=(a(7294),a(3905)),r=["components"],s={sidebar_position:3},d="Installation",o={unversionedId:"getting-started/install",id:"getting-started/install",isDocsHomePage:!1,title:"Installation",description:"As Stardust is a display server, it is split into multiple parts. Don't be afraid to ask questions in the Matrix or Discord servers!",source:"@site/docs/getting-started/install.md",sourceDirName:"getting-started",slug:"/getting-started/install",permalink:"/docs/getting-started/install",editUrl:"https://github.com/StardustXR/website/edit/main/docs/getting-started/install.md",version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Technical Overview",permalink:"/docs/getting-started/tech-overview"},next:{title:"Starting",permalink:"/docs/getting-started/starting"}},u=[{value:"stardust-xr (reference server)",id:"stardust-xr-reference-server",children:[{value:"Build system",id:"build-system",children:[]},{value:"Build dependencies",id:"build-dependencies",children:[]},{value:"Download",id:"download",children:[]},{value:"Build",id:"build",children:[]},{value:"Install",id:"install",children:[]}]},{value:"Flatland (Simple simula-like panel UI client for 2D app interaction)",id:"flatland-simple-simula-like-panel-ui-client-for-2d-app-interaction",children:[{value:"Build system",id:"build-system-1",children:[]},{value:"Build dependencies",id:"build-dependencies-1",children:[]},{value:"Install",id:"install-1",children:[]}]}],p={toc:u};function c(e){var t=e.components,a=(0,l.Z)(e,r);return(0,n.kt)("wrapper",(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"installation"},"Installation"),(0,n.kt)("p",null,"As Stardust is a display server, it is split into multiple parts. Don't be afraid to ask questions in the ",(0,n.kt)("a",{parentName:"p",href:"https://matrix.to/#/#stardustxr:matrix.org"},"Matrix")," or ",(0,n.kt)("a",{parentName:"p",href:"https://discord.gg/A9w7fKE"},"Discord")," servers!"),(0,n.kt)("h2",{id:"stardust-xr-reference-server"},(0,n.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/stardust-xr-server"},"stardust-xr")," (reference server)"),(0,n.kt)("h3",{id:"build-system"},"Build system"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Cargo")),(0,n.kt)("h3",{id:"build-dependencies"},"Build dependencies"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Flatbuffers >= 2.0.8"),(0,n.kt)("li",{parentName:"ol"},"EGL+GLES 3.2"),(0,n.kt)("li",{parentName:"ol"},"GLX+Xlib"),(0,n.kt)("li",{parentName:"ol"},"fontconfig"),(0,n.kt)("li",{parentName:"ol"},"dlopen"),(0,n.kt)("li",{parentName:"ol"},"libseat (such as ",(0,n.kt)("a",{parentName:"li",href:"https://sr.ht/~kennylevinsen/seatd/"},"seatd"),")"),(0,n.kt)("li",{parentName:"ol"},"wayland"),(0,n.kt)("li",{parentName:"ol"},"OpenXR Loader (required even if run in flatscreen mode, generally just named ",(0,n.kt)("inlineCode",{parentName:"li"},"openxr"),")")),(0,n.kt)("h3",{id:"download"},"Download"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/stardust-xr-server.git\ncd stardust-xr-server\n")),(0,n.kt)("h3",{id:"build"},"Build"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"cargo build\n")),(0,n.kt)("h3",{id:"install"},"Install"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"cargo install\n")),(0,n.kt)("h2",{id:"flatland-simple-simula-like-panel-ui-client-for-2d-app-interaction"},(0,n.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/flatland"},"Flatland")," (Simple simula-like panel UI client for 2D app interaction)"),(0,n.kt)("h3",{id:"build-system-1"},"Build system"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Cargo")),(0,n.kt)("h3",{id:"build-dependencies-1"},"Build dependencies"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Flatbuffers >= 1.12.0")),(0,n.kt)("h3",{id:"install-1"},"Install"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"cargo install flatland\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[697],{5238:function(e,t,a){a.r(t),a.d(t,{contentTitle:function(){return d},default:function(){return c},frontMatter:function(){return s},metadata:function(){return o},toc:function(){return u}});var i=a(7462),l=a(3366),n=(a(7294),a(3905)),r=["components"],s={sidebar_position:3},d="Installation",o={unversionedId:"getting-started/install",id:"getting-started/install",isDocsHomePage:!1,title:"Installation",description:"As Stardust is a display server, it is split into multiple parts. Don't be afraid to ask questions in the Matrix or Discord servers!",source:"@site/docs/getting-started/install.md",sourceDirName:"getting-started",slug:"/getting-started/install",permalink:"/docs/getting-started/install",editUrl:"https://github.com/StardustXR/website/edit/main/docs/getting-started/install.md",version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Technical Overview",permalink:"/docs/getting-started/tech-overview"},next:{title:"Starting",permalink:"/docs/getting-started/starting"}},u=[{value:"stardust-xr (reference server)",id:"stardust-xr-reference-server",children:[{value:"Build system",id:"build-system",children:[]},{value:"Build dependencies",id:"build-dependencies",children:[]},{value:"Download",id:"download",children:[]},{value:"Build",id:"build",children:[]},{value:"Install",id:"install",children:[]}]},{value:"Flatland (Simple simula-like panel UI client for 2D app interaction)",id:"flatland-simple-simula-like-panel-ui-client-for-2d-app-interaction",children:[{value:"Build system",id:"build-system-1",children:[]},{value:"Build dependencies",id:"build-dependencies-1",children:[]},{value:"Install",id:"install-1",children:[]}]}],p={toc:u};function c(e){var t=e.components,a=(0,l.Z)(e,r);return(0,n.kt)("wrapper",(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"installation"},"Installation"),(0,n.kt)("p",null,"As Stardust is a display server, it is split into multiple parts. Don't be afraid to ask questions in the ",(0,n.kt)("a",{parentName:"p",href:"https://matrix.to/#/#stardustxr:matrix.org"},"Matrix")," or ",(0,n.kt)("a",{parentName:"p",href:"https://discord.gg/A9w7fKE"},"Discord")," servers!"),(0,n.kt)("h2",{id:"stardust-xr-reference-server"},(0,n.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/stardust-xr-server"},"stardust-xr")," (reference server)"),(0,n.kt)("h3",{id:"build-system"},"Build system"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Cargo")),(0,n.kt)("h3",{id:"build-dependencies"},"Build dependencies"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Flatbuffers >= 2.0.8"),(0,n.kt)("li",{parentName:"ol"},"EGL+GLES 3.2"),(0,n.kt)("li",{parentName:"ol"},"GLX+Xlib"),(0,n.kt)("li",{parentName:"ol"},"fontconfig"),(0,n.kt)("li",{parentName:"ol"},"dlopen"),(0,n.kt)("li",{parentName:"ol"},"libseat (such as ",(0,n.kt)("a",{parentName:"li",href:"https://sr.ht/~kennylevinsen/seatd/"},"seatd"),")"),(0,n.kt)("li",{parentName:"ol"},"wayland"),(0,n.kt)("li",{parentName:"ol"},"OpenXR Loader (required even if run in flatscreen mode, generally just named ",(0,n.kt)("inlineCode",{parentName:"li"},"openxr"),")")),(0,n.kt)("h3",{id:"download"},"Download"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/stardust-xr-server.git\ncd stardust-xr-server\n")),(0,n.kt)("h3",{id:"build"},"Build"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"cargo build\n")),(0,n.kt)("h3",{id:"install"},"Install"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"cargo install\n")),(0,n.kt)("h2",{id:"flatland-simple-simula-like-panel-ui-client-for-2d-app-interaction"},(0,n.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/flatland"},"Flatland")," (Simple simula-like panel UI client for 2D app interaction)"),(0,n.kt)("h3",{id:"build-system-1"},"Build system"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Cargo")),(0,n.kt)("h3",{id:"build-dependencies-1"},"Build dependencies"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Flatbuffers >= 2.0.8")),(0,n.kt)("h3",{id:"install-1"},"Install"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"cargo install flatland\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.39c8b2f0.js b/assets/js/runtime~main.9e9f151c.js similarity index 98% rename from assets/js/runtime~main.39c8b2f0.js rename to assets/js/runtime~main.9e9f151c.js index 44ed42a0..50fed600 100644 --- a/assets/js/runtime~main.39c8b2f0.js +++ b/assets/js/runtime~main.9e9f151c.js @@ -1 +1 @@ -!function(){"use strict";var e,t,n,r,o,u={},f={};function i(e){var t=f[e];if(void 0!==t)return t.exports;var n=f[e]={id:e,loaded:!1,exports:{}};return u[e].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=u,i.c=f,e=[],i.O=function(t,n,r,o){if(!n){var u=1/0;for(s=0;s=o)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(f=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},i.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);i.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var f=2&r&&e;"object"==typeof f&&!~t.indexOf(f);f=n(f))Object.getOwnPropertyNames(f).forEach((function(t){u[t]=function(){return e[t]}}));return u.default=function(){return e},i.d(o,u),o},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=function(e){return Promise.all(Object.keys(i.f).reduce((function(t,n){return i.f[n](e,t),t}),[]))},i.u=function(e){return"assets/js/"+({53:"935f2afb",85:"1f391b9e",152:"b6ec42fc",195:"c4f5d8e4",300:"b4e94af8",514:"1be78505",533:"92e9139d",592:"common",697:"2a2a0c40",835:"7a96ca3d",888:"e6f3b050",918:"17896441"}[e]||e)+"."+{53:"a81bd7ed",85:"85330a5e",152:"59735b39",195:"78ce0b79",300:"c39e93b0",514:"5c39bbd5",533:"40e1576c",592:"a910c564",608:"7cf15b72",615:"e381939a",697:"d8aa302d",835:"75956791",888:"4c24e269",918:"14c4c675",933:"af1f825e"}[e]+".js"},i.miniCssF=function(e){return"assets/css/styles.8598596e.css"},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="stardust-website:",i.l=function(e,t,n,u){if(r[e])r[e].push(t);else{var f,c;if(void 0!==n)for(var a=document.getElementsByTagName("script"),s=0;s=o)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(f=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},i.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);i.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var f=2&r&&e;"object"==typeof f&&!~t.indexOf(f);f=n(f))Object.getOwnPropertyNames(f).forEach((function(t){u[t]=function(){return e[t]}}));return u.default=function(){return e},i.d(o,u),o},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=function(e){return Promise.all(Object.keys(i.f).reduce((function(t,n){return i.f[n](e,t),t}),[]))},i.u=function(e){return"assets/js/"+({53:"935f2afb",85:"1f391b9e",152:"b6ec42fc",195:"c4f5d8e4",300:"b4e94af8",514:"1be78505",533:"92e9139d",592:"common",697:"2a2a0c40",835:"7a96ca3d",888:"e6f3b050",918:"17896441"}[e]||e)+"."+{53:"a81bd7ed",85:"85330a5e",152:"59735b39",195:"78ce0b79",300:"c39e93b0",514:"5c39bbd5",533:"40e1576c",592:"a910c564",608:"7cf15b72",615:"e381939a",697:"141588d2",835:"75956791",888:"4c24e269",918:"14c4c675",933:"af1f825e"}[e]+".js"},i.miniCssF=function(e){return"assets/css/styles.8598596e.css"},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="stardust-website:",i.l=function(e,t,n,u){if(r[e])r[e].push(t);else{var f,c;if(void 0!==n)for(var a=document.getElementsByTagName("script"),s=0;s Installation | Stardust XR - +
-

Installation

As Stardust is a display server, it is split into multiple parts. Don't be afraid to ask questions in the Matrix or Discord servers!

stardust-xr (reference server)#

Build system#

  1. Cargo

Build dependencies#

  1. Flatbuffers >= 2.0.8
  2. EGL+GLES 3.2
  3. GLX+Xlib
  4. fontconfig
  5. dlopen
  6. libseat (such as seatd)
  7. wayland
  8. OpenXR Loader (required even if run in flatscreen mode, generally just named openxr)

Download#

git clone https://github.com/StardustXR/stardust-xr-server.gitcd stardust-xr-server

Build#

cargo build

Install#

cargo install

Flatland (Simple simula-like panel UI client for 2D app interaction)#

Build system#

  1. Cargo

Build dependencies#

  1. Flatbuffers >= 1.12.0

Install#

cargo install flatland
- +

Installation

As Stardust is a display server, it is split into multiple parts. Don't be afraid to ask questions in the Matrix or Discord servers!

stardust-xr (reference server)#

Build system#

  1. Cargo

Build dependencies#

  1. Flatbuffers >= 2.0.8
  2. EGL+GLES 3.2
  3. GLX+Xlib
  4. fontconfig
  5. dlopen
  6. libseat (such as seatd)
  7. wayland
  8. OpenXR Loader (required even if run in flatscreen mode, generally just named openxr)

Download#

git clone https://github.com/StardustXR/stardust-xr-server.gitcd stardust-xr-server

Build#

cargo build

Install#

cargo install

Flatland (Simple simula-like panel UI client for 2D app interaction)#

Build system#

  1. Cargo

Build dependencies#

  1. Flatbuffers >= 2.0.8

Install#

cargo install flatland
+ \ No newline at end of file diff --git a/docs/getting-started/making-clients.html b/docs/getting-started/making-clients.html index feb76a30..6720835d 100644 --- a/docs/getting-started/making-clients.html +++ b/docs/getting-started/making-clients.html @@ -5,13 +5,13 @@ Making Clients | Stardust XR - +

Making Clients

A Stardust client is at its core an executable that connects to a stardust server instance at $XDG_RUNTIME_DIR/stardust-[0-32], sends and receives messages according to the Stardust protocol.

Rust#

Stardust uses Rust due to its speed and reliability in build and runtime, so you will need to install cargo (preferably through rustup). If you're unsure how to use Rust then a great guide is at https://doc.rust-lang.org/book/.

stardust-xr#

stardust-xr is a connecting library for servers and clients that deals with the lowest level of connecting to ensure basic compatibility is ensured. As a client developer you most likely won't need it, but it's good to know about it.

Fusion#

stardust-xr-fusion is the high level library you'll probably be using to create your clients. It features structs for all Stardust objects and trait-based + async systems for handling events from the server.

To get started, create a new Rust project using

cargo new

and include the stardust-xr-fusion dependency in your cargo.toml. Documentation will be available at https://docs.rs/crate/stardust-xr-fusion/latest.

Molecules#

stardust-xr-molecules is an even higher level widget library built on Fusion similar to MRTK to get your clients up and running faster. Documentation will be available at https://docs.rs/crate/stardust-xr-molecules/latest.

- + \ No newline at end of file diff --git a/docs/getting-started/overview.html b/docs/getting-started/overview.html index 6365d472..b81505e1 100644 --- a/docs/getting-started/overview.html +++ b/docs/getting-started/overview.html @@ -5,13 +5,13 @@ Overview | Stardust XR - +

Overview

Description#

Stardust XR (informally known as Stardust) is an XR display server for Linux-based distros (possibly most unix-based too, but untested). Unlike display servers of the past that were run on bounded 2D screens, Stardust has to break convention in order to account for unbounded 3D space in any potential virtual or real environment.

Unlike many display servers, Stardust is not trying to reinvent how applications interface with the system. Stardust uses Wayland and will use OpenXR for 2D/XR app integration. Stardust however has a special protocol for creation of virtual objects such as 3D UIs around 2D apps (called Panel Shells) and handling of data as objects (called Items, can represent files or Wayland surfaces or such). Stardust is not a collaborative 3D space, instead focusing on your own personal device and interactions with it.

Put simply, Stardust is a system UI framework where multiple different clients (programs that connect to Stardust directly) can create objects for the user to interact with their apps and device. The user can choose to use the objects that work best for their current scenario, and default setups can easily be created so users start out with all the essentials.

- + \ No newline at end of file diff --git a/docs/getting-started/starting.html b/docs/getting-started/starting.html index a6b76ab7..d844ec95 100644 --- a/docs/getting-started/starting.html +++ b/docs/getting-started/starting.html @@ -5,7 +5,7 @@ Starting | Stardust XR - + @@ -16,7 +16,7 @@ A pitch black window representing Stardust in flatscreen mode

Help screen#

stardust-xr-server 0.10.0Nova King <technobaboo@proton.me>Stardust XR reference display server
 USAGE:    stardust-xr-server [OPTIONS]
 OPTIONS:    -f, --flatscreen            Force flatscreen mode and use the mouse pointer as a 3D pointer    -h, --help                  Print help information    -o, --overlay <PRIORITY>    Run Stardust XR as an overlay with given priority    -V, --version               Print version information
- + \ No newline at end of file diff --git a/docs/getting-started/tech-overview.html b/docs/getting-started/tech-overview.html index 75f4503b..ca29a97e 100644 --- a/docs/getting-started/tech-overview.html +++ b/docs/getting-started/tech-overview.html @@ -5,13 +5,13 @@ Technical Overview | Stardust XR - +

Technical Overview

Server#

The server is what renders all the meshes of each client, takes in input from input methods, and spits out input to input handlers according to the SUIS (Spatial Universal Interaction System). As well, the server is going to be part Wayland compositor and OpenXR runtime so all 2D and XR applications can be used together at once (if the hardware allows). It is the glue of Stardust, allowing any number of clients and apps to work in harmony while allowing the user full control in an intuitive way.

As new technologies come out, keeping the same server and trying to progressively upgrade it may lead to bloat and issues, so the protocol is designed to make creating new servers possible without too much hassle or to make servers modular. Old interfaces can be deprecated without breaking the overall system, and new interfaces can be added if needed due to the object-oriented design. The design is highly inspired by game engines, however the reference server is made in StereoKit due to it being more optimal.

Reference Server#

Stardust has a reference server, but unlike other display servers this reference server is just as functional as any other Stardust server would be, because all the functionality is implemented in the clients. The server is just the glue.

The reference server uses StereoKit as its backend for many reasons:

  • Much more lightweight than any other framework/other engine
    • It was originally designed to run AR apps on HoloLens, and now it works on Quest
    • It's able to render thousands of objects on a HoloLens without breaking a sweat
  • Does not include unnecessary features that slow down performance
    • Physics and UI are not needed for Stardust, but those do not actively run and can always have an option to not be compiled at all.
  • Uses C-style C++ meaning not bytecode or interpreted (however has a C# API that is not used by Stardust)
  • Uses immediate mode rendering meaning the logic is many times easier to implement
  • Exposes its rendering insides whenever needed
    • Very needed for Wayland when it needs to display EGL Wayland surface textures on meshes
    • Overriding the depthbuffer per-pixel in fragment shader is useful for XR depth compositing
  • Is constantly getting new updates faster than most engines
    • World semantics for OpenXR was implemented ~1 week after the official OpenXR extension release
  • Is optimized to load resources JIT
    • Many game engines are best at caching their assets, but this is not practical in a display server
  • Uses OpenXR as its backend out of the box

IPC#

The Stardust XR IPC uses Unix domain sockets for communication and a protocol based on flatbuffers/flexbuffers.

Protocol#

The Stardust XR protocol is object-oriented, depending on a scenegraph on the server end and scenegraph or functionally equivalent structure on the client end. This allows easier implementation of the protocol while still remaining fast, reliable, and extensible.

Clients#

The clients tell the server what models to draw, where they would like to accept input in, etc. Stardust clients are much more suited to widgets or user interfaces to 2D/XR apps.

- + \ No newline at end of file diff --git a/index.html b/index.html index 1ab0fba1..a62fe6aa 100644 --- a/index.html +++ b/index.html @@ -5,13 +5,13 @@ Stardust XR - +

Stardust XR

We Fight for the Users!

Flexible

Flexible

Stardust allows developers to make XR widgets or interfaces and run them among others. You don't have to make a whole system UI, just a few pieces.

Streamlined

Streamlined

Stardust is made using StereoKit, an XR application/rendering toolkit allowing for a fast and lightweight display server.

- + \ No newline at end of file diff --git a/roadmap.html b/roadmap.html index 336b9c25..f899f277 100644 --- a/roadmap.html +++ b/roadmap.html @@ -5,13 +5,13 @@ Roadmap | Stardust XR - +

Roadmap

1.0 (Minimum Viable Product)#

  • Core functionality
    • IPC+RPC
  • Client
    • Fusion
      • Initial connection
      • Node type creation/destruction
      • Interface interaction
      • Callbacks
      • Documentation
  • Server
    • Per-client scenegraph
    • Statically link StereoKit
    • Basic features
      • Logic step
      • Spatial transforms
        • Absolute movement
        • Relative movement
        • Spatial parenting
      • Models
        • Loading
        • Setting material parameters
      • Fields (SDFs for interaction)
        • Box field
        • Rounded box field
        • Sphere field
      • Input
        • Input methods
          • Hand input
            • Creation from OpenXR
            • Creation from StereoKit (flatscreen)
            • Interaction with clients
          • Pointer input
            • Creation from StereoKit (flatscreen, mouse cursor ray)
            • Interaction with clients
        • Input handler
          • Async input propagation through distance
      • Environment
        • Set skytex
        • Set skylight
      • Items
        • Base item class
        • Base item accepter class
        • Environment equirectangular item
        • Environment equirectangular accepter
      • 2D integration
        • Panels
          • Panel item
          • smithay (for Wayland)
            • Rendering
            • Input seats
        • Panel shells
          • Accept panel items
          • Put surface on model material's texture
          • Feed input through to panel
          • Release panel items
- + \ No newline at end of file