Skip to content

acgessler/medea.js

Repository files navigation

medea.js

Highly optimized, robust, lightweight 3D engine for JavaScript.

Medea has a stable, declarative and consistent API with nonzero testing coverage. It enables productive WebGl development and strives to meet high requirements in terms of performance and robustness. It is also blazingly fast.

Design Goals

  • Fast: The framework internally optimizes rendering as to maximize Gl performance.
  • A content pipeline for distributing 3D content on the web. 3D data from authoring tools is converted offline to an optimized representation. assimp2json imports geometry from 40+ 3D formats.
  • Exact and transparent resource management to avoid exhausting browser memory.
  • Library tools for managing Level of Detail to easily scale a wide range of devices, including Mobile/Tablets.
  • Automatic Scene Management and Visibility Detection.
Crytek's Sponza Test Scene with dynamic lighting without shadows with medea debug tools enabled.

A fully-zoomable planet demo, drawn with medea in less than 500 lines of code.

Getting started

  • Clone this repo
  • Run testserver.py to start a local dev web server
  • Navigate your browser to http://localhost/samples to see live samples

Documentation

Medea's API structure is very similar to that of other, non-browser-based 3D engines. Documentation will soon be available; for now, have a look at the samples.

Deployment

The compile.py script is used to compile all medea modules needed by an application into a single file. It optionally embeds text resources such as shaders into the compiled package as well. The resulting files can then be minified using standard JS minifiers (Google Closure Compiler is recommended).

An average medea distribution is only about 120 KiB.

License

Medea is licensed under a 3-clause BSD-style license. This means, in short and non-lawyerish, you are free to use medea even in your commercial websites provided the copyright notice, conditions and disclaimer of the license are included.

See the LICENSE file for the full wording.

Contributions

Are very welcome! Fork it on Github, and do a pull request against the main repository.

Releases

No releases published

Packages

No packages published

Languages