All Projects → nidium → Nidium

nidium / Nidium

Licence: other
nidium is an ongoing effort for a mobile hw-accelerated rendering engine to create apps and games. Embedding Mozilla JavaScript VM, Google Skia, Facebook Yoga. https://twitter.com/nidiumproject for updates

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Nidium

ph-pdf-layout
Java library for creating fluid page layouts with Apache PDFBox. Supporting multi-page tables, different page layouts etc.
Stars: ✭ 33 (-96.88%)
Mutual labels:  rendering, layout-engine
Picasso
Picasso is a high quality 2D vector graphic rendering library. It support path , matrix , gradient , pattern , image and truetype font.
Stars: ✭ 205 (-80.61%)
Mutual labels:  rendering, canvas2d
Glchaos.p
3D GPUs Strange Attractors and Hypercomplex Fractals explorer - up to 256 Million particles in RealTime
Stars: ✭ 590 (-44.18%)
Mutual labels:  rendering, webassembly
Asm Dom
A minimal WebAssembly virtual DOM to build C++ SPA (Single page applications)
Stars: ✭ 2,604 (+146.36%)
Mutual labels:  rendering, webassembly
Pixi.js
The HTML5 Creation Engine: Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.
Stars: ✭ 34,982 (+3209.56%)
Mutual labels:  rendering, canvas2d
Rustwasm Addon
🦀 + 🕸 + 🦊 // A web-extension to reverse a string. Yep.
Stars: ✭ 41 (-96.12%)
Mutual labels:  webassembly
Gdscript Online
Try out GDScript without installing Godot
Stars: ✭ 46 (-95.65%)
Mutual labels:  webassembly
Allkit
🛠 Async List Layout Kit
Stars: ✭ 40 (-96.22%)
Mutual labels:  layout-engine
Simplepbr
A Processing library providing physically based rendering and materials
Stars: ✭ 39 (-96.31%)
Mutual labels:  rendering
Instantobjects
Pupular OOP-OPF Library for Delphi (from D2010 to 10.4 Sydney)
Stars: ✭ 50 (-95.27%)
Mutual labels:  mozilla
Hidamari
Modern operating system aimed at running WebAssembly code.
Stars: ✭ 49 (-95.36%)
Mutual labels:  webassembly
Cargo Web
A Cargo subcommand for the client-side Web
Stars: ✭ 1,026 (-2.93%)
Mutual labels:  webassembly
Winter
Haskell port of the WebAssembly OCaml reference interpreter
Stars: ✭ 42 (-96.03%)
Mutual labels:  webassembly
Waflash
A WebAssembly ActionScript 3.0 Flash player built with Emscripten
Stars: ✭ 46 (-95.65%)
Mutual labels:  webassembly
Userplex
Propagate users from Mozilla's Person API to third party systems.
Stars: ✭ 41 (-96.12%)
Mutual labels:  mozilla
Asm Dom Boilerplate
A simple boilerplate to start using asm-dom without configuration.
Stars: ✭ 49 (-95.36%)
Mutual labels:  webassembly
Json2excel
Generate excel file from json data
Stars: ✭ 40 (-96.22%)
Mutual labels:  webassembly
Shaderworkshop
Interactive GLSL fragment shaders editor made with Qt
Stars: ✭ 43 (-95.93%)
Mutual labels:  rendering
Www.moztw.org
Repository of moztw.org
Stars: ✭ 48 (-95.46%)
Mutual labels:  mozilla
Scrollingcardview
A card view widget for iOS that will grow with its content, enabling scrolling when the content is larger than the view.
Stars: ✭ 42 (-96.03%)
Mutual labels:  mozilla


nidium

Introduction

nidium is an ongoing effort for a general purpose rendering engine to create apps and games that run on both desktop and mobile. It also offers a way to create server-side applications through nidium-server which shares all the non graphics related code base.

nidium helps you create graphical software with Javascript. It's not a NodeJS, QT, Chromium, or WebKit derivative. It has been designed from scratch and has a small codebase written in C++.

It leverages the combination of Skia Graphics from Google, and Mozilla's JavaScript Engine (SpiderMonkey) together with many more awesome libraries.

It supports various common and well known APIs such as:

  • WebGL
  • Canvas 2D Context
  • WebSocket (client & server)
  • Module loading (require())

And some other non standard:

  • UDP/TCP Socket (client & server)
  • HTTP (client & server)
  • File access
  • Threading
  • Threaded Audio
  • Videos
  • Fragment shader on 2D canvas
  • Local Key/Value database

It can seamlessly run various JavaScript libraries like Three.JS, PixiJS, Phaser (and probably a lot more without much modification).

What problem(s) is nidium trying to solve

To put it simply, nidium aims to expose something close to web technology but in an easily hackable environment.

We're not trying to copy the Web. Think of it as a sandbox where you can quickly prototype new things, without any dependency to blink/webkit (e.g. like Electron does). This allows us to add various optimizations and non standard things. Moreover, nidium is small (nidium statically linked with all of its dependencies is about 20 MB).

Also, nidium aims to target a large spectrum of devices and our short term goal is to run it on low-power devices (mobile, rpi, ...)

By the way, it uses SpiderMonkey as its JavaScript engine, and we believe that Mozilla needs some love too!

Work in progress

nidium is still a work in progress and several key features are missing:

  • App distribution (create actual app out of nidium)
  • Microsoft Windows support
  • Good documentation

Layout engine

nidium ships with its own layout engine. That is, every element has its own memory buffer (retained mode), pretty similar to HTML elements.

The layout engine allows several "layout" operations to be made on each element (relative position, opacity, drag'n'drop, margin, scrolling, overflow, and so on).

It also implements a simple HTML DOM compatility layer and is mature enough to run a MVVM framework like Vue.js and probably React with little to no effort.

Network and event loop

nidium uses its own high-performance library (libapenetwork) which handles all the networking operations in a non-blocking, async way.

Download nidium

You can download nidium binaries for Linux and OSX from the download page.

Building nidium

To build nidium you need at least 5.7GB of disk space. A build from scratch may take 30 to 90 minutes, depending of the speed of your computer.

On a debian based system, a few commands will get you started.

$ apt-get install libpci-dev python2.7 git make patch clang pkg-config libgtk2.0-dev libgtk-3-dev mesa-common-dev libglu1-mesa-dev libosmesa6-dev yasm libasound2 libasound2-dev libbz2-1.0
$ git clone https://github.com/nidium/NidiumTools.git
$ git clone --recursive https://github.com/nidium/Nidium.git
$ export PYTHONPATH=$(pwd)/NidiumTools/src
$ cd Nidium
$ ./configure_frontend
$ ./bin/nidium

On a mac-os based system you need xcode installed.

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
$ git clone https://github.com/nidium/NidiumTools.git
$ git clone --recursive https://github.com/nidium/Nidium.git
$ export PYTHONPATH=$(pwd)/NidiumTools/src
$ cd Nidium
$ ./configure_frontend
$ ./bin/nidium

Documentation

We strive to have excellent documentation, both for our getting started guide and for the API Reference.

Videos - nidium in action

Bug reports and Collaboration

Feel free to report any bug or issue to us.

If you feel that something is not clear, that could be an issue worth reporting and solving.

License

Copyright 2017 Nidium Inc. All rights reserved. Use of this source code is governed by a MIT license that can be found in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].