1 line
9.8 KiB
JavaScript
1 line
9.8 KiB
JavaScript
"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[702],{5680:(e,t,r)=>{r.d(t,{xA:()=>u,yg:()=>g});var n=r(6540);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),c=p(r),m=a,g=c["".concat(l,".").concat(m)]||c[m]||d[m]||i;return r?n.createElement(g,o(o({ref:t},u),{},{components:r})):n.createElement(g,o({ref:t},u))}));function g(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:a,o[1]=s;for(var p=2;p<i;p++)o[p]=r[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},3509:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=r(8168),a=(r(6540),r(5680));const i={sidebar_position:1},o="Brief Overview",s={unversionedId:"dive-deeper/brief-overview",id:"dive-deeper/brief-overview",title:"Brief Overview",description:"Stardust XR is an XR display server designed for Linux-based systems.",source:"@site/docs/03-dive-deeper/01-brief-overview.md",sourceDirName:"03-dive-deeper",slug:"/dive-deeper/brief-overview",permalink:"/docs/dive-deeper/brief-overview",draft:!1,editUrl:"https://github.com/StardustXR/website/edit/main/docs/03-dive-deeper/01-brief-overview.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"XR Navigation",permalink:"/docs/User-Guide/XR-Navigation"},next:{title:"Technical Overview",permalink:"/docs/dive-deeper/deep-overview"}},l={},p=[{value:"Priorities",id:"priorities",level:2},{value:"Architecture",id:"architecture",level:2},{value:"Projects & Components",id:"projects--components",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,a.yg)(c,(0,n.A)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"brief-overview"},"Brief Overview"),(0,a.yg)("p",null,"Stardust XR is an XR ",(0,a.yg)("a",{parentName:"p",href:"https://itsfoss.com/display-server"},"display server")," designed for Linux-based systems",".",(0,a.yg)("br",null),"\nUnlike traditional display servers that focus on 2D screens, Stardust XR introduces new conventions to utilize unbounded 3D space in virtual or real environments."),(0,a.yg)("h2",{id:"priorities"},"Priorities"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},(0,a.yg)("strong",{parentName:"p"},"3D Environment Focus"),": While supporting 2D clients through the Wayland protocol, Stardust XR primarily aims to create and manage 3D environments.")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},(0,a.yg)("strong",{parentName:"p"},"Standard Interfaces"),": Utilizes Wayland and OpenXR for 2D and XR app integration.")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},(0,a.yg)("strong",{parentName:"p"},"Stardust Protocol"),": Implements a special protocol for:"),(0,a.yg)("ul",{parentName:"li"},(0,a.yg)("li",{parentName:"ul"},"Creating virtual objects"),(0,a.yg)("li",{parentName:"ul"},"Developing 3D UIs around 2D apps (Panel Shells)"),(0,a.yg)("li",{parentName:"ul"},"Handling data as Items that can represent files, Wayland surfaces, etc."))),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},(0,a.yg)("strong",{parentName:"p"},"Personal Device Interaction"),": Focuses on individual user interactions rather than collaborative 3D spaces.")),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},(0,a.yg)("strong",{parentName:"p"},"Flexible Object Interaction"),": Users can choose objects that best suit their current scenario, with easy setup for default configurations."))),(0,a.yg)("h2",{id:"architecture"},"Architecture"),(0,a.yg)("mermaid",{value:"graph LR\n OpenXR\n\n OpenXR --\x3e|Frame Data| StereoKit\n OpenXR --\x3e|Input Data| StereoKit\n\n subgraph Server[Stardust Server]\n \t\tStereoKit[StereoKit]\n InternalSceneGraph[Internal Scenegraph]\n WC1[Wayland Client 1]\n DBusConnection[D-Bus Connection]\n\n ClientSceneGraph --\x3e|Drawable Objects| StereoKit\n StereoKit --\x3e|Controller, Hand & HMD Data| InternalSceneGraph\n InternalSceneGraph --\x3e|Panel Items| ClientSceneGraph\n InternalSceneGraph --\x3e|Controller, Hand & HMD Export| DBusConnection\n WC1 --\x3e|Panel Item| InternalSceneGraph\n WC1 --\x3e|Textures| StereoKit\n StereoKit --\x3e|EGL Context| WC1\n ClientSceneGraph --\x3e C1\n\n subgraph C1[Stardust Client 1]\n \tClientSceneGraph[Client Scenegraph]\n end\n end\n\n StardustSocket[Stardust Socket]\n SessionBus[D-Bus Session Bus]\n WaylandSocket[Wayland Socket]\n\n WC1 --\x3e WaylandSocket\n WaylandSocket --\x3e WC1\n DBusConnection --\x3e SessionBus\n C1 --\x3e StardustSocket\n\n subgraph StardustClient[Stardust Client 1]\n Fusion\n Molecules\n UserCode[User Code]\n\n Fusion --\x3e Molecules\n Fusion --\x3e UserCode\n Molecules --\x3e UserCode\n\n subgraph Fusion\n libstardustxr[stardust-xr library]\n end\n end\n\n StardustSocket --\x3e libstardustxr\n SessionBus --\x3e|HMD Spatial Reference| Fusion\n\n\n WaylandClient[Wayland Client]\n WaylandSocket --\x3e WaylandClient\n WaylandClient --\x3e WaylandSocket"}),(0,a.yg)("h2",{id:"projects--components"},"Projects & Components"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/Armillary"},(0,a.yg)("strong",{parentName:"a"},"armillary")),": A 3D model viewer for Stardust XR; rotate, move, and display models in your XR space "),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/atmosphere"},(0,a.yg)("strong",{parentName:"a"},"atmosphere")),": 3D environment with natural momentum-based movement"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/black-hole"},(0,a.yg)("strong",{parentName:"a"},"black hole")),": Universal minimization of Stardust objects"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/comet"},(0,a.yg)("strong",{parentName:"a"},"comet")),": Annotate in 3D wherever you want amongst your other apps!"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/core"},(0,a.yg)("strong",{parentName:"a"},"core lib")),": Rust crates and schemas for connecting stardust server and client"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/flatland"},(0,a.yg)("strong",{parentName:"a"},"flatland")),": Allows Starust XR to run 2D linux applications "),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/gravity"},(0,a.yg)("strong",{parentName:"a"},"gravity")),": Launch programs with a certain offset in 3D space"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/magnetar"},(0,a.yg)("strong",{parentName:"a"},"magnetar")),": Example workspaces client"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/non-spatial-input"},(0,a.yg)("strong",{parentName:"a"},"non-spatial-input")),": Provides utilities to port keyboard, mouse, and other input methods like libinput into Stardust XR"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/protostar"},(0,a.yg)("strong",{parentName:"a"},"protostar")),": App launcher library and examples including futuristic hexagon launcher"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/server"},(0,a.yg)("strong",{parentName:"a"},"server")),": Reference implementation of the StardustXR server (similar to Xorg)"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/telescope"},(0,a.yg)("strong",{parentName:"a"},"telescope")),": Stable stardust setup for quick and easy usage"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("a",{parentName:"li",href:"https://github.com/StardustXR/website"},(0,a.yg)("strong",{parentName:"a"},"website")),": The location where documentation is done and the website is generated from")))}d.isMDXComponent=!0}}]); |