Skip to content

M-CreativeLab/jsar-runtime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JSAR Poster

JSAR: a Browser Engine Library designed for The Spatial Web.

User Manual · DeepWiki

GitHub Release GitHub commit activity GitHub License

Table of Contents

  1. Introduction
  2. Web Compatibility Overview
  3. Contributing
  4. Loaders

Introduction

JSAR (/dĘ’:-sar/) is a Web browser engine designed for the spatial Web. It enables you to create and present immersive Web contents using the modern Web technologies (HTML5, CSS3, TypeScript) and seamlessly integrate them into mainstream 3D engines like Unity, UnrealEngine, and other 3D engines.

To understand the architectural decisions and core concepts behind JSAR, read our comprehensive guide: Understanding the Spatial Web Browser Engine.

Spatial Web

The Spatial Web represents the next evolution of the Web, where every HTML element exists in three-dimensional space with real 3D coordinates, rather than being confined to flat 2D screens. This spatial transformation enables developers to freely leverage Web technologies to create truly immersive experiences, seamlessly blending virtual reality (VR), augmented reality (AR), and mixed reality (MR) into both our physical world and any digital virtual environments.

Key characteristics of the Spatial Web include:

  • 3D-First Design: Content and interfaces are designed to exist in 3D space
  • Natural Interaction: Users can interact with digital content using natural gestures and movements
  • Contextual Awareness: Digital experiences that understand and respond to their physical surroundings
  • Persistent: Digital content can remain anchored in physical space across sessions

Key Features

  • Designed for the spatial Web - Every HTML element (including 2D & 3D) is spatially rendered in the browser.
  • Web Standards Compliant - Supports modern Web standards, including HTML5, CSS3, DOM, WebGL, WebXR and others.
  • High Performance - Dynamically batches all spatialized HTML elements into ≤10 GPU draw calls per frame.
  • Cross-Platform - Delivers flawless performance across every platform (desktop, mobile, and XR) with pixel-perfect consistency.
  • Web Developer Friendly - Deep Chrome DevTools integration for seamless debugging and profiling.

Web Compatibility Overview

Supported URL Formats to Request

Like the classic Web browser, it supports not only the HTML document, but also lots of formats, such as SVG, 3D models, etc. The following formats is expected to support:

Format Status Recommended Use Case
HTML Partially Browsing classic Web pages
GLTF OK Displaying 3D models
JPEG/PNG OK Displaying images
SVG OK Displaying SVG images

Scripting & Modules

API Status Test Suite
JavaScript Ok -
TypeScript Ok -
ECMAScript Module Ok -
WebAssembly Ok -
Web Worker Ok -

3D Graphics

API Status Test Suite
WebGL1 Ok https://github.com/KhronosGroup/WebGL/tree/main/sdk/tests/conformance
WebGL2 Ok https://github.com/KhronosGroup/WebGL/tree/main/sdk/tests/conformance2
WebGPU Not started https://github.com/gpuweb/cts

Rendering Backends

The following are supported renderer backends:

Backend OS Status Test Suite
OpenGLES3 Android Ok -
OpenGL macOS Partially -
Metal macOS Not started -
D3D11 Windows Not started -

WebXR Device APIs

API Status Test Suite
Spaces and Reference Spaces Ok -
Stereo Rendering Ok -
Inputs and Input Sources Ok -

Supported Input Sources

Input Source Status Target Ray Mode Gamepad Profiles
gaze Ok gaze No -
hand(2) Ok tracked-pointer No -
main controller Ok tracked-pointer/screen Yes -
transient Not implemented transient-pointer No -

Note: Gamepad is not supported in the current version.

Features

Feature Status Test Suite
Hit Test Not implemented -
Anchors Not implemented -
Hand Tracking Ok -
Eye Tracking Not implemented -
Depth Sensing Not implemented -
Face Tracking Not implemented -
Body Tracking Not implemented -
Environment Probes Not implemented -
Light Estimation Not implemented -

Multimedia APIs

In Web multimedia, there are the following APIs that JSAR would support:

  • Playback: play audio and video, and use Web Audio API to create audio effects.
  • Capture: capture audio and video from the device.

Playback

API Status Test Suite
HTMLAudioElement Ok -
HTMLVideoElement Not started -
Web Audio API Not started -

Capture

API Status Test Suite
MediaDevices Not started -
MediaRecorder Not started -

Canvas

API Status Test Suite
RenderingContext2D Ok -
PDFRenderingContext Not started -
HTMLRenderingContext Not started -

Note: PDFRenderingContext and HTMLRenderingContext are introduced by JSAR, which is used to customize the PDF and HTML rendering.

Classic Rendering

API Status Test Suite
DOM API Partially -
HTML5 Partially -
CSS3 Partially -
Web Component Not started -

Contributing

To contribute to the project, you need to follow the steps below to build this project from source.

Prerequisites

And you need to add the following targets to your Rust toolchain by your need:

$ rustup target add aarch64-linux-android
$ rustup target add aarch64-apple-darwin
$ rustup target add x86_64-apple-darwin
$ rustup target add x86_64-pc-windows-msvc

Build from source

Firstly, you need to install the dependencies and build the JSAR JavaScript bundle which is used in the runtime.

$ npm install && make jsbundle

Then you can build the runtime library:

$ make darwin    # for macOS universal library
$ make android   # for Android-aarch64 library

If you want to do a clean build, you can run:

$ make darwin CLEAN=yes

Supported parameters:

  • CLEAN: Clean the build directory before building.
  • RELEASE: Build the release version of the library.
  • INSPECTOR: Enable the inspector.

Loaders

The loaders are more convenient way to integrate JSAR into your applications, the following loaders are planned to be developed:

Loader Status Description
jsar-loader-unity Ok Integrates JSAR into Unity applications
jsar-loader-unreal Not started Integrates JSAR into Unreal Engine applications

To develop a new loader, you could see the Embedder API Documentation for more details.

About

JSAR: browser engine library designed for the Spatial Web. You can use it to mix-render different modern Web 2D and 3D contents together.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published